So I know how much everyone loves me talking about network programming, hence, I will do it some more.
As my final project is in fact a network game, ensuring that characters are balanced is not necessarily the main issue that needs to be addressed when ensuring the game is fair to play. A large part of my responsibilities as a network programmer is preventing hackers from being able to get an advantage. In order to do this the networks need to be designed in a way that makes hacking as difficult as possible.
Unfortunately at the moment this isn’t the case as the project sends both the velocity and the position of the player to the server for the server to update the rest of the players. Although this is the case, the player is not totally authoritative in the matter and as such the server does have more control. This does not mean that the game is immune to a hacker changing their position or velocity in order to dodge an attack but it does do some things to make this a futile effort.
Since this was my first time programming a networked game and is the prototype, the main goal of the networking was to give me a strong understanding of concepts and to then incorporate them. Since this is the case the security of the game is not as good as other games and handles player input in a very different manner to what is most commonly done, as I mentioned above. This however does not immediately give hackers an advantage as regardless whether they have managed to change their velocity or position, if the server and determines that the player should have been hit, taken damage or died, the server will force this upon the player. This means that changes from a hacker would need to take place early, so that the server and other clients can register the change. This kind of preemptive moving, however, makes hacking yourself to safety redundant as there would have been enough time to simply escape from a situation using the games rules.
Although this is something that at present holds no huge impact on the fairness of the game, I will be changing the style of player input management that the server does as to make such attempts even more difficult.
These kinds of network flaws are actually an incredibly common thing for video games and often get used and abused by players who know how to do so. This is actually so common that there is a MMO in which using common exploits is required to beat it : https://www.wired.com/2015/04/multiplayer-hack-to-win/