Multiplayer Hold’em & game platform (Alpha)
Founder & Sole Engineer · Active Alpha
Server-authoritative Rust multiplayer sessions, auditable fairness, and 2D/3D tables.
Founder & sole engineer owning the 62-crate Rust authoritative server, reusable game-core / realtime-core crates, PostgreSQL persistence, and React/TypeScript 2D & 3D clients.
Live public alpha at play.ganbate.io supporting 2–11 player private Hold’em invite rooms, solo/shared table modes, and instant 2D/3D switching; core session/replay crates published on GitHub.
Engineering & product case study
Problem & workflow context
Real-time multiplayer card games break player trust if clients can observe unrevealed cards, if transient WebSocket drops corrupt table state, or if heavy 3D scenes block low-power devices from joining an invite link.
Decision & rejected alternative
Separated pure deterministic state transitions and monotonic GameVersion optimistic concurrency into a zero-I/O Rust library (game-core) paired with commit-reveal seeded RNG checkpoints and bounded cursor replay (realtime-core). Rejected stateful Node.js timers/floating-point pot math and rejected client-side state reconciliation so rejected actions never mutate state or consume randomness.
Failure encountered & diagnosis
Under simulated packet loss and rapid tab reconnects, returning clients occasionally re-applied a turn event twice or missed an action when a reconnect raced an in-flight room broadcast. Diagnosed with sequence-numbered envelope traces and resolved using epoch-bound DeliveryCursor recovery that atomically falls back to a player-filtered snapshot whenever a client cursor trails the ring buffer.
Verification, role & current status
Verified with Rust property tests, per-seat serialization privacy audits (proving opponent hole cards never enter wire envelopes prior to showdown), and golden-hand replay fixtures where SeededRandom checkpoints reproduce identical pot settlements.
Architecture & reproducible evidence
- Reproducible core contract: Current state + validated action + deterministic rules + injected SeededRandom → next versioned state + ordered events.
- Exact integer minor-unit chip accounting (value-core) prevents rounding drift across side-pot splits.
- Dual 3D table + instant 2D Performance mode so players on non-WebGPU browsers can join the same live Rust session.
Technology stack
See all 9 roles, Penn M.A.S. status, U.S. citizenship/relocation logistics, and printable résumé on one page.
Open Recruiter View & Public Résumé →