NullG

Multiplayer

A C++20/Vulkan anti-gravity racing engine exploring legacy game asset import, simulation-first architecture, local/LAN/online multiplayer, and

Racing Together

NullG supports multiplayer across local split-screen, LAN sessions, and online private rooms. The experience is built around host-authoritative racing, clean lobby ownership, independent local players, and presentation that scales from one screen to four active viewpoints.

NullG multiplayer race setup

Local split-screen

Local multiplayer supports two to four human players on one machine. Players claim tiles, choose their team or pilot options, confirm readiness, and launch together. Each player gets their own camera, HUD, pause ownership, and results view.

Two-player races can use horizontal or vertical split layouts through a persistent game option. Three and four players use quadrants. Split rendering gives each viewport its own camera, depth/HDR targets, lighting choices, post-processing history, and HUD composition while sharing the scene work that benefits every view.

Four-player split-screen racing in NullG

Four-player split-screen keeps every local racer in the action at once, with independent cameras, HUDs, lap timing, position tracking, and ship movement all presented in a balanced shared layout.

Two-player vertical split-screen racing in NullG

Vertical split-screen gives two racers a wide forward view of the course, with each ship, HUD, and race position kept easy to read while both players share the same display.

Viewport-balanced stereo keeps the audio feeling natural. Left and right views map into matching stereo regions, top and bottom layouts stay centered, and shared emitters remain controlled so the mix stays clean as player count grows.

LAN play

LAN sessions use automatic local discovery. A host advertises a room, nearby machines see it in the LAN menu, and compatible players can join. Each machine can bring multiple local humans into the shared race, with the host owning the race settings and authoritative simulation.

That gives LAN play a great party-racing shape: local players can share a machine, multiple machines can join the same room, and the race still runs through one authoritative gameplay model.

Online private rooms

Online play uses private rooms with signaling and encrypted game channels. The host creates a room, shares the code, and other players join with matching gameplay content. Direct and relayed transport paths give the session flexibility while preserving the same race authority model.

Installed game content stays local to each machine. Compatibility fingerprints confirm that peers agree on the gameplay-critical source data before the race begins. That keeps online admission clear and deterministic.

Prediction and presentation

Clients submit controls and predict their local movement for responsiveness. The host owns collisions, pickups, weapons, AI, progression, and results. Remote racers are interpolated for smooth presentation, and authoritative updates keep every machine aligned with the shared race.

The wire protocol separates lobby/events from high-frequency state. Reliable ordered messages carry roster, setup, confirmed events, and results. Supersedable state carries controls and motion updates. Input redundancy and edge-action deduplication keep the session responsive and tidy.

Results screens follow the same split-screen discipline: every player gets an independent, readable summary while the overall presentation stays consistent with the NullG menu system.

A strong multiplayer foundation

The multiplayer work connects many of NullG's best systems: fixed-step simulation, source fingerprints, split rendering, viewport audio, local device ownership, LAN discovery, private online rooms, prediction, and race results. It turns the engine from a solo racing project into a shared racing platform with plenty of room for bigger events, richer lobbies, and deeper competitive features.