Agreed, that is THE feature that makes a lot of other shooters fun to play.Feralidragon wrote:Here's an idea I had in the past but I never started it up:
- Make a gametype where players can level up in some way.
Levels will only provide sidegrades and not direct advantages (let's say, items to start with 150 HP but weapons doing only 80%-90% of the damage, balanced stuff like that).
Even a very basic database system would be VERY hard to make using pure uscript (unless you completely ignore the performance impact of interacting with the DB)Feralidragon wrote: And the gametype would support both to have a local database (UScript based)
That has been tried many many times before. The only thing you could _TRY_ to detect on the server side are aimbots and even that would be a terrible idea. You could write a mod that detects impossible changes in viewrotation, but then again, what is impossible? The server doesn't know anything about your clientside configuration. It doesn't know your fov, mouse sensitivity, axis speed, mouse resolution and more importantly, it doesn't know you. The best you could achieve using such a mod is to train the server to get to know you. The server could analyze and keep track of your past behavior so it could raise an alarm when there are sudden changes in your behavior. And even that would require vast amounts of processing power (which is always a problem since all uscript code runs in the server's only thread) and storage space. Most other types of cheats (triggerbots, radars, wallhacks, ...) cannot be "detected" on the server side because the server lacks the necessary information.Feralidragon wrote: As for cheating, it should be dealt with from the server rather than from the client. Anyone can tell if someone is blatantly cheating thus the same behavior can be detected from a server-side mod.
One thing that the server could do a better job at is speedhack detection. Speedhack detection is however built into the game by default but the game does allow deviations from the "normal" speed in order to offer a smooth gameplay experience to everyone, including players with low bandwidth and/or high packetloss. These days, now that nearly everyone has broadband and ok'ish connections, the game could be a bit stricter in this regard.
UTPure does a great deal of setting reinforcements. I do agree that (temporarily) enforcing settings is a good idea to prevent players from getting an unfair edge.Feralidragon wrote: But it should also have a client-side one just to reinforce any server-side findings.
Even in the ideal scenario where every server and client has infinite processing power and bandwidth and NO latency, this is not true. In the ideal scenario, you could run the entire game server-side and only collect input from the client. This is the hardcore version of what is now known as streaming a game. Unfortunately, the ideal scenario is not possible. Nowadays there are servers with sufficient processing power to render everything serverside and most servers AND clients have sufficient bandwidth to pull this off. But even then, you still have to deal with the fact that there will be latency on your input processing, which is simply not acceptable (even 1ms of mouse lag is noticable to nearly everyone).Feralidragon wrote: Furthermore, a hack is as possible as the server allows it to be. Good server-side based architecture avoids the vast majority of hacks completely
I do agree that good design can go a long way in avoiding hacks but UT IS in fact fairly well designed in this respect. The game DOES not send anything to clients that they do not need (the main thing that comes to mind here is player positions). Player positions are only sent to you when you are SO near that you can hear them OR when they are in your line of sight. And obviously, the game needs to be slightly conservative here. It does send a slight bit of extra information as to avoid weird effects for players with high latency. If the native source were available, you could eliminate the need the send player positions for players that are near to you but not visible. This requires a bit of extra processing power and server side logic but it would eliminate wallhacks. Besides this, there is very little you can do on the server side to make cheating harder.