NullG is an anti-gravity racer with a custom C++20 engine and Vulkan renderer, developed with AI assistance. The engine handles the race simulation, asset loading, menus, replays and inspection tools, with split-screen and network multiplayer running through the same race session.
It currently runs user-supplied WipEout and WipEout XL / 2097 content alongside work on NullG's own ships, music, visual identity and handling. Original tracks and lore are planned as part of a complete original racer.
Engine
The engine is built from scratch, using SDL3 for platform support and input, Jolt for collision, and Slang for shaders. The simulation and renderer are separate, so the same race code can run in the game, in a replay or in a headless training worker.
The simulation runs at a fixed 60 Hz, handling controls, weapons, pickups, rescue and race progression. Graphics, audio and networking consume the resulting state. Graphics settings don't change the physics timestep, and learned pilots train against the same simulation they use in a race.
Smaller hardware
Lower-end hardware support comes from reducing both GPU work and memory use. Presets control scene resolution, lighting and shadow budgets, particle counts and geometry allocations. Disabled effects skip their rendering passes and release optional memory. Textures retain their authored resolution.
The HUD is drawn separately from the race image. With 1080p output, Low renders the scene at 960 × 540 but keeps the text and gauges at 1080p. That saves a lot of pixel work without making the interface harder to read.
On the second-generation Apple TV 4K's A12 chip, a one-minute Talon's Reach run averaged approximately 60 fps with Low and FXAA, native XL physics, AI and source combat. That result applies to this test; other tracks and split-screen layouts still need separate measurements.
Playing a race
Single Race includes opponents and weapons; Time Trial saves lap records between runs. Each installed game has a hub for its activities, preferences and content. Race setup presents the circuit, ship and speed class together, with separate pickers for each choice. Race Again uses the last setup actually raced, independent of later menu browsing.
Two to four people can play on one screen. Two-player races can split horizontally or vertically, and three-player races put a map and standings in the spare quarter. Everyone chooses their ship and confirms Ready in the lobby. Once everyone's ready, the race starts. LAN and online private rooms can also include several local players from each machine.
The five XL teams have rebuilt ship models with paint, metal and glass materials. These reconstruct the original designs and retain their handling and collision geometry. Modern Ship Models is enabled by default; Game Preferences can restore the original visuals.
Reference and Enhanced modes give different treatments of the source material, with lighting, shadows, particles, HDR and post-processing available in the renderer. Each game keeps its own HUD presentation, with stereo sound and streaming music.
Original and imported content
The imported games and original NullG content are developed separately. The source adapters decode the original formats and preserve their movement behaviour, then use the shared renderer, audio, menus and multiplayer systems. You'll need to supply your own legacy game media.
NullG's own handling uses mass, thrust, hover, collision and combat forces in SI units. Gamepad controls are the immediate use case, with a motion-simulator cockpit also planned. Acceleration, braking, cornering and impact telemetry provide the inputs for that future work.
Controller rumble is implemented. Motion output, positional audio and multiple cockpit displays remain future work.