Inspiration
My 9-year-old son loves playing IO games. Recently, he asked if we could play Minesweeper together – he meant just sitting side by side and deciding about where to set the next flag together. I thought first he meant some of his IO games and wondered how that would be. Once the idea was there I built a quick Minesweeper prototype on bolt.new. Surprisingly, it turned out to be so fun that it inspired me to create a whole IO-style multiplayer version.
I had signed up for the hackathon a while ago but didn’t plan to submit anything. Two days before the deadline, I decided to give it a shot – and I’m genuinely amazed by how much I managed to build in such a short time.
What it does
SwiftMines.fun is like classic Minesweeper, but reimagined as a fast-paced multiplayer game with several modes:
- Cooperative – reveal fields together
- Competitive – race for points by revealing fields and grabbing powerups
- Teams – team-based competition
- Deathmatch – survive longer than your opponents
In competitive mode, you score points by revealing fields and collecting powerups. Powerups appear in special spots and can be unlocked by clearing the surrounding fields – sometimes even entire bomb clusters ("islets").
The map wraps around (leave on one side, reappear on the other) and has zones of different difficulty. Harder (red) zones give more points per field and each has a central 5,000-point powerup. The game ends when all eight of these powerups are claimed.
Players choose their starting point freely, but once they reveal their first field, they can only reveal fields within a radius of ten tiles around their explored area.
You can see roughly where other players have explored (with a slight blur so you can't simply deduce bomb positions) and you can't score points in those areas. If you still want to reach a powerup near someone else, you'll need to carefully find your own way through their zone.
In deathmatch, you lose one point per second to stop players from camping. You start with 30 points and must keep earning more to stay alive.
How we built it
Mostly by rapid prototyping with AI prompts on bolt.new.
Challenges we ran into
Testing real-time features like websockets is tricky on bolt.new.Bolt.new was not using two terminals to have npm run dev and npm run server at the same time. At first I tought it was not possible to run this on bolt.new, so I downloaded tried switching to GitHub Copilot but found it frustrating. I also experimented with Supabase for real-time updates, but it wasn’t plug-and-play, so I stuck with plain websockets. But combining bolt terminal and starting the server in the user terminal manually worked in the end and I just had to copy the error messages by hand. The only thing that I coulnt figgure out was how to open two sessions to test multiple users. So I had to either download and run locally or move the server to render.com - which i finally did.
Accomplishments we're proud of
I wasn’t sure if multiplayer Minesweeper with powerups would feel fun or balanced. But it turns out the gameplay works really well – it’s tense, strategic, and still keeps the nostalgic Minesweeper vibe.
What we learned
How quickly and efficiently you can prototype and deploy something playable using bolt.new.
What's next for SwiftMines.fun
I'd like to refine the multiplayer modes even more and explore new ones – like a “race” mode where all players start in a line and must reach a finish line 100, 300, or 1000 tiles away.
There are also smaller improvements planned, like fixing the slightly off minimap display and tweaking powerup placement to keep the game fresh. And setting up a dedicated server to improve sync speed would realy be needed...
NOTE: It might take some time until the backend server (render.com) wakes up, so when you test, please be patient at the "connecting to server" state. Also the overall performance is currently bad and laggy, but time is over now. I'll tweak performance after the hackaton review has been finished.
Built With
- bold.new
- canvas
- css
- css-frontend-framework/libraries:-react
- eslint
- javascript
- lucide-react
- lucide-react-backend:-node.js-real-time-communication:-websockets-(ws-library)-build-tools:-vite
- node.js
- react
- render.com
- socket.io
- tailwind-css
- typescript
- typescript-(compiler)
- vite
- websockets
Log in or sign up for Devpost to join the conversation.