KAZIK/docs/world-pool-v4.md
Artvasil09 3ad5bf4c9d Develop assembly-only casino scenes and native games
Add native Durak, poker, blackjack, roulette, Buckshot and billiards scenes with animation assets and regression tests. Improve arrival, city, hall, profiles, shops, audio and exit handling; remove the portable C game core and refresh shipping executables.
2026-10-08 22:39:19 +03:00

50 lines
2.5 KiB
Markdown

# Native world and billiards update
All game code in this update is x86 MASM. Python only packs artwork and checks
framebuffers. Existing C# launchers are packaging utilities, not the game engine.
## Street
- The camera walks on the north pavement after crossing from the alley.
- Traffic waits for the crossing and continues from its stopped position.
- Only the two entrance guards remain. Road objects no longer use guard sprites.
- The avenue continues through an intersection into staggered city blocks.
No distant building spans the entire road.
- Per-pixel depth of distant buildings survives foreground depth preparation.
- Seven storeys share one roof/texture projection and taller floor spacing.
- Walking pedestrians, benches, hydrant, mailbox, newspaper box, bollards,
planter, parking meter and fence use separate depth-tested sprites.
## Casino
- The bar can be activated from its entire serving edge, but not from staff space.
- Highball, red cocktail and water use separate preparation and drinking frames.
- Cabaret has physical stage sides, back curtain, wings, steps and a truss.
Its former full-stage billboard is not drawn. Players cannot enter the stage.
- Native regression checks verify visitor anchors are not inside map walls.
## Billiards
- Click or drag on the cloth to aim; left/right arrows refine the direction.
- Click or drag the force slider, or use up/down arrows, before shooting.
- Space or the Shot button uses the selected power without wrapping its value.
- The aim guide uses Q16.16 consistently with the cue and physics positions.
- Balls are captured only within visible 8-pixel pocket mouths. Corner jaws and
cushion openings agree with these mouths; outer bounds prevent escaped balls.
- Potted balls visibly sink, then remain in a tray. A scratched cue is placed
through the normal ball-in-hand mode instead of being silently discarded.
- A break eight is re-spotted with full ball-diameter clearance.
## Offline validation
`tools/tests/world_regression.inc` exercises the complete camera/car route,
front/staff bar access, stage collision, six pocket approaches, force input and
100 different-angle/different-force breaks through actual native functions.
`tools/tests/check_hall_frames.py` checks new packs and sixteen native frames,
including three distinct drinks. Screenshots are in `build/actions`.
## Art
Built-in `image_gen` generated the versioned sources in `assets/sprites/hall`.
Prompts: `assets/sprites/hall/prompts-v4.json`. Observed atlas gutters, true alpha,
common scales and foot anchors are normalized by `pack_world_v4.py`.