HACKER Q&A
📣 tsp

What stack for a multiplayer board game?


What tech stack would you use today for a multiplayer board game?

- 1-6 players per game - Round based - Only one player can be active at a time - Multiple games happen at the same time - Optimally, non-technical players can spin up their own server to play on (e.g. via Electron app) - Optimally relatively cheap

For communication I was thinking about websockets, but this would limit the amount of parallel connections / games a lot.

I am thankful for every comment mentioning libraries / stacks and why I should consider them.


  👤 Leftium Accepted Answer ✓
Have you heard of Hathora: Multiplayer Game Development Made Easy?

- https://hathora.dev/

HN Discussion:

- https://hw.leftium.com/#/item/30442072

- https://hw.leftium.com/#/item/31084779

- https://hw.leftium.com/#/item/31934181


👤 toast0
Have you looked at Vassal? https://vassalengine.org/

It's a board game engine and has multiplayer support. There's also boardgame.io which looks hipper (npm), but I didn't see any screenshots of games being played.

Regarding scaling, there's articles about lots of stacks doing 1M websockets on a host; if that's limiting you, you've got a lot of players, so that's a nice problem to have.


👤 andrewallbright
If it were me, and if there is a graphical component I would use this as my stack. (Note: I am a hobbyist game dev).

- Unity + mirror (multiplayer library) for the server client. The library documentation will help with a mental model of a multiplayer game. Export the binary of whatever your target OS will be. I prefer linux. - Unity for the game client. I prefer webGL export for the client so I can host the HTML/JS/WASM like a normal static site. However; you can (also) export windows, Mac desktop apps too. - nginx to host the static site and reverse proxy to the multiplayer - systemctl units for nginx, and the multiplayer binary on some linux OS. I prefer Ubuntu.

For the code; it's all about developing a mental model of what things exist in your system and what interactions those things have with each other.

It being me, there is a CICD system somewhere running tests for pretty much anything.


👤 dyeje
Depending on your goals, Tabletop Simulator could be a good fit.

👤 hoofhearted
If I was building a game side project, I would personally go:

- React Native frontend

- .Net Core backend

- NGINX webserver, on a bare metal Linux VM of course

- SignalR for web sockets

- Mysql for long term data storage

- Redis for caching

- Mailgun for sending app emails

Did I miss anything?


👤 lavishlibra0810
You could look in peer to peer interactions for some actions on the board and websockets for keeping state of the board in sync for everyone.

👤 npretto
You mentioned electron so I suspect you're interested in games playable via browser, in that case these two come to my mind in the javascript/typescript ecosystem:

- https://boardgame.io/

- https://www.colyseus.io/


👤 TillE
Any game engine with a decent networking component will be able to handle this (if Tabletop Simulator doesn't fit your needs). Which one you choose will depend on 2D vs 3D, language preference, etc. Unity is always a safe bet when you don't have unusual requirements.

👤 penner_im_auto
I'm surprised nobody suggested Godot.

I have developed several 2d games with it, as a hobby, used a python server for mp, it was very intuitive and understandable. And it is completely free, no ads or restrictions.


👤 mmacvicarprett
This platform looks very cool! https://www.boardible.com/

👤 rtcoms
Elixir/Phoenix should be good for backend.

👤 elil17
Are you trying to make money with it? If not, just make a Tabletop Simulator mod.