Saturday, December 6, 2025

Stop Blaming The Engine: Boxing Games Desync Because Studios Cut Corners






1. What “desync” actually is (in plain English)

Online players lump a lot of pain under “netcode” or “desync,” so let’s separate a few concepts:

  • Lag/latency: The time it takes for data to travel between players or to the server.

  • Stutter/packet loss: Data is delayed or dropped, causing freezing, rubber-banding, or teleporting.

  • Desync (desynchronization): The game thinks the fight is in different states on different machines, so what you see on your screen is not what the other player (or the server) sees.

Technical definition:

A desynchronization is a disagreement of the game state between the server and at least one client in a multiplayer game – the parties are no longer running the simulation identically. Official Factorio Wiki

That’s why you get horror stories like:

  • “On my screen, I blocked that hook.”

  • “On their screen, I got dropped, and the ref counted me out.”

That is desync: two parallel universes of the same match.


2. Why boxing games are especially sensitive to desync

A 1v1 boxing or fighting game is built around:

  • Frame-tight windows (slips, counters, parries, pull counters, feints).

  • Exact spatial relationships (in/out of range by a few centimeters).

  • Hit/hurt boxes, collision, and physics on gloves, heads, and torsos.

  • Big animations that must line up (uppercut into the chin at the right frame).

If both clients are not simulating the exact same events in the exact same order, you get:

  • Ghost hits that register on one side and not the other.

  • KO or stun states that don’t match.

  • Weird “rewind” or “teleport hit” feeling during exchanges.

Fighting games have known this problem for decades, which is why they gravitated toward lockstep and then rollback netcode to keep everyone in sync. Wikipedia+1


3. Engines, netcode models, and where desync comes from

3.1 Netcode models used in fighting/boxing games

Most fighting/boxing netcode falls into one of these buckets:

  1. Delay-based / lockstep

    • Both players wait until everyone’s input for a frame is received before simulating.

    • Adds input delay to keep the game in sync, often half the round-trip time. YellowAfterlife+1

    • Feels sluggish and can freeze when latency spikes.

  2. Pure client-server with reconciliation

    • Common in shooters.

    • Server is “truth,” clients interpolate/extrapolate.

    • Hard to use for frame-perfect 1v1 combat, because you’re guessing where the opponent is and then reconciling after the fact.

  3. Rollback (what the FGC is obsessed with)

    • Clients simulate immediately using predicted opponent inputs.

    • When real inputs arrive, if predictions were wrong, the game rolls back to the last good state, replays inputs, and corrects the timeline. glossary.infil.net+1

    • Requires the game to:

      • Save previous world states.

      • Re-simulate multiple frames quickly.

      • Be deterministic (same inputs → same results, every time) across machines.

Rollback was codified and popularized by GGPO, middleware built specifically for fighting games. It’s now open-source under MIT and is used or emulated by many modern fighters. Wikipedia+2GGPO+2

3.2 Where desync comes from in any engine

Regardless of engine, desync usually traces back to one or more of:

  1. Non-deterministic simulation

    • Floating-point differences, non-seeded random numbers, physics that depend on frame rate, or systems that run in a different order on each machine can all cause “same inputs, different results.” Game Development Stack Exchange+1

  2. Mismatched content/code

    • Different data, mods, or executables on each client lead to different logic. Many RTS and 4X games list content mismatches as a core desync cause. FAForever Forums+1

  3. Bad or partial rollback implementation

    • Not snapshotting all relevant state.

    • Only rolling back parts of the simulation (e.g., positions but not stamina or damage).

    • One-sided rollback (only one machine correcting), which causes bizarre visual behavior. Reddit+2Developer Forum | Roblox+2

  4. Trying to “fake” a fighting game with generic shooter netcode

    • Replicating full character transforms, camera, physics, and animation like a shooter can yield subtle divergences over time if not designed as a strict deterministic sim.

None of that is tied to “Unity vs Unreal” – these are design and engineering issues.


4. Does the engine matter?

Short version: it matters for cost and difficulty, not for possibility.

4.1 Unreal Engine

  • Unreal’s default multiplayer model is server-authoritative replication (great for shooters).

  • It does not give you plug-and-play rollback fighting game netcode.

  • Devs who tried to add true rollback in UE5 describe it as “hard” and note that the engine doesn’t provide much out-of-the-box support; you end up writing your own ticking/simulation flow and state management. Epic Developer Community Forums+1

  • However, there are projects integrating rollback with Unreal via custom code or GGPO-style approaches, including experimental FPS demos built on UE5 + GGPO. GitHub

So: possible in Unreal, but you must plan for a lot of custom engineering.

4.2 Unity

  • Unity has multiple networking stacks (legacy UNet, NGO for GameObjects, 3rd-party frameworks).

  • Fighting-game devs often rely on custom deterministic layers or middleware like UFE Netcode, which combines frame delay with rollback. Reddit+2ufe3d.com+2

  • Successful Unity fighters with rollback (e.g., Power Rangers: Battle for the Grid) prove it’s fully doable. Unity Forum

Again: possible, but you must respect determinism and design around rollback.

4.3 Custom engines

  • Arc System Works, Capcom, etc., often use custom or heavily modified engines tuned for rollback and 2D/2.5D fighters.

  • The advantage is full control; the disadvantage is cost and time.

