Skip to content

Engine sample projects

PixelRoot32 — Examples

Self-contained PlatformIO projects that show how to use the engine on PC (SDL2) and ESP32-class boards. Each folder has its own platformio.ini, src/ entry point, and README.md with build flags, supported environments, and documentation links.

Typical workflow: open a project folder in PlatformIO (or run CLI from that folder), pick an environment (native, esp32dev, etc.), then:

bash
cd <example-folder>
pio run -e <environment>

On Windows, native examples may need local SDL2 include/lib paths in platformio.ini (see comments in animated_tilemap).

The engine revision for each example is defined in lib_deps inside that example’s platformio.ini (registry tag vs Git branch).

Catalogue

ExampleWhat it demonstratesPlatformIO environments
hello_worldMinimal Scene, UILabel, button input, background color cyclenative, esp32dev , esp32s3
cameraCamera2D, parallax, tile platforms, KinematicActornative, esp32dev
dual_paletteDual palette mode (background vs sprite color tables)native, esp32dev
sprites2bpp / 4bpp sprites and animationnative, esp32dev
snakeGrid game, segment pool, AudioEngine + platform audio backendsnative, esp32dev
brick_breakerClassic Breakout: paddle, ball physics, bricks, particles, AudioEngine + MusicPlayernative, esp32dev
music_demoMusicPlayer multi-track (main + sub-tracks), tick / BPM timing, InstrumentPreset melodies + percussion presets; UI-based sound testingnative, esp32dev
space_invadersClassic Space Invaders: alien formation, shooting, bunkers, score system, AudioEnginenative, esp32dev
physicsRigidActor / KinematicActor / StaticActor, touch, optional touch UI (CYD)native, esp32dev, esp32cyd
metroidvania4bpp tilemaps, StaticTilemapLayerCache, platformer playernative, esp32dev
animated_tilemapTile animation, palettes, static tilemap framebuffer cache (reference depth)native, esp32dev, esp32cyd
tic_tac_toeUI, GPIO vs touch, minimax AI, vector-drawn board, MusicPlayer / melody datanative, esp32dev, esp32cyd
flappy_birdPhysics flappy clone, U8g2 OLED, ESP32-C3 (no audio in this sample)native, esp32c3

Suggested learning order

  1. hello_world — engine init, one scene, text and input.
  2. sprites or dual_palette — graphics and color models.
  3. camera or metroidvania / animated_tilemap — scrolling, tilemaps, caching (read animated_tilemap for the fullest tilemap write-up).
  4. physics — bodies, sensors, touch.
  5. snake / tic_tac_toe / brick_breaker / music_demo / space_invadersaudio (events, single-track music, or multi-track reference). flappy_bird — physics + OLED, no audio subsystem.

Engine documentation

Format reference for per-example READMEs

The animated_tilemap example is the template for depth: opening summary, Requirements (build flags), optional technical subsection, Documentation links, Features, and Build commands. Scene intent is also described in each src/*Scene.h file.

Released under the MIT License.