Jesse A. Green / notebook

RL Recorder: replay files to every-player 4K video

Rocket League replays turned into 4K60 videos with every player's view side by side. 55 public videos. Paused.

paused Paused after a Sept-Oct run.

AI did
Most of the code, match recaps
I did
Rules, review of new video formats

Works

  • 55 public every-player videos (Sept-Oct 2026).
  • Reconstructed stick direction matched the known sign 79% of the time on one test game.

Designed only

nothing recorded

Failed or missed

  • No automated test suite or version control yet; checks are render smoke tests.
  • Camera reconstruction for name tags was a median of 50-80 px off in general play, so it stays off.
  • A game patch once broke replay parsing until the parser was updated.
  • Some 2v2 batches end one view short.

1Problem

A Rocket League replay file holds network data, not video. Only the game can render it, one camera at a time. So you can't watch every player's view side by side, or see what their hands were doing. This one is outside security.

2What I built

An OCR-driven agent loop operates the game's built-in replay viewer through a 23-state machine: launch, menus, find the replay row, verify the panel, watch, record, exit. It works on saved replays only and will not start while an online match is running.

Each replay becomes a 4K60 video with every player's view side by side, and a 21-table SQLite database. Stick input that the replay does not store is reconstructed from the car's physics. An LLM writes a short recap from the match data.

Four synced Rocket League player views in a grid, with a radar, a central score and clock, an input panel for each player, a demolished card on one view and a stats table; other players' names blurred
Figure 1Each player's camera locked to one clock, with a radar, per-player input panels (stick reconstructed from physics), a demolition card and live stats. Other players' names blurred. full size, 1,600 px

3How AI was used

Claude Code wrote most of the code: 17 Python modules, about 12,400 lines. The recap uses Claude through the CLI under a "facts only from the sheet" rule, with a data-driven fallback. No custom model was trained; the stick and camera work is physics and geometry.

4Results

55 public every-player videos (Sept-Oct 2026) in the playlist "Every Seat, Same Second". The reconstructed stick direction matched the known sign 79% of the time on one test game.

A measured negative result: camera reconstruction for name tags was a median of 50-80 px off in general play, so that feature stays off.

The same four-view layout at full time, with a final-score card, radar, input panels and stats; other players' names blurred
Figure 2At full time: final-score card, radar, input panels and stats across every player's synced view. Other players' names blurred. full size, 1,600 px

5Status and limits

Paused. Mostly unattended, with a person reviewing test builds before any new video format is published. A game patch once broke replay parsing until the parser was updated. There is no automated test suite or version control yet (checks are render smoke tests), and some 2v2 batches end one view short.

6What I learned

OCR doubled as free ground truth: the game's own name tags scored the camera model automatically. That is how I knew to keep that feature off.