Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Replays

Cross-game analysis: See research/replay-playback-ux-survey.md for the detailed source study covering SC2, AoE2:DE/CaptureAge, Dota 2, CS2, CoH3, WC3:Reforged, LoL, and Fortnite that informed this spec.


Replay Browser

Main Menu → Replays
┌──────────────────────────────────────────────────────────────────┐
│  REPLAYS                                             [← Back]    │
│                                                                  │
│  Search... [⌕]  [My Games ▾] [Sort: Date ▾] [Filters ▾]        │
│                                                                  │
│  ┌─ LIST ──────────────────────────┬─ DETAIL ─────────────────┐ │
│  │                                 │                           │ │
│  │ ■ Coastal Fortress              │  MAP PREVIEW              │ │
│  │   You vs PlayerX · Victory      │  ┌─────────────┐         │ │
│  │   12:34 · IC Default · Ranked   │  │             │         │ │
│  │   +32 Elo · Jan 15              │  │  (minimap)  │         │ │
│  │                                 │  │             │         │ │
│  │ ■ Desert Arena FFA              │  └─────────────┘         │ │
│  │   4 players · 2nd place         │                           │ │
│  │   24:01 · Vanilla RA            │  PLAYERS                  │ │
│  │   Jan 14                        │  P1: You (Allied) — Win   │ │
│  │                                 │  P2: PlayerX (Soviet) — L │ │
│  │ ■ Imported: match.orarep        │                           │ │
│  │   OpenRA · Converted            │  Duration: 12:34          │ │
│  │                                 │  Balance: IC Default      │ │
│  │                                 │  Speed: Normal            │ │
│  │                                 │  Signed: Relay-certified  │ │
│  │                                 │  Mod: (none)              │ │
│  │                                 │                           │ │
│  │                                 │  [Watch]  [Share]         │ │
│  │                                 │  [Rename] [Delete]        │ │
│  └─────────────────────────────────┴───────────────────────────┘ │
│                                                                  │
│  [Import Replay...]  [Enter Match ID...]  [Reset Filters]        │
└──────────────────────────────────────────────────────────────────┘

Filter System

Seven filter dimensions (adapted from OpenRA’s proven model, extended with IC-specific fields):

FilterOptionsNotes
ScopeMy Games / Bookmarked / All Local / ImportedDefault: My Games
Game TypeAny / Ranked / Custom / Campaign / Skirmish vs AI
Date RangeToday / This Week / This Month / This Year / All Time
DurationAny / Short (<10 min) / Medium (10–30 min) / Long (30–60 min) / Epic (60+ min)
MapDropdown populated from local replay metadataSearchable
PlayerText field with autocomplete from local replay metadata
OutcomeAny / Victory / Defeat / DrawRelative to the selected player filter
  • Sort by: Date (default), Duration, Map Name, Player Count, Rating Change
  • Filters are additive (AND logic); [Reset Filters] clears all
  • Replay list loads asynchronously — no UI freeze on large collections

Replay Detail Panel (Right Side)

  • Map preview: Minimap render with spawn point markers per player (colored dots)
  • Player list: Name, faction, team, outcome (Win/Loss/Draw), APM average
  • Metadata: Duration, balance preset, game speed, mod fingerprint, signed/unsigned status, engine version
  • Missing map handling: If the replay’s map is not installed, show [Install Map →] inline (downloads from Workshop if available) — adapted from OpenRA’s auto-install pattern
  • Foreign replay badge: Imported replays show source format badge (OpenRA / Remastered) and divergence confidence level (D056)

Actions

ButtonAction
[Watch]Launch Replay Viewer
[Share]Copy Match ID to clipboard, or export .icrep file
[Rename]Rename the replay file
[Delete]Delete with confirmation
[Import Replay…]File browser for .icrep, .orarep, Remastered replays (D056)
[Enter Match ID…]Download a relay-hosted replay by match ID (see Sharing section below)

Replay Viewer

Replay Browser → [Watch]
  — or —
Post-Game → [Watch Replay]
  — or —
