Every module, one purchase
Project FGE Ultimate
All three modules in one purchase, plus Training Lab free when it ships. It installs the same packages as the separate listings, with the same names and versions, so every module updates the same way.
A modular fighting-game engine with rollback netcode, for Unity 6.
Fighter Core: the Versus sample. Two demo fighters, the HUD, hit sparks and a fight camera, all driven by the deterministic sim.
At a glance
Three modules that stack: Motion Input, Rollback Netcode and Fighter Core. Use one or all of them. Every core is deterministic, integer-only C# that allocates nothing per frame, and more than 640 tests ship with them.
Features
Motion Input
Twelve built-in motions, plus your own as data. SOCD cleaning per axis, negative edge, chord windows, button priority and a buffer of up to 30 frames. Numpad notation goes straight from design doc to code.
Rollback Netcode
Prediction, save and restore, re-simulation, input delay, time sync and desync detection with 64-bit checksums. A seeded in-memory network adds latency, jitter, loss and outages without a second machine.
Online play
Handshake, start alignment, redundant input acks and timeouts, over direct UDP or through a relay. The relay server's source is included: one Python file you run on your own server.
Fighter Core
Per-frame hit, hurt, throw and push boxes. Blocking, chip, counter hits, armor, throws and techs. Proration, hitstop, launches, meter, supers, bursts, projectiles and rounds.
Determinism
Positions are integers (65,536 subpixels per metre) at a fixed 60 Hz. An IL lint fails the build on float opcodes or System.Random. The same match ends on the same checksum under IL2CPP, Mono and .NET.
Authoring
Author fighters and rules in code, in JSON with shipped JSON Schemas for autocomplete, or as ScriptableObjects. The inspectors show metres, metres per second and frames.
Modules
Each module is its own package and listing. Start with one and add the rest when your game needs them, or get every module at once with Project FGE Ultimate. They share names and versions, so owning more than one never duplicates files.
Every module, one purchase
All three modules in one purchase, plus Training Lab free when it ships. It installs the same packages as the separate listings, with the same names and versions, so every module updates the same way.
Fighting-game input for any Unity 6 game. The reader is plain C# that runs headless.
Rollback netcode for any deterministic game, fighting game or not, and the UDP layer that puts it online.
RollbackSession for 1 to 4 players with input delay and predictionLocalSession for training-mode style local delayA deterministic 2D fighting-game simulation, with views, HUD and a playable Versus sample.
Requires Project FGE Motion Input.
A training mode and combo validator built on Fighter Core. Not available yet. Project FGE Ultimate owners get it free when it ships.
Fighting games need a lot of separate systems: input reading, a deterministic simulation, rollback and a network layer. Most engines tie them together so tightly that you can't take one without the others. Project FGE keeps them apart.
Each module is a separate package and a separate purchase. They find each other through version defines, so a missing module never breaks your build. It only adds a note in the Console that says what's missing.
Rollback only works when both machines get the same result from the same inputs, every frame. Project FGE treats that as a hard rule, not a best effort. The cores run on integer math with no UnityEngine reference. They allocate nothing per frame and keep no mutable statics. A build step rejects floating-point code, so float math can't slip in later.
You get more than netcode out of it. Replays only need inputs. Bugs reproduce exactly. You can
run a whole match headless under dotnet test and check its checksum against a known value.
Every package ships samples you can open and play from the package:
Check the specs and FAQ, or ask us whether it fits your project.