- 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.
HN Discussion:
- https://hw.leftium.com/#/item/30442072
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.
- 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.
- 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?
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.