Skip to content

Full fifteen-ball pool rack and centered side-view cameras - #148

Merged
dop42 merged 1 commit into
mainfrom
feat/pool-full-rack-side-camera
Oct 24, 2026
Merged

dop42 merged 1 commit into
mainfrom
feat/pool-full-rack-side-camera

Conversation

@dop42

@dop42 dop42 commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Replace the three-ball prototype with a white cue ball and fifteen distinct object balls in a five-row triangle. Render the object balls with the game's vanilla ball_c..ball_q meshes; existing configuration receives the complete set automatically, with an optional fifteen-entry MODELS.objects override. Practice reracks only after all fifteen pockets, solo challenges require a full clear, and the existing points duel scores all object balls equally. Tournament eight-ball group/black-ball rules are outside this change.

Center the aiming camera directly on the cue ball and shot axis. Follow shots from the long side of the table instead of overhead, fitting the entire cloth from the configured dimensions. Middle mouse and spectator viewing use the same side framing; OVERVIEW_HEIGHT remains compatible as the side-view elevation.

Keep 120 Hz authoritative swept physics, with a bounded 128-contact ceiling per tick for dense break contacts. Publish two endpoint frames every 50 ms to bound full-rack transport and client validation costs, retain interpolation, and cache model resolution instead of rebuilding fifteen paths per render frame.

Validation: all 68 Lua audits pass. Pool physics/authority/playback checks include fifteen dense breaks at several angles/powers, all sixteen starting balls within each supported table size, no overlaps, energy conservation and final settling. Tests cover full-rack mode completion, partial clear staying active, sixteen distinct rendered models, real menu entry, transport node limits and camera frustum coverage for nine size/orientation combinations at 4:3. Maximum measured enabled-client callback including two full frames, match metadata and twelve sound events: 3,800 instructions. Lua syntax, sandbox scan, pool UI lifecycle and diff checks pass. Full suite: 6,722 checks, zero failures. GitHub CI must pass before merging.

Not yet verified in game: vanilla mesh rendering/materials, cue-ball centering and side-view comfort need a live reconnect test on the deployed client. No preload or ArchiveXL change is required. Table placement remains unchanged.

Closes #147. MANUAL updated; documentation site follow-up: opx77-framework/opx77_doc#19.

@dop42 dop42 added the needs-in-game-test Written and tested offline; must be checked on a live Open77 client label Oct 24, 2026
@dop42
dop42 merged commit 84e080d into main Oct 24, 2026
3 checks passed
@dop42
dop42 deleted the feat/pool-full-rack-side-camera branch October 24, 2026 18:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-in-game-test Written and tested offline; must be checked on a live Open77 client

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Full 15-ball rack and centered side-view pool cameras

1 participant