KAZIK/docs/WORLD_DRESSING.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.3 KiB

Hall and Street Dressing

The game still runs entirely in MASM32 assembly. The Python packer and capture checker are offline developer tools, not another game implementation.

Hall

  • Standing eye height is 1.05 world units. Basement eye height remains 0.85, including its stair elevation. Gameplay, table sizes and NPC routes are unchanged.
  • Six framed paintings and eight sconces are actual depth-tested wall planes. They stay attached to the architecture as the camera turns and do not occupy the walking area. They do not use camera-facing furniture billboards.
  • A static 256x256 light map is rebuilt when the hall map is initialized. It contains the existing chandeliers, lounge lamps, bar lights and new wall lights. Radial falloff is quadratic, and solid map tiles interrupt the light rays.
  • A separate contact map darkens the carpet underneath lounge furniture. This is not a full dynamic shadow renderer for every NPC and table.
  • The lighting pass runs after the world but before the HUD. It computes a gain per 2x2 area and shades each original pixel separately, retaining texture detail. It is skipped for the basement, outside scenes and when explicitly disabled.

Street

  • Walking eye height is 1.15 plus the six-centimetre pavement elevation. Seated eye height and the ignition/waking animation remain unchanged; the rising phase interpolates to the new standing height.
  • Building storeys are 1.8 units instead of 1.2. Their bases stay on the ground.
  • Hydrants, mailboxes, newspaper boxes, bollards and parking meters have individual dimensions, smaller than a standing person. Fence height is reduced as well. Bushes and the discarded billboard benches remain disabled.
  • Low curbs separate roadway and pavement. Paving is drawn in individual metre sections, not one stretched street-length texture. Raised sidewalk props share the curb's floor anchor. The anchor is recalculated after each pedestrian/car update, so newly positioned walkers do not keep their old ground height. Props beyond the raised section and road vehicles stay on the lower ground.
  • Three iron drains sit beside the curb, outside the walking strip. Existing window/lamppost light maps also shade the new paving.

Artwork and Verification

assets/sprites/hall/wall-paintings-v6.png was produced with the built-in image generator. Its prompt is recorded in prompts-v6.json. The offline packer adds a small procedural iron material and writes world-dressing-v6.bin (three 128x128 BGRA frames). Loading validates dimensions; missing art is safely skipped.

Run tools/tests/test_casino_actions.ps1 -SkipPreview for native checks of surface loading, light occlusion, repeatable baking, floor anchors, prop scale, unchanged gameplay RNG/bank/map, existing interaction paths and framebuffer captures. Then tools/tests/check_world_dressing.py --parity compares the tested and shipping procedures and validates the native captures under build/actions/world-*.bmp.

test_world_dressing_probe.ps1 is a quick development preview against a saved prior-release object. It only changes COFF symbol visibility in a test copy and links current dressing/surface routines without patching instructions. It is not evidence of shipping integration; the complete native action suite and shipping parity check are required before publication.