What is the best practice for game state manage

i am writing a simple poker game
i think nakama is very suitable for tiny room pvp game and turned-based card game.
flow the framework’s rule, i always have to re-create a GameLogic instance which may contains the game logic and game flow control process etc. and restore the state from the state data that saved in match handler scope.
I have a gut feeling that is only ok with tiny games, if the game is complex and the state data is massive, Is this still an appropriate approach? i mean re-creating GameLogic instance and run a tick-like method in loop. if the tickRate is more high frequency, it would be a challenge of performance.

it is hard for me to image use Nakama serve as a MMORPG server side

Yes. When I started the game it looked simpler just to serialize and deserialize it every time the tick runs. but its not viable solution for complex games with 100s of class objects. Dont know why nakama not opted for single VM per server with state of the server logic.

so what type of game your are currently working at?

Its a card sequencing game. when adding any feature even a variable we have to make sure its serialized manually that’s the sad part.

I am working on a similar game, 4 vs 4, turn based card type game. I do not serialise the game data. At the beginnings of the game, the server creates the initial state and sends it to each client. Then I track the game state within the match_loop using the minimum amount of data. For example, I would only store the card id rather than the full card object. When a card is discarded, I send a opcode for the card discarded action along with the card id and process that. I am not storing the full match state, only the key info that I can use to validate the game state.

This may not be the best approach but seems to be working for me.

I do the same, Also I faced difficulty building AI logic with this math loop. long running AI gameplay behaviour is impossible to do the conventional way. Is there any workaround for this? Now I run the entire AI logic in one tick and I handle the flow in the client using the data flushed from the server.