Phantom

Personal project, in development since July 2026.

A wireframe dogfight game for the Waveshare ESP32-S3 with a 480×480 AMOLED touch screen.

Engine

  • Procedural
    • Ships, arena, sky, canopy and audio generated at runtime.
    • No texture samples.
  • Rendering
    • Direct to the display over QSPI, no widget toolkit.
    • 60 fps in combat.
  • Opponents
    • Radio chatter.
    • AI flown by combination of trained network and hand-written tactics.
  • Codebase
    • C++ game, shared by the PC build and the firmware.
    • Python tools.
    • PowerShell and batch build scripts.

Hardware

The game's ship select screen, CHARIOT highlighted, on the board's screen in a small cube enclosure
Running on the board.
  • Board. Waveshare ESP32-S3-Touch-AMOLED-2.16.
  • Screen. 480×480 AMOLED, QSPI at 80 MHz.
  • Controls
    • Touch steering.
    • BOOT button fires.
    • +/− key rolls in flight and works the menus.
  • Audio. Mono codec and built-in speaker.

Ships

Canopy, weapons and handling per class.

Match start in CHARIOT: the canopy flashes in piece by piece, the instruments come on, then the radio opens
CHARIOT canopy intro, 60 fps.

Interface

Menus in a drawn console bezel, sized for the screen and thumb input.

Combat

Tools

Score Studio zoomed out on the final's track: the whole song from 0:00 to 1:36, eight sections along the song strip, six parts on a piano-roll grid, and a report of 97.7 seconds, 948 notes and a peak of 7 of 8 voices

Score Studio

  • Editor
    • Draggable notes on a grid.
    • Parts follow the chord roots or stand alone as melody.
    • Sections can be duplicated, repeated or skipped.
  • Playback. Through the game's own synthesizer.
  • Report
    • Peak polyphony against the synth's 8 voices.
    • Speaker check per note, against the 1 cm speaker's 300 Hz floor.
    • Thin: square waves carried by the 3rd harmonic.
    • Silent: sines, and low-pass filters that cut the 3rd harmonic.
  • Soundtrack. Five individual tracks covering menus and each tournament round.
The pilot network console: the network's state, a gate showing which ships it may fly, a list of flight recordings, and Train, Evaluate, Deploy and Build controls

Pilot network

  • Training
    • Small neural network trained on recorded flying.
    • Console covers record, train, inspect, evaluate, deploy and build.
  • Deployment
    • Weights compile into the firmware as a header file.
    • Gate hands unfamiliar ships back to hand-written tactics.
PhantomRecorder recording gameplay from the board: 1035 frames, 14.2 s of play at 73 fps
Recording
PhantomRecorder rendering a session on the board: frame 619 of 1161 in the preview, at 31 frames a second
Rendering

Recorder

  • Record. Saves inputs and frame times over USB serial.
  • Render. Replays the session on the board, which sends back true pixels with no tearing.
  • Gamma. Adjustable, from exact framebuffer values to close to device brightness.
  • Sessions
    • Directory per recording, named by start time.
    • Input session (.phr).
    • Folder per render: video (.mp4), board audio (.wav) and both combined (-av.mp4).