Deterministic, replay-verified physics: Gessa vs Unity vs Unreal
Last verified 2026-09-02 against engine v1.0.232. Competitor sources were accessed 2026-09-02; every Gessa cell binds to the generated engine reference and the build fails if a bound surface disappears.
Gessa's physics is a Rapier-backed rigid-body core that runs on a fixed timestep and is held to a golden-corpus determinism gate, so the same inputs reproduce the same simulation and a published replay stays stable. The tradeoff is honest: this is a scalar-mass v1 with a deliberately small set of body and constraint families. Unity and Unreal both ship broader physics-family catalogs; Gessa trades family breadth for a determinism guarantee and a browser runtime.
Where Gessa stands
| Capability | Gessa | Unity | Unreal |
|---|---|---|---|
| Rigid body dynamics | Supportedcomponent.rigid_body.contract.v1 | Supported unity 6000.3 | Supported unreal 5.8 |
| Character controller | Supportedcomponent.character_movement.contract.v1 | Supported unity 6000.3 | Supported unreal 5.8 |
| Colliders and layers | Supportedcomponent.collider.contract.v1 | Supported unity 6000.3 | Supported unreal 5.8 |
| Triggers and overlaps | Supportedprimitive.runtime.spatial | Supported unity 6000.3 | Supported unreal 5.8 |
| Raycast and shape queries | Supportedruntime_motion | Supported unity 6000.3 | Supported unreal 5.8 |
| Fixed timestep | Supportedcheck:physics-golden-corpus | Supported unity 6000.3 | Supported unreal 5.8 |
| Joints and constraints | Partialcomponent.joint.contract.v1 | Supported unity 6000.3 | Supported unreal 5.8 |
| Deterministic replay | Partialcheck:physics-golden-corpus | Package unity com.unity.physics 6.6 | Partial unreal 5.8 |
| Navmesh and pathfinding | Supportedcheck:navigation-canon | Package unity com.unity.ai.navigation 2.0 | Supported unreal 5.8 |
| Vehicles | Not yetcomponent.joint.contract.v1 | Supported unity 6000.3 | Supported unreal 5.8 |
| Cloth and soft body | Not yetcomponent.rigid_body.contract.v1 | Supported unity 6000.3 | Supported unreal 5.8 |
| Destructibles | Not yetcomponent.rigid_body.contract.v1 | Package unity 6000.3 | Supported unreal 5.8 |
| Ragdoll | Not yetcomponent.joint.contract.v1 | Supported unity 6000.3 | Supported unreal 5.8 |
RigidBodyComponent, ColliderComponent, CharacterMovementComponent, JointComponent, and NavAgentComponent are the atomic surfaces behind these rows; the determinism and navmesh rows are backed by the check:physics-golden-corpus and check:navigation-canon gates in the build.
The gaps, named here
- Joints are partial, not full articulation. Fixed, revolute, prismatic, spherical, spring, and rope joints exist, motors and limits are wired for revolute and prismatic only, and there is no articulation body. That is why vehicles and ragdoll read as not yet on this page: both need articulation the
JointComponentsubstrate does not carry today. - Determinism is partial. Single-machine replay stability and published-replay reproduction are proven by the golden-corpus gate; cross-platform bit-identical determinism is not claimed. Read the determinism scope in the Referencecomponent referenceResolved signature, schema and example and the physics explanation, not as a blanket guarantee.
- There is no cloth, soft-body, destruction, vehicle, or ragdoll family. Gessa simulates rigid bodies with scalar mass. These families are not in the engine and are not scriptable workarounds.
Where Unity and Unreal are ahead
- Unreal's Chaos physics ships vehicles, cloth, destruction via geometry collections, ragdoll, and a soft-body solver as first-party systems, and documents networked physics with multiple replication modes. See the Unreal physics documentation cited in the table.
- Unity offers a mature built-in PhysX integration plus a separate deterministic, stateless physics package for data-oriented projects, and vehicle wheels, cloth, and ragdoll as supported components. See the Unity physics documentation and the Unity Physics package cited in the table.
- Both engines run on native desktop and console targets, so their solvers can spend a budget a browser runtime does not have.
Gessa's answer is not to match that catalog row for row. It is to make the rigid-body core deterministic and replay-verified, publish it in the browser, and be explicit about the families it does not simulate.