The most important enhancement of all

Make suggestions for improving one of the best games on the net!
Post Reply
WideBoyDixon
Private First Class
Private First Class
Posts: 5
Joined: Thu Jun 15, 2006 12:27 am

The most important enhancement of all

Post by WideBoyDixon »

I understand that BZFlag puts a lot of functionality in the hands of the client and that this makes it possible for players to customize the client and make modifications to the code. There's even a topic on the BZFlag Wiki which lists possible cheats! I can't think of a way to validate that all users are using unmodified clients so there has to be another way.

Top of my list of enhancements would be the capability for the server to monitor a tank and check that it's behaving normally. This would include:

[1] Checking tank movement speed
[2] Checking tank rotation speed
[3] Checking tank shot speed (although I think this is already done)
[4] Checking tank hit zone (i.e. it dies when it should)

By only monitoring one tank, it shouldn't put *too* much strain on the server. By default, it could monitor the tank at the top of the leaderboard although an administrator should be able to select any tank in play. Any suspicious activity should be logged and it can then be reviewed at a later time for the administrator to take appropriate action.

$0.02
User avatar
Zelgadis
Private First Class
Private First Class
Posts: 638
Joined: Sat Jul 02, 2005 2:31 pm
Location: European Union

Post by Zelgadis »

hmm, nice idea. :)

That would maybe sort out all cheaters.
Want to improve your skill? Join the http://guleague.org!
meeba
Master Sergeant
Master Sergeant
Posts: 507
Joined: Sun Mar 12, 2006 10:49 pm
Location: N. Sanity Beach

Post by meeba »

Watching for when a tank should die would be very hard due to lag. But the other suggestions are very good.
ts
Dev Monkey
Dev Monkey
Posts: 970
Joined: Fri Jan 14, 2005 6:26 pm

Re: The most important enhancement of all

Post by ts »

WideBoyDixon wrote:Top of my list of enhancements would be the capability for the server to monitor a tank and check that it's behaving normally. This would include:

[1] Checking tank movement speed
[2] Checking tank rotation speed
[3] Checking tank shot speed (although I think this is already done)
[4] Checking tank hit zone (i.e. it dies when it should)
Umm, that would not be very clever. The gaming logic changes depending on certain things meaning the tanks are not all equal even when there is no cheating involved.

In fact with only checking for behaviour you can get into much problems because if there isn't a high tolerance then most likely a lot of innocent people are getting kicked. As for logging "Any suspicious activity" this is ludicrous, if it is suspicious then the server should act automatically.

So..this is the wrong approach.
GU league: http://www.guleague.org/
An introduction to TCP: http://www.lafkon.net/tc/
Longhair
Private First Class
Private First Class
Posts: 330
Joined: Tue Feb 08, 2005 6:06 pm
Location: Lancaster, PA
Contact:

Post by Longhair »

One of the counter-arguments to having server-side checking for cheaters is that a greater amount of network bandwidth and CPU cycles would be consumed. At the very least, having the ability to check on a suspected cheater one at a time would help mitigate this problem. Due to a lack of knowledge about C++ programming, I can't comment on the specific checks offered, but the overall concept seems to be sound to me.
User avatar
JeffM
Staff Sergeant
Staff Sergeant
Posts: 5196
Joined: Fri Dec 13, 2002 4:11 am

Post by JeffM »

Longhair
how does it add bandwidth? the same number of messages are sent and received, it's just they are verified in a different place.
ImageJeffM
Lord Flasheart
Private First Class
Private First Class
Posts: 11
Joined: Wed Nov 15, 2006 12:20 pm

Re: The most important enhancement of all

Post by Lord Flasheart »

ts wrote:Umm, that would not be very clever. The gaming logic changes depending on certain things meaning the tanks are not all equal even when there is no cheating involved.
I would think that it's logical that the server would take into account any flags being carried at the time.
ts wrote:In fact with only checking for behaviour you can get into much problems because if there isn't a high tolerance then most likely a lot of innocent people are getting kicked.
I believe that the suggestion is only to "log" suspicious activity and not to kick anyone.
ts wrote:As for logging "Any suspicious activity" this is ludicrous, if it is suspicious then the server should act automatically.
I disagree. For the reasons you state above, nobody should be automatically sanctioned.

FWIW, I think WBD has it wrong on the original post. Tank speed is automatically checked, shot speed is not.
Last edited by Lord Flasheart on Wed Jan 10, 2007 12:17 pm, edited 1 time in total.
User avatar
GMMan
Private First Class
Private First Class
Posts: 186
Joined: Sat May 13, 2006 9:32 pm
Location: On the time-space continuum

Post by GMMan »

