PDA

View Full Version : Thoughts on server global highscore



Stingray1
10-16-2013, 09:00 AM
If I understand correctly, there will be a global highscore list on the server.

My concern is that this list will be mostly filled with cheaters:

Statrollers, starsignrollers, savescum, etc.

First of all, will there thus be any point to such a highscore list and secondly is it possible to ommit cheaters from the list?

Edit - Sorry, can you please move this to the ADOM subforum.(e2)

I actually have a solution, if the server rolls the characters and stores the savefiles, I think it can be controlled, maybe. I'm no programmer. Detecting cheating and ommitting scores from these users.

Universal
10-16-2013, 11:43 AM
Most likely it will be online server, so players will be playing online, and therefore they will have no control over their saves (they will not be able to make backups, like on old ancardia server).

Rolling for stats/sign probably will be unavoidable, but I would not consider this a serious problem - it doesn't give that big in game advantage, and probably it's extremely boring and tedious, so someone would have to be really desperate to spend half day on creating chars just to get char with decent stats and candle starsign (and then die in SMC in very few couple of turns)

jt
10-16-2013, 11:59 AM
The way the server is planned/implemented is:

- the server only stores highscores and achievements (and online accounts for players)
- the player can play ADOM offline on their own PC
- if a player has an online account and ADOM detects an internet connection, highscores and achievements are synchronized with the server

Playing remotely "on" the server is not planned right now (and would only be available for versions without NotEye).

We will see how much cheating will happen and we probably need to balance the highscore calculations.

Personally I think the statistics we can generate from the highscore entries are much more interesting (e.g. which race/class combination is played most).

Universal
10-16-2013, 12:07 PM
Hmm have you thought about any mechanism that would prevent save scumming in that case? Because if players will be playing offline on their PC's, I'm afraid that most likely server highscores will be filled with save scummed chars.

jt
10-16-2013, 12:28 PM
I don't think we can prevent save scumming or detect it in any way.

Universal
10-16-2013, 01:00 PM
I'm not a programmer, so forgive me if my idea is dumb, but here is what I thought:

- each time player creaters a PC, unique numer is generated for that PC. It stays the same until PC is dead.
- if PC dies and gets to highscore, its unique number is stored on online server with it
- each time player sends any PC on his online account and therefore on global highscore list, server checks if there is already PC with the same number send on that account. If no, everything is fine, if yes it means that char is savescummed and every entry with the same number (within that account) is removed
- this number is stored on server for future, so no new entries from that account with that number would be allowed

Probably it won't solve savescumming problem at all (players can create multiple accounts), but at least it should make it harder.

It might work or not really?

Singbird
10-16-2013, 01:27 PM
but here is what I thought:


Well, it would prevent the type of scumming that you win many times with only one start. But that's not really the problem I'd think. I mean, would be kind of suspicious if there were 10 high elven archers born on the same day with the same crowning gift, etc. This idea would do nothing for the type of scumming that you backup your save and restore it if you die.

Blasphemous
10-16-2013, 01:29 PM
Save scumming is the least of your problems.
Take cheat engine program for example.
You can make your character immortal by locking health counter on a fixed number.
You can change quantity of items in your inventory.
Change those 3 potions of holy water to 300 potions.
Get two rings of djinni summoning and change the amount to 200.
Change the amount of potions of booze from 4 to 4000, give them all to Yggaz and get 4000 other random potions in exchange, around 50-60 of them PoGA.
Give me one hour, I will build you a lvl 50 PC of any r/c combination, with all stats at 99, all spells at 30000 and all skills at 100, with infinite wishes and ready to close the gate on the very same day that you started the game.
There's no end to what can be done. The only way to prevent that is to take control over save files entirely away from players, by storing them online.
There is no other workaround to this. Anything that is done client-side is bound to leave room for cheating and abusing stuff.
You can generate any unique number you wish. If I really want to, I will find it and change it so that the server doesn't recognize it as "already died" or some such stuff.
I've been cheating in online games for years, purely for my own amusement, not against other players.
I know what can be done with simple packet analyzer programs like wireshark or WPE pro, and that is in relation to online games.
As for offline games like adom, without any protection, infinitely easier to process, disassemble, decompile, inject dlls, scan memory... like I said, there is no limit to what can be done, literally speaking.

