Skip to content

feat: the matrix style: bullet time on the climax kill, third person until the fight - #67

Merged
duffarn-dev merged 1 commit into
developfrom
feat/matrix-style
Nov 4, 2026
Merged

duffarn-dev merged 1 commit into
developfrom
feat/matrix-style

Conversation

@duffarn-dev

Copy link
Copy Markdown
Owner

The user's decisions (2026-11-04), after the bullet-time spike, whose result they called "exactly what I wanted" (filmer/m6-kamera-test/bullet-time-wall-e.mp4):

  1. Bullet time goes on the climax kill in every film.
  2. Third person only on the climax clip, "as cinematic before you meet someone to shoot".
  3. Both go in a new matrix style. Separate config switches can come later if they're needed. They exist as keys, because a style can only set keys that are in config.example.toml.

What it does

  • Bullet time ([effects].replay_style = "bullet_time"). It's a kind of instant replay, so it reuses that pipeline: the timeline, the drop sync simulation, the rewind into it, and the impact sound.
    • Render: the job gets one more clip, <climax>_bt. That's 2.3 s around the kill (−1.73 s to +0.61 s) at 480 fps, with a 360° camera path around the player made by lib/campath.py (feat: camera paths that circle the player, for HLAE (Stage 4 M6) #64) from the demo's positions:

      • radius 120, at eye height
      • from 1.27 s before the kill to just after it
      • a key every 4 ticks

      These are the spike's numbers. It replaces the victim's angle, so it costs about the same.

    • Edit: _replay_plan picks the replay's source, window, speed and badge, and both the simulation and the build use it, so they agree. Bullet time is _bt from 1.4 s before the kill to 0.3 s after, at 0.25× (120 real frames a second), without the REPLAY badge.

    • Always on the climax: pick_replay_clip skips the "big enough" check for bullet time.

    • Fallbacks: if the demo can't give the positions, there's no _bt clip and the normal replay is used. If the _bt clip is missing at finish, the normal replay is used with a note in the report.

  • The cinematic approach ([render].cinematic_approach = "climax"):
    • The climax clip's cfg is mirv_cmd addAtTick start+8 "spec_mode 3", then "spec_mode 2" 1.5 s before its first kill. It's on ticks because spec_mode straight in the cfg is undone by CS Demo Manager's camera (the spike's finding).
    • It needs at least 1 s of third person, or it's skipped.
  • Job schema 1.5: a clip can carry "campath". worker.py writes it to <work dir>/campaths/<run>_<clip>.xml and puts that path where the cfg says {campath}. The render PC needs this worker.py and a restart.
  • matrix: hype's cut with bullet time, the approach, lime glitch text, a light glow, and glitch and zoom transitions.

How it was tested

tests/test_bullet_time.py (new):

  • The worker writes the path and fills {campath}, and leaves other clips alone.
  • The render job:
    • the _bt clip at 480 fps on the right ticks, with its path and cfg and its own sequence number
    • no victim angle
    • the climax's cfg switches at tick 5008 and 5544
    • no camera on other clips
    • without a path, no _bt clip and the victim's angle back
  • The replay:
    • hype skips a one-kill climax and matrix doesn't
    • the plan falls back with a note when _bt is missing
    • hype keeps the REPLAY badge
  • A built bullet-time replay is 7.80 s (1 s rewind + 1.7 s at 0.25×) with no badge.

test_highfps (schema 1.5), test_styles, test_render_modes and test_drop_sync pass. A real matrix film follows once the render PC runs this worker.

🤖 Generated with Claude Code

…until the fight

Bullet time ([effects].replay_style = "bullet_time"): the climax kill's
replay is a camera circling the player once, a 2.3 s clip at 480 fps with
a campath from the demo's positions, played at 0.25x. The cinematic
approach ([render].cinematic_approach = "climax"): the climax clip in
third person until 1.5 s before its first kill. Job schema 1.5: the worker
writes a clip's campath and puts its path in the cfg.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@duffarn-dev duffarn-dev added this to the v0.4.0 milestone Nov 4, 2026
@github-actions github-actions Bot added the feature A new feature or effect label Nov 4, 2026
@duffarn-dev
duffarn-dev merged commit 100f233 into develop Nov 4, 2026
5 checks passed
@duffarn-dev
duffarn-dev deleted the feat/matrix-style branch November 4, 2026 19:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature A new feature or effect

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant