Fighting Game · Guides & deep dives

V2 Replay Documentation And Viewer Controls Guide

ReplayFileFormat_V2_Contract.json

12sections7 minread5tables

On this page

This guide is the Phase 72 operating guide for replay capture, playback, viewer controls, export, sharing, compatibility, and review. It connects the runtime contracts to the control commands that player-facing viewers, QA tools, broadcast capture, and moderation review should expose.

Source Of Truth#

The core handoff objects are FV2ReplayFile, FV2ReplayRecordingSession, FV2ReplayPlaybackSession, FV2ReplayViewerSession, FV2ReplayTimelineControlState, FV2ReplayOverlayFrame, FV2ReplayFreeCameraState, FV2ReplayEntityTrackingCameraState, FV2ReplayKillCamState, FV2ReplayHighlightTimeline, FV2ReplayClipExportJob, and FV2ReplaySharingWorkflowSpec.

Replay File And Recording#

Replay recording is server authoritative. A valid .v2replay keeps the V2RF magic header, build and content versions, match metadata, timestamped input events, server state snapshots, compressed chunk indexes, and deterministic hashes for input, initial state, and final state. ReplayFileFormat_V2_Contract is the format reference, and ReplayRecording_V2_Contract is the capture reference.

Recording signoff requires:

  • every participating player has timestamped input coverage;
  • the first and final server state snapshots exist;
  • FV2ReplayFileCompressionProfile keeps delta-encoded state snapshots and compressed input streams under the per-minute size budget;
  • FV2ReplayRecordingFinalizeResult carries the compression report;
  • recording jobs fail validation instead of writing partial replay evidence.

Viewer Session And Playback#

FV2ReplayPlaybackSession feeds recorded inputs into deterministic reconstruction. FV2ReplayViewerSession is the player, QA, broadcast, and moderation surface that owns viewer state, timeline edits, bookmarks, camera state, export requests, and queued jobs.

Playback commands:

Command Expected Behavior
PlayPause Toggle between paused playback and forward playback.
StepFrameBackward Move one frame back and rebuild from the nearest state.
StepFrameForward Move one frame forward and apply recorded inputs.
ScrubToFrame Seek to an exact replay frame.
JumpToTimestamp Seek to a timestamp in replay time.
SetPlaybackSpeed Apply one of 0.25x, 0.5x, 1.0x, 2.0x, or 4.0x.
ResetPlaybackSpeed Return to 1.0x without changing camera or overlay state.
AddBookmark Add a review bookmark without mutating replay source data.
SetClipInFrame Set the start frame for a viewer-selected export range.
SetClipOutFrame Set the end frame for a viewer-selected export range.

Seek and scrub commands must preserve deterministic reconstruction. If a state snapshot is missing or a hash mismatch is detected, show a graceful compatibility or corruption failure and keep the replay source file unchanged.

Timeline Controls#

The timeline rail uses FV2ReplayTimelineControlState and stays at Slot.BottomCenter. It exposes frame-accurate scrubbing, play/pause state, speed selection, timestamp jumps, state snapshot markers, bookmarks, in/out range handles, highlight markers, kill-cam windows, and compatibility warnings.

Timeline rules:

  • keep play/pause, speed, scrubber, current time, duration, frame number, and jump-to-timestamp visible at all times;
  • show marker categories for state snapshots, highlights, deaths, clip in/out, suspicious play segments, and shared replay checkpoints;
  • never let hover text or dynamic timestamps resize the rail;
  • announce play state, speed, timestamp jumps, and validation failures to screen readers;
  • pause gameplay input while the replay viewer owns focus.

Camera Controls#

Viewer camera commands map to cinematic replay state and never rewrite the source replay file.

Command Expected Behavior
CycleCameraMode Cycle default, free camera, entity tracking, and kill cam.
EnterFreeCamera Detach from any player and load FV2ReplayFreeCameraState.
MoveFreeCamera Fly the free camera through the reconstructed scene.
OrbitTrackedEntity Orbit a selected player, NPC, projectile, or objective entity.
LockTrackedEntity Follow an entity using FV2ReplayEntityTrackingCameraState.
ReleaseTrackedEntity Return from tracking to free camera.
StampCameraKeyframe Add a camera keyframe to the viewer session.
StartKillCam Use attacker perspective and the configured death window.
CancelKillCam Return to the replay viewer without losing timeline position.

Free camera FOV, move speed, pitch, and orbit distance must respect the bounds in ReplayFreeCamera_V2_Contract.json. Entity tracking must support player and non-player entities, smooth target updates, and release back to free camera. Kill cam windows must keep pre-death and post-death frames inside the replay timeline.

Overlay Controls#

FV2ReplayOverlayFrame supplies overlay rows for the current replay frame. Overlay controls are designed for repeated inspection rather than decorative presentation.

Command Expected Behavior
ToggleReplayOverlay Show or hide all replay overlay rows.
TogglePlayerNames Show player or entity names with stable text bounds.
ToggleHealthBars Show health bars for tracked visible entities.
TogglePositionMarkers Show minimap or world position markers.
ToggleWireframeOutline Show high-contrast outlines for selected entities.
PinOverlayEntity Keep one entity visible while scrubbing or changing cameras.
CycleOverlayDensity Switch compact, broadcast, QA, and moderation overlay density.

The overlay must remain cardless, stable in size, high contrast when requested, reduced-motion safe, and inert to gameplay. Names, health values, suspicious segment labels, and warning badges must fit their containers on console-safe and handheld-safe viewports.

Highlights Kill Cam And Clips#

