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#
- Replay file format: ReplayFileFormat_V2_Contract.json
- Replay recording: ReplayRecording_V2_Contract.json
- Replay playback engine: ReplayPlaybackEngine_V2_Contract.json
- Replay file compression: ReplayFileCompression_V2_Contract.json
- Replay compatibility: ReplayCompatibilityVersioning_V2_Contract.json
- Replay viewer: ReplayViewer_V2_Contract.json
- Replay timeline UI: ReplayTimelineUI_V2_Contract.json
- Replay overlay information: ReplayOverlayInformation_V2_Contract.json
- Replay free camera: ReplayFreeCamera_V2_Contract.json
- Replay entity tracking camera: ReplayEntityTrackingCamera_V2_Contract.json
- Replay kill cam: ReplayKillCam_V2_Contract.json
- Replay highlight detection: ReplayHighlightDetection_V2_Contract.json
- Replay clip export: ReplayClipExport_V2_Contract.json
- Replay sharing: ReplaySharing_V2_Contract.json
- Replay anti-cheat integration: ReplayAntiCheatIntegration_V2_Contract.json
- This guide contract: ReplayDocumentationViewerControlsGuide_V2_Contract.json
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;
FV2ReplayFileCompressionProfilekeeps delta-encoded state snapshots and compressed input streams under the per-minute size budget;FV2ReplayRecordingFinalizeResultcarries 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, andQueueClipExportannounce 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;
FV2ReplayViewerSessioncan 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:
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