This kinda make me think that there should be a dashboard in the client that show this information. Maybe I should save it for another topic...
I haven't touched BZFlag for years, but maybe sometime I'll make a comeback.

I'm on Twitter. And I mess with webOS. This signature is not a blog.
User avatar
L4m3r
Hater of Everything
Hater of Everything
Posts: 724
Joined: Tue Feb 08, 2005 5:15 am
Location: Los Angeles

Post by L4m3r »

Such enhancements are already planned and/or in progress. The problem right now is that the server is pretty dumb. It basically relays messages between all the clients. Before such anti-cheating measures can be implemented, the server's game state needs to be more complete. This is what the dev team is working on at present.

Ultimately, a complete server-side game state will save a lot of bandwidth at the cost of some CPU on the server. And, it will be much easier to see if someone's cheating.

Also, if potential cheaters are logged, they'll probably never be caught. Using the right amount of "lag fudge" and a smart server, suspected cheaters can be kicked with a low rate of false positives.
Optimism is just a milder alternative to denial.
User avatar
bzflaginator
Private First Class
Private First Class
Posts: 275
Joined: Sun May 01, 2005 1:50 am
Location: Upstate, New York, USA
Contact:

Post by bzflaginator »

Well here's my 2 cents...the main reason I left the GU league was over the controversy of cheating. I played there almost 2 years and kept eye on the pings and noticed not much difference. All of a sudden people start blaming shots "going through" or "passing too close not to die" on lag. That is total crap. I can kill a n00b the same way with higher ping than a veteran with lower ping and that seems a bit fishy. Anywho I hope the devs can find a way to prevent the cheats and like you said, check or monitor the basics. This might have to be done set under the basis of not obtaining a flag because there is high speed, quick turn, etc. Maybe there is an alternative way around this issue and not slowing down the servers even more with these enhancements. Maybe a fool proof client. Who knows. :idea:
Image
Image
"He that falls in love with himself will have no rivals."
Image
Image
ts
Dev Monkey
Dev Monkey
Posts: 970
Joined: Fri Jan 14, 2005 6:26 pm

Re: The most important enhancement of all

Post by ts »

Lord Flasheart wrote:
ts wrote:Umm, that would not be very clever. The gaming logic changes depending on certain things meaning the tanks are not all equal even when there is no cheating involved.
I would think that it's logical that the server would take into account any flags being carried at the time.
I am not refering to flags.
Lord Flasheart wrote:
ts wrote:In fact with only checking for behaviour you can get into much problems because if there isn't a high tolerance then most likely a lot of innocent people are getting kicked.
I believe that the suggestion is only to "log" suspicious activity and not to kick anyone.
Well, then the admins see the result but not the cause.
Lord Flasheart wrote:
ts wrote:As for logging "Any suspicious activity" this is ludicrous, if it is suspicious then the server should act automatically.
I disagree. For the reasons you state above, nobody should be automatically sanctioned.
The result of the reasons I stated above is a different way of how the game should work meaning the current implementation is not so good.
Lord Flasheart wrote:FWIW, I think WBD has it wrong on the original post. Tank speed is automatically checked, shot speed is not.
There is a (rough) shot speed check implemented in the 2.0.x line. In 2.1 this check has been removed which is a great thing because the shot implementation has changed. Now some would ask "why"..the ability to cheat in this case is gone, so the check is not needed.
GU league: http://www.guleague.org/
An introduction to TCP: http://www.lafkon.net/tc/
Longhair
Private First Class
Private First Class
Posts: 330
Joined: Tue Feb 08, 2005 6:06 pm
Location: Lancaster, PA
Contact:

Post by Longhair »

[quote=JeffM2501]how does it add bandwidth? the same number of messages are sent and received, it's just they are verified in a different place.[/quote]

Perhaps I'm thinking of something else like hit detection, but I certainly have heard time and again that:

1. The majority of our cheating troubles are that the servers trust the client too much.
2. The reason we have the current situation where the client is trusted too much is worries about the strain on bandwith and CPU time if we went with server side hit detection/tank parameters verification.

I've been around here long enough to hear all sorts of contentions arguments about who is cheating and who is not, and "server/bandwidth strain" is almost always brought up when we get to the "what can we do to stop this?" phase of the discussion. This suggestion seems to take care of it.

If we're moving to all server-side detections anyway, this, of course, is a moot point.
[/list][/list]
User avatar
bzflaginator
Private First Class
Private First Class
Posts: 275
Joined: Sun May 01, 2005 1:50 am
Location: Upstate, New York, USA
Contact:

Post by bzflaginator »

