KAZIK/docs/CITY_WAKE_SCENE.md
Игорь Федосеев ca62db53e9 feat: implement native billiards, scratch tickets, first-person dice, and city wake scene
- Billiards: add native Russian Pyramid & American Eight-Ball pool with physics prediction, controls, and regression tests
- Scratch Tickets: add dedicated counter, mat presentation, elliptical coin scraping, 4 ticket types, and payout effects
- First-Person Dice: add native dice scene, hand anchor frames, throwing animation, and table perspective
- City Wake & Weather: add arrival cutscene, alley geometry, weather/rain effects, and lighter/rocker animation
- World Dressing: add hall paintings, furniture packs, hall lighting, and scene regression tests
- Build & Tooling: update build.bat for modern MSVC toolchain, update launcher hash, and refresh shipping binaries
2026-10-16 12:37:40 +03:00

3.1 KiB

Alley Wake-Up

The Eblan Games intro leads into the exterior cinematic on every launch. Runtime camera, weather, sprite playback, compositing and input remain MASM. PNG generation and normalization are offline tools only.

The protagonist opens their eyes while seated on the alley ground. Bent knees remain in the foreground while a scruffy cyberpunk rocker crouches nearby and speaks. The agreed dialogue is shown as Russian subtitles, without synthesized voice: "Вставай, самурай, пора дэпнуть все в казино".

The protagonist raises a cigarette, opens and ignites a flip-top lighter, looks into the cloudy sky and exhales, then rises smoothly, turns right and discards the butt into the existing projected dumpster mouth and follows the city route to the guards. Profile selection still happens at the casino entrance. Enter can skip to the guards; existing Escape handling is preserved.

The seated view faces east, toward the rocker. Dumpsters are south of the protagonist, off-screen to their right. The separate look-right phase rotates the camera only after standing; the throw then uses the real dumpster mouth. Traffic timing follows the pre-alley duration, preserving the safe red-light crossing after the longer wake-up sequence.

There are thirty-two grounded rocker poses and sixteen lighter poses. The speaking cycle has sixteen distinct crouched poses, then eight rise/turn poses and eight walking-away poses. The coat's red SAMURAI back emblem follows the official jacket reference. Character normalization uses whole connected silhouettes rather than nominal atlas cells, so neighbouring fragments cannot move the feet anchor. Generated assets and exact prompts are under assets/sprites/arrival/wake-*; packed runtime assets are under assets/animations/arrival/wake-*.

The lighter forearm is a separate continuous leather sleeve placed underneath the animated cuff using measured per-frame anchors. It extends out of the viewport rather than ending at a floating wrist. New vent/poster/crate/cabinet materials are in alley-materials-v1.bin; wall-mounted fittings, drainage pipes, stacked crates and a floor drain use actual ray/depth-tested surfaces. The centre walking strip and the right-hand dumpster reveal remain clear. wake-v2-prompts.json records all three built-in image-generation prompts.

Rain uses three visual-depth layers with different speeds, length and opacity. Streaks blend into the rendered scene rather than replacing it with blue blocks. Ground splashes are rejected behind nearer geometry. Weather reads cinematic time, not the gameplay random generator. Looking vertically into the sky blends the raycast view into the sky rather than abruptly switching projections.

Verification uses the actual native action-test renderer, camera continuity samples, route/vehicle checks, profile transitions, packed-asset checks and framebuffer sequences. check_arrival_frames.py writes wake/ignition preview GIFs from those native captures. check_city_wake.py --parity checks dialogue, anchors and equality of shipping/tested cinematic procedures.