Project FGE
A modular fighting-game engine with rollback netcode, for Unity 6.
- Unity
- 6000.0.85f1+
- Version
- 1.0.0
- Price
- From $30 · Ultimate $149
- License
- Asset Store EULA
Technical details
Specifications
Performance figures were measured on a mid-range laptop CPU and are quoted as measured. Where something is untested, we say so.
Compatibility
| Unity | 6000.0.85f1 (6.0 LTS) or later. Tested on 6000.0.85f1 and 6000.6.4f1. Unity 2022.3 isn't supported. |
|---|---|
| Render pipelines | Built-in verified in clean imports. All UI is UI Toolkit. URP isn't verified yet for Fighter Core's three unlit shaders. HDRP is not supported. |
| Platforms | Tested on Windows x64 in the editor, Mono and IL2CPP players. Other platforms are untested. WebGL can't open UDP sockets. |
| Play mode | Works with Enter Play Mode Options and Domain Reload off. No mutable statics. |
Determinism
| Tick rate | Fixed 60 Hz |
|---|---|
| Math | Integer only. Positions in subpixels (65,536 per metre), authored in millimetres and frames. |
| Enforcement | An IL lint fails the build on float or double opcodes, System.Random, DateTime, Stopwatch or Dictionary enumeration. |
| Cross-runtime check | The same reference match ends on the same checksum under IL2CPP, Mono and .NET 10. |
Netcode
| Players | 1 to 4 in a rollback session. Online matches are 2 machines. |
|---|---|
| Defaults | Input delay 2 frames (0 to 30), rollback limit 10 frames (1 to 60), checksums every 30 frames. |
| Transport | UDP over IPv4, 1024-byte datagrams, about 2 KB/s per match. Direct or relay. |
| Not included | Encryption, IPv6, NAT traversal beyond the relay, spectators, late join and reconnect. No hosted relay service. |
Performance
| Fighter rollback | 8-frame rollback median: 8.9 µs IL2CPP, 23.2 µs Mono, 5.6 µs .NET 10 |
|---|---|
| Match state | 1,558 bytes, 0 bytes allocated to save or restore |
| Motion Input reader | 1.2 to 2.2 µs per player-frame (editor, Mono) |
| Online tick | 1.7 to 2.2 µs, about 27 to 33 bytes per message |
| Test machine | Intel i5-12450H laptop |
Code
| Source | Full C# source. Namespaces under HsSoftware.ProjectFGE. |
|---|---|
| Assemblies | 26 assembly definitions. The cores have no UnityEngine reference (.NET Standard 2.1, C# 9). |
| Dependencies | Input System (Motion Input's integration layer only) and the UI Elements module. No third-party code, JSON libraries or plugins. |
| Tests | Motion Input 179, Rollback Netcode 125, Fighter Core 342 |
| License | Standard Unity Asset Store EULA |
Before you buy
FAQ
Can I buy just the netcode?+
Yes. Rollback Netcode works with any deterministic game, not just fighters, and includes online play over UDP. It doesn't need Fighter Core.
Does it include characters, art or animation?+
No. Fighter Core ships two demo fighters as data, plus simple mannequin views and a HUD. These are a starting point for prototypes and tools, not final art. Bring your own models and animation.
Do you host a relay server?+
No. Matches connect directly, or through the included relay server, which you run on your own machine or server. It's a single Python 3.8+ file that uses only the standard library.
Is it 2D or 3D?+
The simulation is 2D with two fighters, like most traditional fighting games. How you render it is up to you. The samples use 3D mannequins on a 2D plane.
Which platforms are supported?+
Everything is tested on Windows x64, in the editor and in Mono and IL2CPP players. The cores are plain C#, but we only claim platforms we've tested.
Is there a bundle?+
Yes. Project FGE Ultimate has all three modules in one purchase, for less than buying them separately, and Ultimate owners get Training Lab free when it ships. Package names, GUIDs and versions are the same as the separate listings, so owning a module and Ultimate never duplicates files.
How was Project FGE made?+
The code, documentation and sample setup were written by HS Software with Claude, an AI coding assistant made by Anthropic, under HS Software's direction. The packages contain no images, audio, video, fonts or 3D models from AI generators or anyone else, and no third-party code.