jt
10-16-2013, 01:49 PM
Well, storing the save games on the server doesn't even help if you modify your PC attributes/items while ADOM is running.

But other games have the same problems and they have an online highscore too... so, let's see how it works out.

GordonOverkill
10-16-2013, 02:20 PM
ADOM players are honerable players! Let's hope that noone cheats just because... we are too cool to cheat ;-)

Universal
10-16-2013, 02:38 PM
Well, it would prevent the type of scumming that you win many times with only one start. But that's not really the problem I'd think. I mean, would be kind of suspicious if there were 10 high elven archers born on the same day with the same crowning gift, etc. This idea would do nothing for the type of scumming that you backup your save and restore it if you die.

I think it should work. If you die, you PC is stored in your local highscore list (with its own unique number). So if you restore backup save file and die again (or win), there would be two entries with same unique number in your local highscore list*. During synchronization, every character from your highscore is imported on server, not only those who managed to win the game. So if server imports my local highscore list (or just update) and detects two entries with same ID number, it would refuse to accept it - entries don't have to be flagged by "winners". Question is what if one entry made on your local high score, second did not. Well probably it can be worked around by storing PC unique numbers somewhere besides highscore, and numbers would be compared with every attempt to change highscore.

* This idea should actually work offline also.

@Blasphemous - all you wrote is true... but I still think save scumming is not a minor problem, as it is probably most common and easy (and at the same time effective) way to cheat. I don't think that many players uses cheat engine programs or even heard about them (for example I'm a long time Adom player and didn't heard about it up to this day).

