3.2 KiB
Bowling Lounge
The bowling lounge is a walkable room, not a player-controlled bowling minigame. Enter through the wide opening in the north wall of the main casino, near the slot-machine side of the hall. Walk through to enter or leave; no interaction button or timed stair/elevator animation is used.
Room
- Eight lanes with wooden approaches, gutters, ten pins and overhead displays.
- Three occupied lanes and five free lanes.
- Paired sofas, ball returns, dining booths, a staffed bar and circulating guests.
- All ten visitors use the shared character cast, including seated, drinking,
walking, pick-up, throwing and return animations. See
SHARED_CHARACTERS.md. - E sits on an available lounge seat or gets up. W/S also gets up.
- The bar uses the existing drink purchase flow and restores the room camera.
All room geometry, rendering, input, scoring and visitor simulation run in MASM. Furniture is built from fixed world-space surfaces, not rotating room billboards. Human sprites retain the game's existing 2.5D presentation.
Simulation
Each occupied lane owns a timer, rack mask, two players, frame counters and roll history. The sequence is pick-up, approach/release, ball travel, pin impact, pinsetter sweep, return and a pause before the next attempt/player. Scoreboards use native ten-frame bowling scoring, including strike/spare bonuses and tenth-frame bonus balls. These exhibition games do not change the bankroll.
The room owns its random state; visitor games do not consume the casino RNG. Simulation pauses when the player is in an unrelated room. Artwork is loaded on the first visible entrance/visit, retained for subsequent visits and freed with the other hall assets. No city mesh or rooftop OpenGL pass is used here.
Sources And Rebuild
src_graphics/bowling*.inc: native room and lane simulation.tools/generators/pack_bowling.py: offline atlas packing, frame normalization, in-between frames and furniture/collision tables.assets/sprites/bowling/: retained image-generation sources.assets/animations/bowling/: packed shipping assets.
Image-generation source briefs: twelve bowling-room material swatches (maple, teal/coral textile, acoustic panels, mural, marble, metal and ball-return front); a whole-body male approach/underarm-release/pick-up sequence; the corresponding female bowler sequence; four distinct seated adult visitors in idle and conversation/drinking poses. The edited female sheet preserves transparency. These are original generated assets, not extracted FNAF artwork.
Run the offline packer with Python, then build the MASM executable normally.
Checks
tools/tests/check_hall_expansion.py --bowling-only compiles fresh assembly and
checks entrance visibility, walkable access, both room transitions, lane/furniture
collision, sitting/restoration, 600 simulated seconds of lane lifecycles, perfect
game/all-spare/open-frame score vectors, and captures room/throw screenshots.
The complete hall suite includes the same bowling checks alongside existing
stairs, doors, rooftop, fortune-room, bar and cabaret regressions. --parity
compares the tested procedures with the shipping assembly object.
Screenshots are native framebuffer captures, not a substitute for final manual playtesting on the target laptop.