Key point: desync is not “because of Unreal” or “because of Unity.” It is because the game’s simulation and netcode architecture were not built and disciplined for deterministic, rollback-friendly fighting gameplay from day one.


5. Is there a real fix for desync in a boxing game?

Yes, but it comes as a stack of decisions, not a single patch.

5.1 The architectural fix

For a modern, realistic boxing game, the strongest baseline is:

  1. Deterministic core simulation

    • Fixed-step game loop, identical on all machines.

    • All combat-critical systems driven by deterministic inputs:

      • Stamina, damage, cuts, block wear, footwork states, hit/hurt boxes.

    • No reliance on frame-time-dependent physics for what actually decides hits/blocks.

    • Deterministic randomness (seeded RNG) where needed. YellowAfterlife+2Medium+2

  2. Rollback or lockstep-style netcode, not generic shooter replication

    • For 1v1 boxing, either:

      • Rollback (GGPO-style): best feel at the cost of implementation complexity, or

      • Deterministic lockstep with some delay: easier to code, but more input lag and pauses. SnapNet+1

    • Inputs, not full states, are what travel over the network; each client simulates locally using the same rules.

  3. Authoritative sanity checks

    • Periodic checksums or hashes of game state to detect divergence early, a technique used by RTS and other deterministic engines. Official Factorio Wiki+1

    • If a severe desync is detected:

      • Hard resync from the authoritative state, or

      • Cleanly drop the match with an error, rather than letting invisible KO outcomes happen.

5.2 The content/system-level fix for boxing

Even with good netcode, you can design your boxing systems to be more network-friendly:

  • Separate “visual” and “judgment” layers

    • The judgment layer decides hits, blocks, and damage using simple geometry and deterministic logic.

    • The visual layer plays the fancy blended animations, ragdolls, and camera shakes.

    • On rollback, you only must perfectly rewind the judgment layer; visuals can be approximated or smoothed.

  • Keep online physics simple

    • Avoid fully dynamic ragdoll decisions in live rounds.

    • Use canned knockdown and stumble trajectories that are deterministic.

    • Reserve full ragdoll chaos for replay or spectator cameras, where slight differences don’t affect gameplay.

  • Normalize timing windows

    • Use fixed frame windows for key defensive options (slips, shoulder rolls, counters).

    • Make sure those windows are driven by deterministic timelines, not blended animation curves that diverge.

All of that reduces the risk that tiny divergences turn into visible desyncs.

5.3 Operational and UX fixes

A studio that really wants to kill desync will also:

  • Ship strong connection filters and matchmaking

    • Region-based or ping-based matchmaking.

    • Minimum connection quality thresholds (e.g., no ranked if ping > X or packet loss > Y).

  • Expose netcode options to the player

    • Input delay vs rollback “aggressiveness” sliders (common in GGPO-style clients). GGPO+1

    • Clear UI indicators: ping, rollback count, packet loss.

  • Invest in tooling

    • Internal replay + rollback debugger to reproduce desyncs.

    • Automated tests that run the same input streams on different machines and compare checksums frame-by-frame.

Any company that says, “We just can’t fix desync” while not doing these basics is really saying, “We don’t want to spend the money and time.”


6. Hard truth: what cannot be fixed

Even the best netcode in the world cannot:

  • Turn a terrible Wi-Fi connection into fiber.

  • Erase 200+ ms ping between players on opposite sides of the planet.

  • Prevent all visual hiccups when there is heavy packet loss.

Rollback can hide a lot of latency, and smart design can mask many corrections, but:

  • You will still sometimes see small “teleports” or animation snaps when predictions are wrong. PlayStation Competition Center+1

  • You will still have matches that the game must terminate or desync-flag because the connection or hardware is too unstable.

The goal is not zero roughness. The goal is:

“No more ‘I got KO’d on my screen but not on theirs.’ When you get dropped, both players see the same knockdown and the same count.”

That is absolutely achievable.


7. So, can a boxing videogame company fix desync?

Yes – if they treat it as a first-class feature, not an afterthought.

To answer your three questions directly:

  1. Can a company fix desync in a boxing videogame?

    • Yes. Plenty of fighting games have moved from awful online to solid or excellent online by investing in proper deterministic simulation and rollback or lockstep netcode. The same principles apply to boxing.

  2. Does it matter what engine they use?

    • It matters for how hard and expensive the fix is, but not for whether it’s possible.

    • Unreal, Unity, and custom engines can all support deterministic, rollback-friendly netcode – but none of them will do it “for free.” You have to design and implement that layer intentionally. Epic Developer Community Forums+2ufe3d.com+2

  3. Is there a fix?

    • There is no magic checkbox.

    • The fix is a stack:

      • Deterministic combat core.

      • Rollback or lockstep netcode designed for 1v1.

      • Strong content discipline (judgment vs visuals).

      • Tools, telemetry, and connection policies.

    • When a studio actually commits to that stack, “desync KOs” become rare edge cases instead of a defining feature of the game’s online play.

If you ever want, we can sketch a boxing-specific rollback architecture: what goes into the state snapshot (stamina, damage, tendencies, foot positions), what’s visual-only, and how to integrate that with your tendency/AI systems so CPU vs CPU and online play both stay honest.

No comments:

Post a Comment

How Boxing Games Are Designed to Pacify Fans, Not Respect Them

  How Boxing Games Are Designed to Pacify Fans, Not Respect Them Boxing fans know what a real fight looks like. They understand timing, foo...