My game is almost at release stage. It’s a competitive turn-based multiplayer for 2 players with authorative short matches, about 5 minutes lenght. Tick-rate is 1 second. Each match ends with a server writing records to leaderboard and user’s data.
For now I have 1 nakama droplet running on digital ocean with this configuration:
and default docker and cockroach db settings from documentation.
Also currently I have asset bundle’s storage at the same droplet with about 100mb of bundles for both mobile platforms, that each user will download after install.
What do I have to do from this point, to provide 100k unique users with stable online gameplay?
And what is a check-list of to-dos before going live?
There are couple of things you should do before going live:
Split DB/Game server to multiple servers. So deploy cockroach or postgressDB on different services, and use droplet only for running nakama/prometheus. This will ease pressure on cpu and disk.
Profile bandwith usages. If game is multiplatform take into consideration webgl incognito mode where it will download data all the time.
Don’t host files on same server where it is nakama. If you are on DO buy storage, and host there.
Check if game is full server authorative, so client should only playback states.
Make good customer/debugging/profiling tools, once errors/bugs starts happening due to disconnections you will need a good way to recreate/profile them
Implement reconnect if you don’t have already. Players are pissed off, if there isn’t and they have “spent” tokens or something like that
Implement AI, dead game without players is no good for users, but if players are playing against AI it will be fun for a while. The better AI the better challenge for them.
If you are deploying for full world, on DO on single droplet prepare for a lot of disconnections and some player to miss somethings. so validation of player state is a must.