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 MMOgame 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 whichare 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) Physics2) Internal Economy3) Progression mechanisms4) Tactical maneuvering5) Social interactionOf 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 toprevent 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. ThanksUPDATE: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 games economy is not limited to concrete, tangible items; it can also include abstractions such as health, popularity, and magical power. How much risk would I take if I try to handle all of them in client side scripts in terms of cheating? In contrast, if I try to handle all of them on server side would I cause lot more traffic? How do I optimize it?Other mechanics may also include similar crucial metrics that needs to be saved.I think, anti-cheating mechanisms should be the most important thing for every commercial game developer. I seen many videos on youtube few years ago that teaches how to hack farmville game on client side.
What kind of game mechanics makes sense to be handled on client side?
c#;c++;architecture;game development;networking
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.