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

52 lines
3.1 KiB
Markdown

# 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](https://www.cyberpunk.net/en/news/30631/pre-order-your-samurai-bomber-jacket-now).
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.