FV2ReplayHighlightTimeline ranks moments for multi-kills, clutch plays, and near-death survivals. The viewer should expose highlight markers on the timeline and allow a reviewer to jump directly to any ranked moment.

Clip commands:

Command Expected Behavior
OpenHighlights Open the ranked highlight list for the current replay.
JumpToHighlight Seek to a selected highlight with pre-roll.
SetHighlightAsClip Populate in/out frames from the highlight window.
ChooseClipCamera Select default, free, tracked entity, kill cam, or keyframed.
QueueClipExport Build FV2ReplayClipExportJob for MP4 or WebM output.
OpenExportStatus Show queued, encoding, failed, or complete export state.

Clip export uses MoviePipeline and must preserve the existing whole-replay MP4 export path. MP4 is the default for player sharing; WebM is allowed for web-oriented surfaces. Exports should include chosen camera angle, in/out frame range, resolution, frame rate, and moderation state when relevant.

Sharing Compatibility And Review#

Replay sharing uses FV2ReplaySharingWorkflowSpec for owner-consented cloud uploads, HTTPS share links, local downloads, and in-game viewer launch. Shared replays must retain checksum, expiry, size, owner, match, version, and local download directory metadata.

Compatibility review happens before playback:

  • current replays open normally;
  • older replay versions need explicit migration steps;
  • newer, build-mismatched, content-mismatched, or unsafe replay files fail gracefully without loading into gameplay;
  • migration steps must be non-destructive and preserve the original replay.

Anti-cheat review uses ReplayAntiCheatIntegration_V2_Contract.json. Suspicious play segments, input timelines, network telemetry, server validation diffs, encrypted replay evidence, FairPlay signals, and QueueReplayCheatInvestigation case data must remain available to authorized ops reviewers. Cases with weak or incomplete evidence are routed to human review instead of automatic discipline.

Accessibility And Localization#

Replay controls must be usable with keyboard, gamepad, mouse, screen reader, high contrast, reduced motion, and localized text expansion.

Accessibility rules:

  • every icon-only command has a localized tooltip and accessible name;
  • timeline scrubber, speed control, camera mode, overlay density, and export status have focusable controls;
  • PlayPause, SetPlaybackSpeed, ScrubToFrame, JumpToTimestamp, CycleCameraMode, ToggleReplayOverlay, and QueueClipExport announce state changes;
  • reduced-motion mode disables animated highlight sweeps and camera shake in replay-only surfaces;
  • color alone is never the only indicator for corruption, compatibility, moderation, export, or sharing state;
  • localized labels must reserve space for long camera mode, overlay, and export strings.

Troubleshooting#

Use this table for first-line QA and support triage:

Symptom First Check
Replay will not open Run compatibility evaluation and confirm V2RF header metadata.
Scrub jumps to wrong frame Check nearest state snapshot and timestamped input frame coverage.
Playback diverges Compare input stream, initial state, and final state hashes.
Free camera cannot move Confirm viewer focus owns camera input and bounds are valid.
Entity tracking loses target Confirm entity id exists at the current frame.
Overlay rows overlap Reduce overlay density and inspect stable marker dimensions.
Clip export fails Validate in/out frame range, camera angle, format, and queue.
Shared replay fails to launch Revalidate checksum, expiry, download path, and compatibility.
Suspicious segment is missing Confirm FairPlay signal id and server validation diff capture.

Do not patch replay bytes manually. Re-record, migrate through the compatibility policy, or attach the replay to a review case with the failure reason.

Review Checklist#

Before signoff, confirm:

  • replay recording, file format, compression, playback, and compatibility contracts validate;
  • FV2ReplayViewerSession can play, pause, scrub, set speed, jump by timestamp, add bookmarks, and preserve timeline edits;
  • free camera, entity tracking, kill cam, overlays, highlights, clip export, sharing, and anti-cheat review commands are discoverable from the viewer;
  • clip export preserves whole-replay MP4 export and supports selected ranges;
  • shared replay download can open in game after compatibility checks;
  • suspicious play segments can be flagged for FairPlay review and human review;
  • accessibility and localization rules are satisfied;
  • validation commands pass after any replay runtime, UI, online, doc, or CI wiring change.

Validation Commands#

Run these commands after changing replay runtime behavior, viewer controls, documentation, contracts, CI wiring, or Horde gates:

bash
python3 V2/ue/Tools/check-v2-replay-documentation-viewer-controls-guide.py
python3 V2/ue/Tools/check-v2-replay-file-format.py
python3 V2/ue/Tools/check-v2-replay-file-compression.py
python3 V2/ue/Tools/check-v2-replay-compatibility-versioning.py
python3 V2/ue/Tools/check-v2-replay-recording.py
python3 V2/ue/Tools/check-v2-replay-playback-engine.py
python3 V2/ue/Tools/check-v2-replay-viewer.py
python3 V2/ue/Tools/check-v2-replay-timeline-ui.py
python3 V2/ue/Tools/check-v2-replay-overlay-information.py
python3 V2/ue/Tools/check-v2-replay-free-camera.py
python3 V2/ue/Tools/check-v2-replay-entity-tracking-camera.py
python3 V2/ue/Tools/check-v2-replay-kill-cam.py
python3 V2/ue/Tools/check-v2-replay-highlight-detection.py
python3 V2/ue/Tools/check-v2-replay-clip-export.py
python3 V2/ue/Tools/check-v2-replay-sharing.py
python3 V2/ue/Tools/check-v2-replay-anti-cheat-integration.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 V2/tools/validate-v2-docs.py