Inspiration
We loved the idea of rockets, and then realized a rocket launch and a crash game are the same story: something climbs, the tension builds, and you have to decide when to bail out. So we built Ascent, where every round is a launch and every player is a pilot. We also wanted something you can play with friends in the same room, not just alone on a screen.
What it does
Ascent is a live, multiplayer crash game you join by scanning a QR code. Everyone picks a name, gets play credits, and boards the same rocket as a shared multiplier climbs. Cash out in time and you win, wait too long and you crash. A live leaderboard updates after every round on the host screen and on every phone, and the whole game works in English and French. It’s all play credits, never real money.
How we built it
A Python and FastAPI server runs every round, bet and payout, so phones only send actions like “bet” and “cash out” and nobody can fake a win. WebSockets keep the host screen and every phone in sync in real time. The front end is plain HTML, CSS and JavaScript with a custom flight scene, where astronauts with name tags eject from the rocket. We tested it with pytest and with Playwright, which plays the game with a host and several emulated phones.
Challenges we ran into
Phones lock their screens and lose Wi-Fi mid-round, so we built reconnecting seats with server-issued tokens. A QR code pointing to “localhost” is useless on a friend’s phone, so the join link now comes from a setting that points at the laptop’s network address. We also fixed layout bugs that only appeared on certain screens, and we compared screenshots pixel by pixel after every change so the existing UI stayed intact while teammates merged work in parallel.
Accomplishments that we’re proud of
We’re proud of a complete scan-to-leaderboard multiplayer flow that works in two languages, and of a server that owns the game so every round can be trusted. We’re also proud of the test suite that plays like real people do, and of shipping it all as a team without breaking each other’s work.
What we learned
Multiplayer is mostly about what happens when someone disconnects, not when they connect. Anything that matters belongs on the server, never on the player’s device. And tests that behave like real players catch the bugs that ordinary tests miss.
What’s next for Casino Style Crash Game (Ascent)
We want to host it online so anyone can join a room, store game data so it survives restarts, and bring the astronauts and name tags to the multiplayer screens. We also plan to connect Ascent to a player-protection tool, so the game’s play data can help spot risky behaviour early
Built With
- css
- html
- javascript
- powershell
- python
- shell
- typescript
Log in or sign up for Devpost to join the conversation.