YARI
Yet Another Raycast Implementation
A small C game engine for building vintage first-person games in the spirit of Wolfenstein 3D. Written for ESP32 hardware - the same game code also runs on macOS, Linux and, right here, compiled to WebAssembly.
running on real ESP32 hardware - ST7789, 240×136
Play in the browser
Two complete example games, compiled with Emscripten from the exact same C engine that ships to ESP32 hardware.
YARI FPS
A dim brick corridor, a sidearm, and things that shouldn't be moving. The flagship raycaster demo.
Launch demo →
YARI KART
Same raycaster, four wheels. An arcade track built with the same map tools and renderer.
Launch demo →Keyboard required - ↑ ↓ ← → or WASD to move, space to start.
Small, portable, hackable
YARI isn't a general-purpose engine. It stays small and understandable, while keeping desktop development fast enough to iterate without flashing a board after every change.
C raycasting renderer
Column-based wall rendering, sprite z-buffering, distance shading and floor/ceiling casting.
ESP32-first design
ST7789 SPI backend, RGB565 framebuffer, configurable pins and ready-to-build ESP-IDF examples.
Fast desktop iteration
The same game runs on macOS and Linux through raylib or SDL2 for quick debugging.
WebAssembly output
Full game examples compile to WASM through Emscripten and run straight in a browser.
Static, embedded assets
Textures and fonts are packed into C arrays, ready to ship inside embedded firmware.
Tiny game-facing API
A game implements yr_init_game() and yr_update_game() - YARI owns the rest.
ESP32 + ST7789 + analog joystick + 4 buttons
Built for a $5 microcontroller
The ESP32 backend targets an ST7789 SPI display in landscape orientation, driven from an RGB565 framebuffer. Digital buttons map to pull-up GPIOs and an analog joystick covers the two movement axes - all configured with a handful of macros.
- ST7789 SPI display, configurable pins and clock speed
- Pull-up GPIO buttons + dual-axis analog joystick
- Ships as a normal ESP-IDF component
the built-in raylib/raygui level editor
A level editor that speaks YARI
map_builder is a visual raylib/raygui editor for walls, entities, floors,
ceilings, collision layers and sprite animations. Save, and it writes a plain C header
straight into your game.