Quick answer: Capture the replay version, the playback context, and any desync on replay system bug reports, because replays break through playback desync, version incompatibility, and determinism issues. And recognize that a working replay system is itself the ultimate debugging tool, since a replay reproduces a bug exactly.
Replay systems record matches for players to watch, share, and learn from, and they have a distinctive set of bugs: a replay that desyncs from the original match during playback, a replay that will not play after a game update, a determinism issue that makes playback diverge. But replays are also a remarkable opportunity, because a working replay system is the ultimate debugging tool, a replay reproduces a bug exactly, deterministically, every time. Tracking replay bugs means capturing the version and playback context to fix the replay system itself, while leveraging replays as the most powerful reproduction tool you have for every other bug.
Replays depend on determinism
A replay system typically works by recording the inputs and initial state of a match and replaying them through the same deterministic simulation to reconstruct what happened. This makes replays fundamentally dependent on determinism: if the simulation produces the same results from the same inputs, the replay matches the original match, but if anything is non-deterministic, the replay diverges, a desync where the playback no longer matches what actually happened.
This determinism dependency is the source of the main replay bug: playback desync. A non-deterministic operation, a floating-point difference, an unordered iteration, an unseeded random call, that does not affect the original match noticeably can cause the replay to diverge, since the replay re-runs the simulation and any non-determinism compounds. Tracking replay bugs starts with understanding that a desyncing replay is usually a determinism bug, the same kind that causes multiplayer desyncs, and capturing the divergence point is key to finding it.
Capture playback desync
The signature replay bug is playback desync, where the replay diverges from the original match, showing different events than actually occurred. Capture the desync context when this is reported, ideally the frame or moment where the replay diverged from the original, since that divergence point pinpoints the non-deterministic operation responsible, just as a desync frame does in multiplayer netcode.
If you can compare the replay against a recording of the actual match outcome, the first point of divergence is where determinism broke, narrowing the search to a specific moment and operation. Capturing this divergence point turns a vague the replay is wrong into a precise determinism bug at a specific frame, which you can trace to the non-deterministic operation, the floating-point difference, the unordered collection, the unseeded random, that caused the replay to diverge. The desync context is what makes replay determinism bugs tractable.
Handle version incompatibility
Replays are recorded by a specific game version, and a common replay bug is version incompatibility: a replay recorded in one version that will not play, or plays wrong, in a later version because the simulation changed. Since the replay re-runs the simulation, any change to the simulation between versions can break old replays, which is frustrating for players who saved replays they can no longer watch.
Capture the replay version and the current game version when a playback bug is reported, since a replay that fails on a newer version is a compatibility issue, not a general bug. Versioning replays and detecting incompatibility lets you handle old replays gracefully, warning the player rather than playing them wrong, and capturing the version mismatch identifies these cases. Replay version incompatibility is the replay analog of save backward compatibility, and capturing the versions distinguishes a compatibility issue from a determinism bug, which have different handling.
Capture the replay context
For replay bugs beyond desync, capture the replay context: which replay, recorded in what version, the playback state, and any seek or playback controls involved, since bugs can be in the playback features, a seek that breaks, a playback speed issue, a control that misbehaves, rather than in the simulation determinism. Capturing the playback context localizes these feature bugs.
A report that seeking in a replay broke playback, or that a replay control did not work, becomes diagnosable when you can see the replay and the playback state at the moment, revealing the feature bug. Replay systems have a UI and controls, scrubbing, speed, camera, that have their own bugs separate from the recording and determinism, and capturing the playback context lets you reproduce these. The replay context captures the playback-feature dimension of a replay system, where bugs beyond the core determinism occur.
Setting it up with Bugnet
Add an in-game report option and attach the replay version, the playback context, the desync divergence point if applicable, and the current game version as custom fields. Bugnet stores them so a replay bug arrives with the version-and-playback context needed to distinguish a determinism desync from a version-compatibility issue or a playback-feature bug, and to reproduce it.
Group identical reports into occurrence counts, watching whether desyncs cluster around particular game situations, which would point at a non-deterministic operation in that code. Because replay bugs stem from determinism, versioning, and playback features, this context capture is what lets you find the non-deterministic operations causing desyncs, handle version incompatibility gracefully, and fix the playback-feature bugs, keeping the replay system reliable so players can watch and share the matches they recorded, and so you can use replays for the debugging power they offer.
Use replays as the ultimate debugging tool
The hidden payoff of a working replay system is that it is the ultimate debugging tool. Because a replay records the inputs and re-runs the deterministic simulation, a replay reproduces a bug exactly, deterministically, every time, which is the holy grail of bug reproduction. If a player can attach a replay of a match where a bug occurred, you can replay it and watch the bug happen on demand, with perfect fidelity, eliminating the reproduction problem that plagues most bug fixing.
Leverage this by letting players attach replays to bug reports, turning the replay system into a reproduction engine for every kind of bug, not just replay bugs. A replay of the match where a gameplay bug, a desync, or a crash occurred lets you reproduce it precisely, far better than any description or state snapshot. This makes the investment in a deterministic replay system pay off doubly: it gives players the replays they want, and it gives you the most powerful bug-reproduction tool possible, since a deterministic replay is a perfect, repeatable recording of exactly what happened.
A desyncing replay is a determinism bug. A working replay is the ultimate repro tool. Capture both sides.