I am aware of that is a difficult question and depends on the game mechanics and
ID: 644873 • Letter: I
Question
I am aware of that is a difficult question and depends on the game mechanics and game type being applied. So, many answers can be given. For the sake of simplicity, it would be better to consider a typical online MMO game in order to make easy to find a satisfying answer.
This is the question partly related to my previous question in terms of reducing networking cost.
Ernest Adams & Joris Dormans who are the authors of the book had well described five major game mechanics which are widely used in many online games. (By the way, the book is very useful who needs to obtain new approaches to game mechanics.)
Above mentioned book describes five major mechanics as follows:
1) Physics
2) Internal Economy
3) Progression mechanisms
4) Tactical maneuvering
5) Social interaction
Of course, every game has its own characteristics depending on the game scenario and additional mechanics can be added to the game logic. However, one of the real difficulty is that deciding which mechanics are better to implement on client side and which are not. These are crucial decisions because each of them may have side effects including client side cheating risk and network bandwidth usage.
Many designer prefers to implement physics mechanics on server side in networked games because it is the most guarantied way to prevent cheating although it needs much more network bandwidth and powerful hosting investment. However, I think others are open for discussing.
We've been working to implement all above mechanics in our game project with Unity3D and C#. We had planned to implement all of them in server game logic. But now, we think that it might be possible to implement some of them in client side scripts rather than using fully authorative server. So, it means we need to implement semi-authorative server logic where some mechanics managed by server logic and others controlled in client side scripts.
We need semi-authorative architecture design ideas to speed up our project.
Thanks
UPDATE: It would be better to isolate the question. I know that, client side prediction, interpolation and extrapolation that all have to be implemented on server side. These are primary physics requirements that allow me to provide character movements smoothly. Client passes predictions, server approves them or sends back corrections. This is OK.
If we consider the internal economy, this type of games typically encompasses items easily identified as resources : money, energy, ammunition, and so on. However, a game
Explanation / Answer
Almost all of them!
Now, this does depend on the type of game of course, but surprising as it may seem, most mechanics do need to be run on the client. Note that they only need to be run on the client. The server must always have the final say. I'm talking about a simulation.
Physics are the most obvious case of all. If you jump, the server may receive that information after 100ms, and another player in 100ms more. There isn't time to confirm that you may jump until after 200ms at the least. Your client must do something. It's simulation may need to be corrected, but in most cases 200ms delays are unacceptable.
This "anti-lag" leads to many issues, and is a very complex topic which you should probably research independently.
Note that this also depends on the type of game. In a turn-based game, the server can do all the work safely, because you do not require immediate feedback.
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.