This is a topic that has been part of almost every application I’ve ever worked on and yet I don’t have a good name for it. I’d love to learn more about best practices and ideally find books/research on the topic but I don’t even have a name for it to Google. I’m hoping I can describe the topic here and people can point me towards a name, or even better, books, which discuss the topic.
What I’ve been calling it now is server-client synchronization. It’s the practice of sending notifications to clients to update them when the game state has changed. The best way to describe it is with an example.
As an example consider a web-based game of Spades that is in progress. The currently active player plays a card and takes the trick. Several changes happen in the server side model as a result of this. The trick is cleared, the player has a new trick, the game possibly ended, etc.
This information needs to be communicated with the clients and there is a whole slew of options. Most likely the server is going to send events in some way (these events may even be sent by polling). The events could simply say “Player 3 played the 8 of Spades” and force the client to figure out all the corresponding changes in the model. The events could be as detailed as, “8 of Spades moved from player 3’s hand to the board, the trick was cleared, player 3 gained a new trick”.
So again, my question is. What is this topic called and how do I find books/discussions on best patterns and practices?
You may mean “lock step” synchronization.
Or just google “net code”, “client side prediction”.
Age of empires (lock step), quake, tribes and counter-strike are some of many games that have great articles about their network code (net code).