Well see here I havent come across that exact phrase. I used to play GU league and the greatest accusation is ME and skinny tank :wink: . Im sure this is disproven by the fact that most of the players there are outstanding and the ping rates there are quite out of control. Yet I still dont believe it because in my 7 years of playing, this is the first time Ive run across lag being the source of shots through or amazing aim. I know there is something going on that the rest of us dont know about. The only facts I have to hold this up with is that... I can easily kill noobs with higher ping the same way I cant seem to kill the skilled players with lower ping and in most cases, my ping rate is the same with the noobs and the "good players". Furthermore Im going to have to disagree with the issue with lag associated to cheating.
Image
Image
"He that falls in love with himself will have no rivals."
Image
Image
User avatar
JeffM
Staff Sergeant
Staff Sergeant
Posts: 5196
Joined: Fri Dec 13, 2002 4:11 am

Post by JeffM »

The reason we have the current situation is because bzflag was designed as a LAN game and it was just a lot easier to trust the client when the code was written 14 years ago. Back then there really wasn't an "internet" like we have now, so if someone on your LAN cheated you'd just go bonk them on the head and tell them to stop it. ( if we could do that over the internet, life would be a lot better :) )

When the internet become popular, a list of servers was just slapped on top of the existing game, no other changes were make for security or trust. That's the simple matter of it.

The current goals of the development group is to get a fully server side state, that verifies all positions and hits. As well as the ability to compensate for lag so that everyone can see a more accurate game state. BZflag currently assumes 0 lag for all messages. These are things we'd all love to see. But code sadly does not write itself.

It will not add bandwidth, it will only reduce it in a number of cases ( we can not send updates for players you can't see or are far away ). And it will do a lot to minimize what cheaters can do. It will add a small amount of CPU usage to the server, a very small amount, as the server will have to do the same state updates a client does. Thankfully those computations are very easy. A normal client spends 99.5% of it's time drawing, a server will not have to do drawing, so the increase will be small.

The concept of an authoritative server is not new, most internet games for the past 10 years have used them. It's not rocket science, there is much research on the subject. Quake has used a server side state since it's inception, and from what I've seen one or 2 people play that over the net with out problem ;)

The reasons we don't have better code right now are;

1) the original author left, and that means there is no one who understands all the code base. This makes it harder for developers to make large sweeping changes, as they have to do a lot of time consuming research into just how the code works.

2) the changes are BIG and time consuming. Redoing the entire network and simulation systems are no small tasks, we know what todo, it's just a lot of code to change. It is somewhat out of the scope of a one person change.

3) the project has no active management. There is no one actively pushing the developers and code to cooperate and make these big changes. No one is guiding the development. Developers just work on what they want ( they do donate there time after all, so it has to be fun work for them ). In other larger projects there are development leaders or leadership teams that would gather ideas and bring them into a development plan that others can work on and implement.

4) the number of active developers is drooping. We have had a large number of older devs discontinued working on the project. There have been a couple new additions but they take time to get up to speed. And the add rate is not the same as the drop rate.
ImageJeffM
Lord Flasheart
Private First Class
Private First Class
Posts: 11
Joined: Wed Nov 15, 2006 12:20 pm

Post by Lord Flasheart »

Of course, there's always an option to create a server that will only accept connections from a certain client. For example, you could use a challenge/response mechanism from the server when a new player wants to join. The client that knows how to respond is only the one that goes with this version of the server.

A little extreme I know since you then potentially need one client executable per server. However, at least it should resolve any disputes over whether a client has been modified. Unless, of course, the server administrator is a little less than honest :wink:

Failing that, if we can migrate the source code to be a Shockwave/Flash game then we can all play through our browsers using the same client :)

Nobly yours, LF.
User avatar
JeffM
Staff Sergeant
Staff Sergeant
Posts: 5196
Joined: Fri Dec 13, 2002 4:11 am

Post by JeffM »

Lord Flasheart
a hacked client could just fake the response from a valid client. Then the server would be trusting a modified client.

the game is open source so we can't "hide" any code (a number of players build there own clients ). The concept has been discussed many times before, and it is just not feasible for our project.

the only thing a server can do to "check" a client is ask the client computer for info. There is no way to know where that info would come from on the client, because the server does not have direct access to the client.
ImageJeffM
Buzzthebuzzsaw
Private
Private
Posts: 3
Joined: Mon Jan 29, 2007 8:42 pm

Post by Buzzthebuzzsaw »

What if each client was checking 2 or 3 others?
They could be assigned by the server and reconfigured when a new player joins. This wouldn't be too much of a hit for the server cpu or it's bandwidth.
The clients could check for cheats in the other clients. If they detected unusual activity on another client it's reported to the server. It's up to the server config then to kick when a certain number of reports are recieved.

