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:
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.
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’s 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.