jt
10-16-2013, 02:50 PM
For me "save scumming" means making backup copies of your save game, so that you can continue in case your PC dies. There is no way to detect this (except maybe on the ADOM operating system, but that's not available yet). ;)

You probably think of "using a single save game to create multiple highscore entries". But since you can modify your local highscore file too, adding unique PC IDs would not help.

Our hope is that

a) players don't cheat
b) possible cheaters are reported (Thomas thinks it's realistic that the community can detect entries that look suspicious)

Since all highscore entries are bound to a specific user account, we can ban the cheaters' account and delete his entries.

Al-Khwarizmi
10-16-2013, 03:02 PM
It would also help if each player could get X highscore entries regardless of his position in the highscore list.

That way, if there are cheaters in the highscores, at least we could still compare ourselves to our friends or to people we know.

Many games on Steam with online highscores have filters to show friends only, and it's a source of a lot of fun trying to outrank your friends, even if you can't aspire to be #1 on the global highscore.

asdf
10-16-2013, 03:08 PM
For me "save scumming" means making backup copies of your save game, so that you can continue in case your PC dies. There is no way to detect this (except maybe on the ADOM operating system, but that's not available yet). ;)
If you are willing and able to add replay functionality to ADOM (recording initial RNG seed + all meaningful user commands, which consume a turn) - this could be solved.

Upload replay with the highscore, refuse any replays with the same RNG seed, check if replay is played correctly on the server. Could be CPU-intensive, though, even without the graphics.

However, this is probably too much of work to do. Would be a very nice feature, though:(

Universal
10-16-2013, 03:59 PM
But since you can modify your local highscore file too, adding unique PC IDs would not help

What if PC ID would be stored somewhere else, in non editable place (well at least not editable by those without decent programming/hacking skills)?

Yes, basically for me using single save to create multiple highscore entries = using backed up copies in case your PC dies - because every death result in highscore entry (in case of full HS not every, but as I wrote before probably it can be handled out).

Stingray1
10-16-2013, 04:42 PM
Just some thoughts on what has been said:

Am I understanding correctly that there won't be a global highscore list only one for every user, basically the same it is now, but stored on the server? I think I'm misunderstanding though.

If so then it doesn't really matter at all whether they cheated.

Also, the way I understand statrollers, is that you enter your desired stats and the statroller just keeps rolling and discarding characters until the desired one is rolled.

It does not matter if it takes time, the cheater just goes to the cinema, work, sleep, whatever while the statroller is doing its thing.

For me it makes much more sense to just use a memory editor like Blasphemous mentioned. High stats can difinitely make an ADoM game easier and speadier for a higher score.

Also people savescum for wishes from pools, pre/post crownings, corpse effects, etc. all making for an easier/faster game.

I actually also thought of asdf's suggestion, but doesn't every motherboard model have different RNG lists or whatever they are called. Anyway, if another process calls the RNG then everything is out of sync.

As jt said, let's see.

anon123
10-16-2013, 05:39 PM
ADOM operating system

Is this a joke, or do you plan on coding it at some point in the future? :eek:


Our hope is that

a) players don't cheat
b) possible cheaters are reported (Thomas thinks it's realistic that the community can detect entries that look suspicious)

The unofficial Hall of Fame has relied on point A throughout the years. I personally think highly of the community, because the game attracts a much different crowd than whatever FPS is trendy this year. There will be people attempting to cheat, and some might get away with it if they do it discreetly (what's the fun on that anyway... you won the game using a cheat tool instead of skill and missed on the things that make ADOM be ADOM, congratulations). But I don't think it would be a huge problem. If you can somehow find a way to discourage savescumming, the simplest and most obvious method to cheat for a newcomer, and maybe another sanity check, that would be enough. The idea is stopping the casual cheater, like the game already does by preventing SVGs and temporary files from being edited, not all of them.

PS: since savescumming is a legitimate way to learn the game (although not to win it), I wouldn't suggest a "hard" punishment for it. The suggestion of giving every character a unique serial number embedded in the savegame, and silently blocking high score submissions for multiple PCs with the same S/N, would be fine I think.

jt
10-16-2013, 06:08 PM
@asdf: actually ADOM already has a recording mode, but Thomas said he could never get it to fully work. So it's not enabled and would probably need extensive testing before using it to verify highscore entries on the server (but I like the idea).

@Stingray1: no, a global highscore list is planned (i.e the combination of all highscores from all users), but each highscore is bound to the user (account) who uploaded it. For now we only planned a minimum score that needs to be reached before the entry is added (to prevent filling the list will characters that die after a few steps). Otherwise the list will be "unlimited", so every player can upload as many highscores as he creates (this might change in the future depending on who much load the server can handle).

The random number generator is purely software and doesn't rely on any system information/counters.

@anon123: it was a joke. It seems everyone builds an OS these days, so why not build one specifically for ADOM?! ;)

Blasphemous
10-16-2013, 06:22 PM
I cheat often in adom, for testing or pure fun purposes, but never post YAVP or get into any highscore lists with PCs made that way.
Occasionally I feel like playing and completing the game without cheating/savescumming, and I closed the gate about a dozen times with legit chars.
I like playing on the public SSH server since it prevents both savescumming and memory edition via cheat engine-like programs.
Technically you can still cheat but it's much more difficult and simply not worth it.
Besides I can actually compare my results to other players, knowing that they have also not cheated or save scummed.
I suppose most people here know enough about each other to assume nobody is cheating against other players to see who's "better".
I for one never compare my cheated PCs with anybody since it's simply not fair. How other people approach this is anybody's guess.

Al-Khwarizmi
10-16-2013, 06:39 PM
The unofficial Hall of Fame has relied on point A throughout the years. I personally think highly of the community, because the game attracts a much different crowd than whatever FPS is trendy this year.
But be aware that one of the goals of the campaign is to attract a larger crowd into ADOM. With graphics, sound and steam support, it will no longer be a game for a bunch of hardcore geeks like us. I have no doubts that cheaters will appear if cheating is easy.

However, as I said, I think if the high score is large enough (or guarantees a number of entries per player) and you can filter by friends, it would be OK even if there are cheaters. Although the recording idea, if it could be implemented, would be awesome (and not only for highscore purposes).

Stingray1
10-16-2013, 06:48 PM
@anon My biggest concern is for zealots(sorry can't find better word) for the #1 spot on the list. Maybe one or two people that will go to any illigitimate lenght to claim that spot.

Now, I come along and am also maybe trying for one of the top spots. But I refuse to do it in a cheating manner. That is not fair towards me.

So, that is why I think everyone should be checked, not just casual newbie cheaters. Also with the game going on Steam, I think, this community won't be all the ADoM players. There will be many profesional cheaters that just want to be number one.

Anyway, let's see.

anon123
10-16-2013, 07:23 PM
But be aware that one of the goals of the campaign is to attract a larger crowd into ADOM. With graphics, sound and steam support, it will no longer be a game for a bunch of hardcore geeks like us. I have no doubts that cheaters will appear if cheating is easy.


Also with the game going on Steam, I think, this community won't be all the ADoM players. There will be many profesional cheaters that just want to be number one.

These are valid points.

Deathwind
10-16-2013, 11:14 PM
actually it is possible to prevent save scumming, take a look at what nintendo did on the current pokemon games
http://www.3dbrew.org/wiki/Anti_Savegame_Restore

Stingray1
10-17-2013, 06:18 AM
actually it is possible to prevent save scumming, take a look at what nintendo did on the current pokemon games
http://www.3dbrew.org/wiki/Anti_Savegame_Restore

Oh man, this would be so great, thanks Deathwind.

Edit - I have no idea what they are saying in that link, but can't an alternative be to have a permanently running process to monitor the content of the savedg folder?

jt
10-17-2013, 10:12 AM
If I understand it correctly, Nintendo uses a "secure area" (where the user has no access) to store an ID which is then checked against the save game. But a PC doesn't have such a "secure area", so this won't work. And a service can be easily disabled by user, so that doesn't help too.

Recording the game seems like a good idea, but we would need to prevent manipulations of the recording, which probably is very difficult too. And this doesn't prevent modifying the game while it runs.

Stingray1
10-17-2013, 10:21 AM
Thanks for your response, jt.

If the service is disabled that at least raises suspicion.

Deathwind
10-17-2013, 12:20 PM
If I understand it correctly, Nintendo uses a "secure area" (where the user has no access) to store an ID which is then checked against the save game. But a PC doesn't have such a "secure area", so this won't work. And a service can be easily disabled by user, so that doesn't help too.

there isn't a secure area but there are some options:
on windows there is always the registry
put the ID storage in a hidden file
even just putting the ID in the high score file would be enough to keep a lot of people from messing with it

There are ways around it but its a step in the right direction.

asdf
10-17-2013, 02:00 PM
Recording the game seems like a good idea, but we would need to prevent manipulations of the recording, which probably is very difficult too. And this doesn't prevent modifying the game while it runs.
You dont need to prevent modifying the game while it runs, if you can verify replay on a server, where game would be intact. Any modifications to replay itself, which would lead to valid replay would be essentially the same as completing the game normally.

Savescumming without storing session data for saves on server and requiring internet connection to play for global highscores seems to be unbeatable, though:(

JellySlayer
10-17-2013, 03:28 PM
Can we not put always online DRM on ADOM? The idea that people are seriously considering this to prevent savescumming is hurting my head.

jt
10-17-2013, 04:08 PM
There will be NO server connection needed to play ADOM! You will be able to play offline all the time. There will be even an option to disable all network access within ADOM.

Deathwind
10-17-2013, 05:57 PM
Can we not put always online DRM on ADOM? The idea that people are seriously considering this to prevent savescumming is hurting my head.

The idea of online DRM in ADOM is ridiculous. Locks and DRM only work to keep honest people honest, if someone REALLY wants to cheat they will find a way. I was just suggesting a way to make it so savescumming is hard enough to stop casual cheating.

adom-admin
01-26-2014, 01:44 PM
Save scumming is the least of your problems.
Take cheat engine program for example.
You can make your character immortal by locking health counter on a fixed number.
You can change quantity of items in your inventory.
Change those 3 potions of holy water to 300 potions.
Get two rings of djinni summoning and change the amount to 200.
Change the amount of potions of booze from 4 to 4000, give them all to Yggaz and get 4000 other random potions in exchange, around 50-60 of them PoGA.
Give me one hour, I will build you a lvl 50 PC of any r/c combination, with all stats at 99, all spells at 30000 and all skills at 100, with infinite wishes and ready to close the gate on the very same day that you started the game.
There's no end to what can be done. The only way to prevent that is to take control over save files entirely away from players, by storing them online.
There is no other workaround to this. Anything that is done client-side is bound to leave room for cheating and abusing stuff.
You can generate any unique number you wish. If I really want to, I will find it and change it so that the server doesn't recognize it as "already died" or some such stuff.
I've been cheating in online games for years, purely for my own amusement, not against other players.
I know what can be done with simple packet analyzer programs like wireshark or WPE pro, and that is in relation to online games.
As for offline games like adom, without any protection, infinitely easier to process, disassemble, decompile, inject dlls, scan memory... like I said, there is no limit to what can be done, literally speaking.

IMHO the most effective means to stop cheaters is to

- open the server files only to registered users (may I say "ADOM Deluxe"),
- provide a means to report attempts of cheating
- ban registered users for doing so.

I'm not sure if we want to go that far, though.

Maybe a hall of shame is sufficient.

Stingray1
01-26-2014, 03:47 PM
In my opinion a Hall of Shame is actually better than a ban. Removal of scores from the Highscores list should maybe also happen?

Mobius
01-26-2014, 04:09 PM
Other small, inde game folks have had highscore board cheaters: http://knucklecracker.com/creeperworld/viewscores.php?mission=0&missionGroup=conquest&groupfilter= has the very first item be from 'Cheat Engine'. That board only accepts scores from registered users, but folks have found ways to inject bad data.

Detecting, reporting, banning for cheating will also take somebody's time. And it's a thankless job.

I wish you luck though! It may help to look at the Steam apis, and how they avoid cheating. see
"Valve Anti-Cheat" at https://partner.steamgames.com/documentation/api and the wiki page http://en.wikipedia.org/wiki/Valve_Anti-Cheat

Iridia
01-26-2014, 05:53 PM
Even if there's no anti-cheat protection (I'm ambivalent... it's not really a big deal to me) we do need an option for whether to put characters on the high score or not. For example, I kept a few save files from different stages of my recent win, so that I could do research on the mechanics of chaos knight alignment. If those guys die or win (and I've already got three wins on my own high score list from experimenting with the endings), then they'll mess up the high score list. We need to have the option to keep them off the table.

Stingray1
01-26-2014, 06:17 PM
Those highscores going to the list is a good way to spot dumb save-scummers though.

Iridia
01-26-2014, 06:26 PM
I don't think any high score list is ever going to be free of cheaters. The score itself is easy enough to inflate. And most of us don't really go for a high score, anyway. We go for a win.

Then there's the trouble with crashes: I keep a backup file to restore from in case of a crash. This looks like savescumming, but isn't, and it's necessary because the game still has crash bugs and a save system that deletes the file on load.

I would really prefer more of a database of winners--all those YAVPs--tagged with things like whether you completed an additional challenge, or did an ultra. People could write about their strategies, or not, as they chose. I'm thinking something like the ADOM hall of fame, but in the form of an automatic upload rather than something that would have to be manually added to a hall of fame by a team of mods.