- 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
56 lines
3.3 KiB
Markdown
56 lines
3.3 KiB
Markdown
# 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.
|