- Darts: native 500-point match against Max with sway/fatigue mouse aim, parabolic throw camera, raster arm animations, and 16 camera-relative flying dart views - AI Observer: autonomous spectator mode for Hold'em, Blackjack, Durak, and Billiards with profile isolation and playback controls - Fortune Session: raster sprite packs, mist/orb animations, tarot divination spreads, and pack tools - Hall Integration: wall dartboard in lounge, observer terminal dispatch, and bot turn hooks - Packaging & Verification: updated installer streaming hash, synchronized launcher, passing check suites and release smoke checks
49 lines
2.3 KiB
Markdown
49 lines
2.3 KiB
Markdown
# Native AI Observer
|
|
|
|
The observer lounge opens a game selector rather than the old unavailable modal.
|
|
All gameplay, decisions, rendering and input remain MASM32. No neural model or
|
|
network connection is used.
|
|
|
|
## Games
|
|
|
|
- Heads-up Hold'em: the existing bot decision is shared by both seats.
|
|
- Blackjack: an autonomous first seat plays against the normal dealer.
|
|
- Durak: both throwing-in and transfer variants use the same legal-move bot.
|
|
- Billiards: both pyramid and eight-ball seats use the existing shot planner.
|
|
|
|
These are real rounds using the normal shuffled decks, settlement and billiard
|
|
physics. The observer does not generate scripted winners. Both poker and Durak
|
|
hands are visible to the spectator, but each bot still sees only its own cards
|
|
and public information. Blackjack retains the dealer's normal hidden hole card.
|
|
|
|
## Controls
|
|
|
|
Select a game with the mouse, keys 1-6, or arrows and Enter. During a match:
|
|
|
|
- Space or the pause button pauses/resumes decisions and animation.
|
|
- Tab or the speed button cycles 1x, 2x and 4x.
|
|
- N or restart starts a fresh round without adding an abandoned round to scores.
|
|
- Escape or Games returns to the selector. Escape again returns to the hall.
|
|
|
|
Completed rounds remain visible for three simulated seconds before another
|
|
round starts. Each round uses a fresh virtual stack. Scores reset when choosing
|
|
a different watching session. Human gameplay commands are discarded while watching.
|
|
|
|
## Profile Isolation
|
|
|
|
The observer snapshots the player's balance, RNG state, tournament flag, bets,
|
|
game variants and blackjack/billiard opponent settings. These are restored before
|
|
leaving. Native save, NPC-contract progress and loss-protection charms have an
|
|
observer barrier. Watching does not spend personal funds, charms, grant balance
|
|
achievements, progress contracts or write the profile.
|
|
|
|
## Verification
|
|
|
|
`C:/Python314/python.exe tools/tests/check_observer.py` compiles fresh native game
|
|
and spectator procedures against existing rendering helpers. It runs 80 complete
|
|
card rounds, checks both billiard seats, pause and profile restoration, compares
|
|
runtime files before/after, and captures actual native framebuffers.
|
|
|
|
After rebuilding the full game, `--parity` checks that the shipping procedures
|
|
match the native-tested object. `test_billiards_module.ps1` additionally exercises
|
|
ordinary human/AI billiards with observer mode disabled.
|