over 2 years ago - TheLawRich - Direct link

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!

over 2 years ago - TheLawRich - Direct link

We were only able to partially address this in an update - we aren’t done working on preventing people from purposefully creating lag in War. We had to adjust how some AOE weapons worked and may well have changed their feel/impact - we’ll keep incrementing them until it’s balanced. Certain AOE effects were creating invisible server objects and players had worked out some interesting ways to load those up - we saw thousands of objects being created in a minute in one example. Even though they were invisible, that’s somewhat equivalent to having thousands of NPCs pop up around you. It caused…problems.

Stacking on some AOE wasn’t working as intended in the first place - there are a lot of combinations, and players find very creative ways to put them together.

(Edit because I hit save too soon) - the specific AOE issues you mention are addressed in a patch targeted very soon, after we finish testing them in high intensity combat situations.

over 2 years ago - TheLawRich - Direct link

Indeed. You might completely hypothetically, have a pool of threads, and service actions from actors on an as needed basis out of that pool in a steady rotation. Which would allow a much smaller number of threads to handle a large number of actors.

over 2 years ago - TheLawRich - Direct link

I’ll see if I can get one of the player experience team folks in to discuss - it’s a broad subject and if I tried to answer I would probably make a mistake in describing it, which wouldn’t help. I can say we’re always interested in combat being a) skillful in application b) providing good situational awareness cues so it can equally be countered with skill (aka “dont stand in fire!”) and c) intuitive in function, so it does “the right thing” when multiple effects overlap.

over 2 years ago - TheLawRich - Direct link

The purpose was not solely to be resistant to hacking, no. Similar to you, we’re interested in scale gameplay that takes advantage of such a system as well, and have ideas.

over 2 years ago - TheLawRich - Direct link

Server authority isn’t a solve to all problems. It’s just different - and I want to be careful to point out that I dont consider how some other games solve for authority “wrong” in contrast. They are just different approaches that have different pros and cons.

You can make a bug in a server authority situation just like you can in a client directed situation, and we’ve had some of those. They are disappointing and we get on them as soon as possible. But I can tell you the bugs listed in this thread aren’t because the client generated a result and sent it to the server - although a couple of them certainly looked like it, so I understand the confusion.

over 2 years ago - TheLawRich - Direct link

This class of bug is because in some cases we were waiting for client input to complete server actions. The solve for this (wildly simplified) is to not wait in those cases but just proceed. This doesn’t mean the client has control over the result of actions, it means that particular server code allowed itself to be paced by an external input. And as all the programmers in this thread would probably tell you, you never trust external input - or lack of it, in these cases.

over 2 years ago - TheLawRich - Direct link

We get a message from EAC servers when a player kills the EAC process (or it goes away for some other reason), so we do know when this happens and who is doing it.

If you see some path to exploit via killing the Steam client, please DM me. It’s possible to do, but all of the kick/ban enforcement is done by New World itself, and the Steam client isn’t used for VAC purposes. Offhand I dont see any advantage to it, but if I’m wrong, let me know.

over 2 years ago - TheLawRich - Direct link

Agreed that if this is what all Wars become, then it’s not very interesting. These are recent tactics that are being unusually rewarded by some bugs, so we’ve been working on the bugs first, then examine whether further changes to War itself are required. War is not meant to be a constant AOE fest, and that doesn’t feel very skillful to me.

over 2 years ago - TheLawRich - Direct link

No, not related, they just happened to be grouped in a common patch. The trading post is actually a separate service that runs for the most part independently. While working on of other trade post issues, the bug there was introduced. We tested, but missed the case of the actual close happening when a character was offline - so we’ve added that case to the test.

over 2 years ago - TheLawRich - Direct link

The first thing I would say is I would like to understand the circumstances of a 50 meter displacement please, I’d want that fixed. But, I can tell you the server wanted you there, possibly in error, but it wasn’t the client saying so. The client predicts where it might go, but then asks the server and the server does the movement, not trusting the client.

As for the falling issue, I’ve described elsewhere in this thread why that was happening, and the (server only) patch for that was already made.