This would mean that any hacking done on the client wouldn't make any difference they would still be checked by the others and kicked.

It's just an idea, don't ask me about it's implementation.
User avatar
blast
General
General
Posts: 4931
Joined: Fri Mar 21, 2003 3:49 pm
Location: playing.cxx
Contact:

Post by blast »

Why not just have the server do it all? Right now, bzfs uses minimal CPU usage. Adding checks won't affect that fact very much. You cannot trust the client, and it's the same case in the "peer review" concept. The one thing the server can trust is itself, so we need to boost what the server knows to make that possible.
"In addition to knowing the secrets of the Universe, I can assure you that I am also quite potty trained." -Koenma (Yu Yu Hakusho)

Image
User avatar
Workaphobia
Master Sergeant
Master Sergeant
Posts: 252
Joined: Wed May 26, 2004 7:29 pm

Post by Workaphobia »

Hey all, don't know if anyone here still remembers me as I haven't played in many many months. I just wanted to briefly come out of lurking today to comment on how little this conversation has changed over the years.

It's always a matter of the old code base not having been designed for a game with untrusted players, followed by speculative comments about increases in server load, and then invariably someone mentions signed or trusted binaries. Some of you may have no idea just how right Jeff is when he said this has been discussed many times before. Bottom line: server needs authoritative state, clients will never be signed or locked down, and any "detection" mechanisms are just superficial mitigation techniques.

Back to my lurking. :)
"Nifty News Fifty: When news breaks, we give you the pieces."
User avatar
BinarySpike
Corporal
Corporal
Posts: 735
Joined: Mon Mar 28, 2005 11:58 pm
Contact:

Re: The most important enhancement of all

Post by BinarySpike »

WideBoyDixon wrote: [1] Checking tank movement speed
[2] Checking tank rotation speed
[3] Checking tank shot speed (although I think this is already done)
[4] Checking tank hit zone (i.e. it dies when it should)

Server already does that stuff, mostly...
Speed cheats are not strong enough (without getting autokicked) to actually be a useable cheat. Tank rotation same thing.

Tank shot speed, if the bullet is to fast, the server doesn't report it... note... changing shot speed in game on 2.0.4(+?) servers made the server think everybody was shot speed cheating, so nobody could kill anybody.

Checking tank hit zone, almost impossible, but GM is the only bullet that doesn't die when it should, any other bullet death is handled by the client.

The biggest things is flag coloring, st and cl viewing. I vote removal of the ID flag, and recycle flag ID's more often ;)

Oh and the flag grab cheat HoW stole from me, I seriously thought that would have been fixed by 2.0.8 :|
User avatar
JeffM
Staff Sergeant
Staff Sergeant
Posts: 5196
Joined: Fri Dec 13, 2002 4:11 am

Post by JeffM »

BinarySpike
please do not discuss your cheating habits here, this is not a board about cheats, nor for discussions that belong in a private message. I thought you were smarter then that.

2.1 does all flag gives and pickups on the server. ID dosn't have to be removed, we just changed it so that the server tells you what the closest flag is, not where it is. All the flags on the field have the same type.

Shot types and current flag are no longer sent by the player, the server knows what flag you are supposed to have, and assigns all data based on that ( like shot type )

These changes break protocol, so they could not be implemented in any 2.0.x version, as I'm sure you are well aware.

Workaphobia
The current speed checks are buggy, 2.1 does better checks as well as server side interpolation.

The work is going slow, as there is no master plan or strong leadership, but more and more features are being authoritatively handle by the server.
ImageJeffM
User avatar
macsforme
General
General
Posts: 2069
Joined: Wed Mar 01, 2006 5:43 am

Post by macsforme »

JeffM2501 wrote:2.1 does all flag gives and pickups on the server. ID dosn't have to be removed, we just changed it so that the server tells you what the closest flag is, not where it is. All the flags on the field have the same type.
Say, I got to thinking, with all of these new things being handled by the server, will there be an increase in the bandwidth required to play? Seems like a lot of things handled by the client before (and not requiring network data transmission) are now handled by the server, which I imagine has its pros and cons.
User avatar
JeffM
Staff Sergeant
Staff Sergeant
Posts: 5196
Joined: Fri Dec 13, 2002 4:11 am

Post by JeffM »

the increase is minimal for this one, it's not an event that happens a lot, or a great number of times a second. for other features it's the same, as the client often had to tell the other players about the event, now the server does instead. for others the bandwidth went down, as the server can only tell the players it knows are affected by the event.

In general bandwidth usage will remain about the same.
ImageJeffM
Post Reply