Colyseus for a turn-based singleplayer game with server authority?

Hello. I have recently deployed a GameFi application (https://hashandslash.io/) that is a singleplayer, turn-based roguelike game. As it's GameFi, the game needs to be server authoritative despite being singleplayer.

Originally I wrote the game server in socket.io from scratch, and I'm looking for a solution that will scale automatically before I take it to Mainnet. So I have some questions about Colyseus:

  1. I currently update the client by sending a single protobuf message containing the results of each turn. Does Colyseus support protobufs for gamestate updates?

  2. It looks like Colyseus is designed for realtime games specifically. I only need to send a gamestate update whenever a player submits a valid turn. Is there an option for turn-based gamestate updates?

  3. While the game is singleplayer, I also give other players the option to observe a game by joining its socket.io room. Is this something I can recreate in Colyseus? Would I be able to give players a global list of active games across whatever horizontal scaling you're using?

  4. I need to be able to encrypt/decrypt certain server-side messages which are stored in a DLT. Does Colyseus support any kind of key rotation/management system for individual games? (This one isn't too big of a deal as long as I can use the aws sdk).

  5. Lastly, there's various DLT-related stuff the server needs to do, including storing and accessing private keys. Is there any limitation wrt outbound traffic (specifically to the Interplanetary File System) on Colyseus, and does Colyseus have a guarantee as to account privacy (no individual employee has access to a client's server info)?

Thanks.

Hi, bralz.

  1. No, unless you modify the source yourself.
  2. Yes, Colyseus can be used for turn-based games. ex: https://github.com/colyseus/cocos-demo-tictactoe
  3. Yes, there's a buildin room "Lobby": https://docs.colyseus.io/colyseus/builtin-rooms/lobby/
  4. You need to implement it yourself.
  5. No such an out of box feature. You need to implement it yourself.

Also have a look at Meteor. That work meet a lot of your requirements for a turn based system