Original Post
This observation is always in the back of my mind when I'm playing a game. Exactly how much should the server hide from the client? Any changes to items or stats in online games are merely client-side (fake). What about coordinates though? Should the server control the players actions based on input (up, down, left, right, etc), calculate the physics based on the collision/terrain/players/forces around them, and then send the coordinates back to the player for rendering? It would seem to put a heavy load on the server since it basically has to run all the game math as well as network players (maybe a physics accelerator chip and custom programming would help). It would make sense why everyone suggests 2D before 3D since then calculations based on the map are simple. It seems to me the Source Engine does that. When I'm playing Zombie Panic: Source on a server, and it starts lagging, the NPCs, enemies, and environment all pause, and you lose control of your character. It looks similar to when your computer is lagging at 5 FPS, except you computer at 60 FPS. Some servers handle this better than others. For instance in some maps you can push a ton of barrels or boxes together and the physics collisions causes certain servers to lag more than others. Maybe this is fine for servers only hosting 1 game of 10-30 players, but not for MMOGs? One should also consider how the client character syncronizes after the server sends back the coords - if the server is slow then it won't look very smooth, and maybe the client should be allowed to calculate the physics and resyncronize when the server sends back the real coords? Should the server allow player computer's to do all the collision/terrain/forces etc. calculations and update the server of it's position? This is what I see in most MMORPGs today, like World of Warcraft, as well as older games (like Diablo) where you are allowed to alter your coordinates (x, y, z) and send back the packet. These are commercial games however, so they basically monitor for cheating, so you can't always exploit it too much or it wont let you or you get kicked or banned (check coordinate changes for jumps). Low budget MMORPGs on the other hand don't always check, and let people get away with supplying the server with fake information (coords). Both of which may or may not rely on their client also monitoring for cheating, which can almost always be bypassed. Should the server allow the players to update eachother on the code of honor? peer2peer (p2p). You see this in a lot of asain MMORPGs. I'm not a fan. You could of course have the client monitor for other players cheating and tell the server to warn him, so when that cheating player amounts a high value of warnings they are investigated and/or banned. This of course could be exploited as well by a player sending fake warnings. Warnings could be limited to 1 per account per day or something though. It sure would decrease load on the server, but at what sacrifice? I'm guessing when it comes to MMOGs, you don't really have a choice and have to get the client to do the hard work for the server, have it update the server, not the other way around (when it comes to 3D physics). Then monitor for cheating. Right? Thanks in advance.