What tech stack would you use today for a multiplayer board game?<p>- 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<p>For communication I was thinking about websockets, but this would limit the amount of parallel connections / games a lot.<p>I am thankful for every comment mentioning libraries / stacks and why I should consider them.
Have you heard of Hathora: Multiplayer Game Development Made Easy?<p>- <a href="https://hathora.dev/" rel="nofollow">https://hathora.dev/</a><p>HN Discussion:<p>- <a href="https://hw.leftium.com/#/item/30442072" rel="nofollow">https://hw.leftium.com/#/item/30442072</a><p>- <a href="https://hw.leftium.com/#/item/31084779" rel="nofollow">https://hw.leftium.com/#/item/31084779</a><p>- <a href="https://hw.leftium.com/#/item/31934181" rel="nofollow">https://hw.leftium.com/#/item/31934181</a>
Have you looked at Vassal? <a href="https://vassalengine.org/" rel="nofollow">https://vassalengine.org/</a><p>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.<p>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.
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).<p>- 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.<p>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.<p>It being me, there is a CICD system somewhere running tests for pretty much anything.
If I was building a game side project, I would personally go:<p>- React Native frontend<p>- .Net Core backend<p>- NGINX webserver, on a bare metal Linux VM of course<p>- SignalR for web sockets<p>- Mysql for long term data storage<p>- Redis for caching<p>- Mailgun for sending app emails<p>Did I miss anything?
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:<p>- <a href="https://boardgame.io/" rel="nofollow">https://boardgame.io/</a><p>- <a href="https://www.colyseus.io/" rel="nofollow">https://www.colyseus.io/</a>
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.
I'm surprised nobody suggested Godot.<p>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.