Soul-max crowd: replay the per-group movie instead of a flat overlay #10

Merged
Yonokid merged 6 commits from GanYiZhong/YataiDONNijiiro:fever-crowd-anim into main 2026-09-09 17:10:36 +02:00
Collaborator

The 魂 max crowd was two flattened PNGs per variant, so every figure sat at one fixed position, the turtle/shiba groups lost their depth order relative to the rest of the crowd, and nothing moved.

This makes the crowd data-driven:

  • Graphics/background/fevera_N/ — one texture per crowd group (3 crowds).
  • Scripts/background/bg_data/fever_anim/f_N.lua — per-frame display list (position / scale / rotation / alpha per group) for the rise, the loop and the fall.
  • Scripts/background/bg_objects/fever_anim.lua — replays it at 60 fps; start() plays the rise into the loop, stop() plays the fall (re-triggerable, same contract as the old Fever objects).
  • fever.lua routes Fever.create to it when the data exists; background.lua picks from the 3 crowds. The old flat overlays stay as a fallback.

Result: each group bobs and squashes on its own phase, layering matches the original, and the base of the crowd lands on the band.

🤖 Generated with Claude Code

The 魂 max crowd was two flattened PNGs per variant, so every figure sat at one fixed position, the turtle/shiba groups lost their depth order relative to the rest of the crowd, and nothing moved. This makes the crowd data-driven: - `Graphics/background/fevera_N/` — one texture per crowd group (3 crowds). - `Scripts/background/bg_data/fever_anim/f_N.lua` — per-frame display list (position / scale / rotation / alpha per group) for the rise, the loop and the fall. - `Scripts/background/bg_objects/fever_anim.lua` — replays it at 60 fps; `start()` plays the rise into the loop, `stop()` plays the fall (re-triggerable, same contract as the old Fever objects). - `fever.lua` routes `Fever.create` to it when the data exists; `background.lua` picks from the 3 crowds. The old flat overlays stay as a fallback. Result: each group bobs and squashes on its own phase, layering matches the original, and the base of the crowd lands on the band. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
GanYiZhong added 2 commits 2026-09-09 03:49:48 +02:00
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The 魂 max crowd was two flattened PNGs, so every figure sat at one fixed
position, the turtle/shiba groups lost their depth order, and nothing moved.
The crowd is now data-driven: one texture per crowd group
(background/fevera_N) plus a per-frame display list
(bg_data/fever_anim/f_N.lua) covering the rise, the loop and the fall, replayed
by bg_objects/fever_anim.lua at 60 fps. Every group bobs and squashes on its
own phase and layers exactly as authored; the base of the crowd lands on the
band. Three crowds are shipped; the old flat overlays stay as a fallback for
skins without the data.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
GanYiZhong added 1 commit 2026-09-09 04:55:29 +02:00
The original's random pool only holds fever_effect1 and fever_effect2;
fever_effect0 is a single figure parked off-screen, so picking it showed an
empty crowd at 魂 max. Drop it and pick from the two real crowds.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
GanYiZhong added 1 commit 2026-09-09 05:05:12 +02:00
The original advances the movie at 120 Hz, so the bob ran at half speed, and it
paints the crowd after the bottom band, not under it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
GanYiZhong added 1 commit 2026-09-09 07:37:24 +02:00
Checked against the original: the crowd bobs at half the speed the 120 Hz
step gave it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
GanYiZhong added 1 commit 2026-09-09 09:12:21 +02:00
The original re-times this movie to the song (the same frame sync the dancers
use): the 40-frame bob is one beat, so 60 fps only at 90 BPM.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Yonokid added 1 commit 2026-09-09 17:09:08 +02:00
Yonokid merged commit 9b08a5d4df into main 2026-09-09 17:10:36 +02:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Yonokid/YataiDONNijiiro#10