Match History → [Watch]
  — or —
Double-click .icrep file (OS file association)

The Replay Viewer reuses the full game viewport with an observer transport bar replacing the player HUD. The right sidebar shows the minimap and observer panels.

Layout

┌────────────────────────────────────────────────┬──────────────────┐
│                                                │    MINIMAP        │
│                                                │   (clickable)     │
│              GAME VIEWPORT                     │                  │
│           (replay playback)                    ├──────────────────┤
│                                                │  OBSERVER PANEL   │
│                                                │  (toggleable,     │
│                                                │   see § Overlays) │
│                                                │                  │
│                                                │                  │
│                                                │                  │
├────────────────────────────────────────────────┴──────────────────┤
│  TRANSPORT BAR                                                    │
│                                                                   │
│  ⏮ ◄◄ ◄ ▶/⏸ ► ►► ⏭    0.5x [1x] 2x 4x 8x    12:34 / --:--    │
│                                                                   │
│  ├─△──●──△────△─────△──────────────────────────────────────┤     │
│    ⚔     ⚔🏠  ⚔⚔   🏠                                           │
│                                                                   │
│  CAMERA: [P1 ▾] [P2] [Free] [Follow Unit] [Directed]  [Fog ▾]   │
│  PANELS: [A]rmy [P]rod [E]con [Po]wers [S]core [AP]M  [Voice ▾] │
│                                                                   │
│  [Bookmark] [Clip] [Summary]                          [Settings]  │
└───────────────────────────────────────────────────────────────────┘

Transport Controls

Button Bar

ButtonIconAction
Jump to StartJump to tick 0
Rewind 15s◄◄Jump back 15 seconds (configurable: 5s/10s/15s/30s)
Step BackStep back one game tick (hold for slow reverse scan)
Play / Pause▶/⏸Toggle playback
Step ForwardStep forward one game tick (hold for slow forward scan)
Fast Forward 15s►►Jump forward 15 seconds
Jump to EndJump to final tick

Speed Controls

Speed buttons are displayed as discrete clickable labels (not a dropdown — LoL’s single-click model, avoiding Dota 2’s dropdown regression):

0.25x  0.5x  [1x]  2x  4x  8x  Max

The active speed is highlighted. Click to switch instantly.

Keyboard Shortcuts

KeyAction
SpacePlay / Pause
BRewind 15 seconds (SC2 convention)
NFast forward 15 seconds
, (comma)Step back one tick
. (period)Step forward one tick
[Decrease speed one tier
]Increase speed one tier
HomeJump to start
EndJump to end
Ctrl+BAdd bookmark at current tick
/ Jump to previous / next bookmark or event marker
Ctrl+← / Ctrl+→Jump to previous / next engagement
EscapeOpen replay menu (exit / settings / summary)

Seeking

IC’s 300-tick (~10 second) keyframe snapshots enable true arbitrary seeking — the key architectural advantage over OpenRA, AoE2, CoH3, and WC3 (all forward-only).

  • Click anywhere on the timeline to jump to that moment
  • Drag the playhead to scrub through the replay
  • Re-simulation from nearest keyframe takes <100ms for typical games
  • Both forward and backward seeking are supported
  • Seeking works at any point — no “already viewed” restriction (unlike SC2)

Timeline / Scrub Bar

The timeline is the most important UX element in the replay viewer. IC’s design draws from LoL’s annotated timeline (the strongest surveyed) while adding spoiler-free mode (an unmet need across all games).

Layout

├─△──●──△────△─────△──────────────────────────────────────┤
  ⚔     ⚔🏠  ⚔⚔   🏆
  • Horizontal progress bar spanning the full width of the transport area
  • Playhead (●) shows current position; draggable
  • Event markers (△) appear as small icons above the bar at their timestamp
  • Engagement zones shown as colored intensity bands behind the bar (SC2 combat shading pattern)
  • Time display: elapsed / total in mm:ss format (or --:-- in spoiler-free mode)

Event Markers

Auto-generated from the analysis event stream (see formats/save-replay-formats.md § “Analysis Event Stream”):

MarkerIconSource Event
Unit destroyed (significant)UnitDestroyed (filtered to non-trivial: hero units, expensive units, first blood)
Base structure destroyed🏠ConstructionDestroyed for production/defense buildings
Tech transitionUpgradeCompleted for tier-changing upgrades
Expansion establishedConstructionCompleted for resource structures at new locations
Engagement zoneColored bandClusters of UnitDestroyed events within a time window
Player eliminatedPlayerEliminated / MatchEnded for that player
Bookmark (user)🔖User-placed via Ctrl+B
Highlight moment (D077)Auto-detected highlight (top-scoring windows from D077 scoring pipeline)

Contextual Highlighting (LoL Pattern)

When the viewer locks camera to a specific player:

  • That player’s event markers brighten on the timeline
  • Other players’ markers fade (not hidden — just reduced opacity)
  • This makes “find my kills” or “find my losses” effortless without separate filtering UI

Spoiler-Free Mode

No game surveyed offers this. IC can be first.

When enabled (toggle in replay menu or Settings → Gameplay):

  • Total duration display shows --:-- instead of the actual end time
  • Timeline bar renders as an expanding bar that only shows the elapsed portion (the unplayed portion is hidden, not greyed out)
  • Event markers only appear for already-viewed portions
  • The progress bar does not reveal how much game remains
Spoiler-Free ON:
├─△──●──△────△─                                           │
  ⚔     ⚔🏠  ⚔⚔   ← bar ends at playhead; future is hidden
                    12:34 / --:--

Spoiler-Free OFF (default):
├─△──●──△────△─────△──────────────────────────────────────┤
  ⚔     ⚔🏠  ⚔⚔   🏠                    12:34 / 38:21

Default: Spoiler-free is off by default (most users want the full timeline). The setting persists across sessions.


Camera Modes

Six camera modes, selectable via the camera bar or hotkeys:

ModeKeyDescription
Free CameraFDefault. Pan (edge scroll / middle-click drag / WASD), zoom (scroll wheel), minimap click to jump. Standard RTS observer camera.
Player Perspective18Lock to a specific player’s recorded camera position, scroll, and zoom. Shows what the player actually saw during the game. Selected units shown with dashed circles in player color (SC2 pattern).
Follow UnitCtrl+F on selected unitCamera tracks a selected unit, keeping it centered. Useful for following hero units, harvesters, scouts. Click elsewhere or press F to exit.
Directed CameraDAI-controlled camera that automatically follows the action. Jumps between engagements, expansions, and production events. Useful for passive viewing and casting. Configurable aggression (how quickly it cuts between events).
Drone FollowCtrl+DLoosely attached camera that follows the action with inertia and smooth movement. Cinematic feel without sharp cuts. (Fortnite drone-attach pattern adapted for isometric RTS.)
All Vision0Free camera with fog/shroud disabled for all players. Shows the full map state.

Vision / Fog-of-War Controls

Dropdown in the camera bar:

OptionKeyEffect
All Players (Combined)-See the union of all players’ vision
Disable Shroud=Full map revealed, including cloaked/hidden units
Player 1 VisionShift+1See only what Player 1 can see
Player 2 VisionShift+2See only what Player 2 can see
Shift+NPer-player fog-of-war

Ghost View (analysis mode): Ctrl+= — Full map revealed, but units outside the selected player’s vision are shown as translucent ghosts. Useful for studying opponent movements you couldn’t see during the game. (Adapted from CS2 X-ray concept for RTS.)


Observer Overlay Panels

Hotkey-toggled panels in the right sidebar. Each panel is independently toggleable and shows real-time data for all players. Design follows SC2’s proven model — the most praised RTS observer system across all games surveyed.

