From one software developer to another, hi!
so what’s the solution? the server needs the clients to perform their own calculations, I don’t believe for a second amazon actively simulates every action on their server, and you shouldn’t either.
I believe you are sincere in your understanding that this doesn’t happen…but it actually does. Ok, so let me slightly qualify - there are areas of the world we don’t care about precision in simulation very much, like your house. And generally there are savings present in non combat, non physically interactive areas elsewhere.
But in combat (and almost all situations), you are creating control inputs to a character that is fully simulated on the server. We don’t even take action inputs from clients, we take the intent of action (the “I pressed a button” example).
Even movement is server based, and you might have seen the effects of this - your client can predict where it might go, and sends that prediction to the server, but the server actually moves the character (or not, depending on how collision/movement surface rules work out) and sends back “ok, you’re here at X” to the client. The client is continuously interpolating between its optimistically assumed position - it figures anywhere it asks to go is valid - versus what the server is telling it. When this is out sync, you will get yanked back to the server position when the client is too far out of place to interpolate. This is commonly called rubber banding, and occurs in other games too, but in our model it’s not the server doing a rough bound check on client movement, it’s the client learning the server position of the character skeleton, which is the only one that matters.
As you comment, this is unusual for even server based games, but we wanted to build a model that was fundamentally resistant to some of the cheats we see available for other games, one that would work for our style of skill based combat where position and volumes matter second to second in gameplay. You describe where this would require a large amount of CPU power, and it does. A typical single server of New World is actually a set of multiple EC2 instances, and just one of those instances has tens of virtual CPUs. It’s a ton of CPU power - and anything I say further there will sound like a plug for AWS, so I’ll just leave it at that.
This does not prevent us from having bugs, even ones that occasionally feel like “cheats”. But those that occur aren’t because the client is asserting some state to the server - it can’t. We get on them as soon as we know about them, sorted in priority based on their perceived impact to gameplay.
my personal favorite bug is the regenerating perk ceasing to work when your food buff expires
Noted!