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.
50 lines
2.5 KiB
Markdown
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`.
|