PanelKeyContent
ArmyAPer-player army composition: unit type icons with counts and total army value (resource cost of living military units). Color-coded by player.
ProductionPPer-player active build queues: what each player is currently building (units, structures, upgrades) with progress bars.
EconomyEPer-player resource counts: credits on hand, income rate ($/min), harvester count, refinery count.
PowersWPer-player support power status: available/recharging/locked. Timer bars for recharging powers.
ScoreSPer-player score breakdown: Units Destroyed value, Units Lost value, Structures Destroyed, Structures Lost.
APMMPer-player Actions Per Minute: current window APM and game-average APM. Bar graph or sparkline.

Panel Display Modes

Three display density options (CoH3 pattern):

ModeDescriptionUse Case
ExpandedFull panel detail with all data visibleLearning, analysis
CompactCondensed single-line-per-player summaryExperienced viewers wanting viewport space
CasterSide-by-side team comparison layout, minimal chromeBroadcast / streaming

Toggle with Tab to cycle modes, or select from replay settings.

Larger Broadcast Panels (SC2 Ctrl+ Pattern)

For tournament broadcasts and streaming, larger center-screen panels:

KeyPanel
Ctrl+ALarge Army + Worker supply comparison
Ctrl+ELarge Income comparison
Ctrl+SLarge Score comparison
Ctrl+NPlayer Name banners (name, faction, team color)

These overlay the center-top of the viewport and auto-hide after 5 seconds (or on any key press). Designed for broadcast transitions.


Graphs and Analysis Overlays

Available via the [Summary] button or during playback as overlay panels:

Timeline Graphs (SC2 Game Summary Pattern)

GraphContentNotes
Army ValueTotal military resource cost per player over timeEngagement zones shown as colored bands where army value drops sharply
IncomePer-minute harvesting rate per player over timeShows economic advantage shifts
Unspent ResourcesCredits on hand per player over timeHigh unspent = floating resources (coaching signal)
WorkersHarvester count per player over timeEconomic investment tracking
APMActions Per Minute per player over timeActivity patterns and fatigue

Graphs are clickable — click a point on any graph to jump the replay to that timestamp.

Build Order Timeline

Side-by-side per-player build order timeline showing:

  • Unit and structure production events as icons on a horizontal time axis
  • Upgrade completions marked with arrows
  • Gap periods visible (idle production = coaching signal)

Heatmaps (Analysis Mode)

Accessible via [Summary] → Heatmaps tab:

HeatmapContent
Unit DeathWhere units died on the map (red = high density)
CombatWhere engagements occurred (intensity = resource cost traded)
Camera AttentionWhere the player’s camera spent time (from CameraPositionSample events at 2 Hz)
EconomyWhere harvesters operated (resource field usage patterns)

Heatmaps render as semi-transparent overlays on the minimap or full viewport.


Replay Bookmarks

Users can mark moments for later reference:

  • Add bookmark: Ctrl+B at current playhead position
  • Name bookmark: Optional text label (default: Bookmark at mm:ss)
  • Navigate: / to jump between bookmarks and event markers
  • Bookmark list: Accessible via the replay menu; shows timestamp + label for each
  • Persistent: Bookmarks are saved alongside the replay file (in a sidecar .icrep.bookmarks JSON file, not modifying the replay itself)

Voice Playback

If voice was recorded during the match (opt-in per D059 consent model):

  • Per-player voice tracks toggle in the transport bar: [Voice ▾] dropdown lists each player’s name with a checkbox
  • Voice tracks are Opus-encoded, aligned to game ticks
  • Mute/unmute individual players without affecting others
  • Volume slider per track (accessible from dropdown)
  • Voice playback automatically syncs with replay speed (pitch-corrected at 2x; muted above 4x)

Post-Game Summary, Sharing & Creator Tools

Full section: Replay Analysis, Sharing & Tools

Post-game summary screen (tabbed: overview/economy/military/build order/heatmaps), replay sharing (Match ID system, file-based, Workshop collections, P2P distribution via p2p-distribute), video/clip export (.webm VP9+Opus), cinematic camera tools (keyframe paths, lens controls, letterbox), moddable observer UI (YAML layouts, Workshop-distributable), live spectator mode (mid-game join, broadcast delay), foreign replay playback (D056 divergence indicator), replay anonymization, replay settings, platform adaptations, and cross-references.