An OutRun-style pseudo-3D racing game for the ESP32-S3 microcontroller with an ILI9341 320×240 SPI display. The same source compiles for both ESP32 hardware and Windows (via a Raylib-based emulator).
Features
Pseudo-3D road rendering — segment-based back-to-front painter's algorithm, classic arcade style
3D player car — OBJ mesh (428 vertices, 312 triangles) with scanline affine texture mapping and shadow
Traffic system — 6 AI cars with independent speeds and lane positions
Procedural track — randomized curves, elevation changes, tunnels, and buildings generated at startup
Dynamic scenery — pine trees, bushes, rocks, lamp posts, and 3D buildings with window patterns
Day / sunset / night cycle — smooth color palette transitions every ~180 km of distance
Atmospheric fog — exponential density toward the horizon
Physics — acceleration, friction coast-down, centrifugal drift on curves, hill gravity effects
Collision detection — crash with 2-second recovery
Lap timing — current and best lap displayed on the HUD
HUD — circular speedometer (0–300 km/h) with needle
An OutRun-style pseudo-3D racing game for the ESP32-S3 microcontroller with an ILI9341 320×240 SPI display. The same source compiles for both ESP32 hardware and Windows (via a Raylib-based emulator).
Features Pseudo-3D road rendering — segment-based back-to-front painter's algorithm, classic arcade style 3D player car — OBJ mesh (428 vertices, 312 triangles) with scanline affine texture mapping and shadow Traffic system — 6 AI cars with independent speeds and lane positions Procedural track — randomized curves, elevation changes, tunnels, and buildings generated at startup Dynamic scenery — pine trees, bushes, rocks, lamp posts, and 3D buildings with window patterns Day / sunset / night cycle — smooth color palette transitions every ~180 km of distance Atmospheric fog — exponential density toward the horizon Physics — acceleration, friction coast-down, centrifugal drift on curves, hill gravity effects Collision detection — crash with 2-second recovery Lap timing — current and best lap displayed on the HUD HUD — circular speedometer (0–300 km/h) with needle
https://github.com/davidmonterocrespo24/esp32s3-arcade-3d