Jump to content
  • Sign Up

Recommended Posts

Posted (edited)
4 hours ago, magickthief.6492 said:

If a code is difficult for new employees to understand, and isn't common, it seems to be called spaghetti code. So, if the code is difficult to understand or PROPRIETARY, where would the hacks come from?

There's three components in a game:

the server: it's an application ANet runs on some AWS instance and decides the damage on each skill, where do NPCs go, where do you end up after being knocked away... every single thing that actually happens in the game is decided here (except moving, jumping and THE MOVEMENT PART of dodging; endurance reduction after a dodge, however, is decided here too).
- the client: it's the thing you download. Takes care of showing you what happens on the server side, contains all the movement logic and little else beyond that.
the communication layer: it's a list of messages exchanged by server and client to keep each other updated, on what you do (so that your skills do something) and what other players do (so you can see someone is killing you). Stuff like ArcDPS reads what happens here to show you the very useful data you love.

The code is spaghettified = it's very hard to understand the internals of server and client, and change their behavior in a sensible way
What happens when a mesmer summons a clone? What happens when a specter enters shroud? What happens when a soulbeast merges? Working on that is a real nightmare, because it's spaghettiefied. I've heard the minimap used to work with forbidden black magic, just to name one.
The communication layer, however, is extremely simple to understand (literally a JSON with a list of all the things that happened: player A casts a skill, player B receives a boon, NPC walks from X to Y), and a man in the middle can send their own customized messages to force client\server to do whatever. With the position it's extremely easy, since it is client-side only and the server accepts everything received by the client as the pure truth; if someone else (the hack) poses as the client and creates a a new illegal position for the server to read, the server won't be able to notice it; hence why in this game teleport hacks are the most common exploit. ANet can't change this, however: if the position wasn't on the client-side, every minor lag would make movement so incredibly jaggy the game would be unplayable. Hence: movement becomes smoother, but someone can impersonate your client and move wherever.

TLDR: in this game, everything except dodging, jumping, running and registering your keystrokes is on the server side, and can't be tampered with. You can cheat those 4 things (with macro to fake real keystrokes and port hacks to fake real movement) and it's extremely easy to do so due to how easy it is to read\write what happens in the communication layer: but that's the extent of what you can do. I don't think hacks are anywhere near as big an issue as these forums make it to be, I personally haven't seen a single cheater in the last year.

Edited by Terrorhuz.4695
  • Like 1
  • Thanks 1
Posted (edited)
8 hours ago, Terrorhuz.4695 said:

There's three components in a game:

the server: it's an application ANet runs on some AWS instance and decides the damage on each skill, where do NPCs go, where do you end up after being knocked away... every single thing that actually happens in the game is decided here (except moving, jumping and THE MOVEMENT PART of dodging; endurance reduction after a dodge, however, is decided here too).
- the client: it's the thing you download. Takes care of showing you what happens on the server side, contains all the movement logic and little else beyond that.
the communication layer: it's a list of messages exchanged by server and client to keep each other updated, on what you do (so that your skills do something) and what other players do (so you can see someone is killing you). Stuff like ArcDPS reads what happens here to show you the very useful data you love.

The code is spaghettified = it's very hard to understand the internals of server and client, and change their behavior in a sensible way
What happens when a mesmer summons a clone? What happens when a specter enters shroud? What happens when a soulbeast merges? Working on that is a real nightmare, because it's spaghettiefied. I've heard the minimap used to work with forbidden black magic, just to name one.
The communication layer, however, is extremely simple to understand (literally a JSON with a list of all the things that happened: player A casts a skill, player B receives a boon, NPC walks from X to Y), and a man in the middle can send their own customized messages to force client\server to do whatever. With the position it's extremely easy, since it is client-side only and the server accepts everything received by the client as the pure truth; if someone else (the hack) poses as the client and creates a a new illegal position for the server to read, the server won't be able to notice it; hence why in this game teleport hacks are the most common exploit. ANet can't change this, however: if the position wasn't on the client-side, every minor lag would make movement so incredibly jaggy the game would be unplayable. Hence: movement becomes smoother, but someone can impersonate your client and move wherever.

TLDR: in this game, everything except dodging, jumping, running and registering your keystrokes is on the server side, and can't be tampered with. You can cheat those 4 things (with macro to fake real keystrokes and port hacks to fake real movement) and it's extremely easy to do so due to how easy it is to read\write what happens in the communication layer: but that's the extent of what you can do. I don't think hacks are anywhere near as big an issue as these forums make it to be, I personally haven't seen a single cheater in the last year.

Very elegantly explained and correct. However:

Quote

in this game, everything except dodging, jumping, running and registering your keystrokes is on the server side, and can't be tampered with.

There are also exploits in some fringe cases where the server doesn't normally allow an action or combination that leads to a specific behavior, but due to a particular item interaction or the involvement of a bug the action then becomes allowed. In these cases, the server is not allowing you per se to tamper with these things, but is merely failing to notice when normal interactions combined in a specific sequence lead to an abnormal interaction. These are also hard to patch/hard to detect because they require knowledge of the interactions used to cause the exploit and need to be specifically solved to prevent the unintended behavior based on those interactions.

To date though, very few of these interactions are game breaking or affect game spheres where they absolutely shouldn't be allowed, and most of them are caught if they fall into that latter group. Your conclusion has been my experience as well.

Edited by Azure The Heartless.3261
  • Like 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...