Hey y'all, I just wanted to discuss the process of making an (almost true) global leaderboard for an SC2 Arcade Map.
I'm not looking to do this for myself, I was just doing some thinking about another game I play (Marine Arena). I noticed that Entropy TD somehow has a very accurate Global Leaderboard, so I resolve to figure out how theirs works, or at least how they managed to get such an accurate one.
So, all the players in a game join together. They play together - and the score of each player is saved to each player's bank (so they all have, say 8 identical values in their bank).
Then one guy joins another game. There's another 8 players. At the start of the game, the 1 guy's banks sync with everyone else' banks so they all have 8 values. The game ends - so all the values are saved again. Now there are 15 values in that person one's. Games continue like this. It's sort of like a viral infection - the game takes, copies, and updates everyone's data in a shared pool for the most accurate data for the players in that game, and that replicates every time they join a game.
But now you say hey - that's a metric fuckton of values to save in a tiny bank file. What do?
Well, let's say you want a top 10 global leaderboard. You only have to save the highest 10 scores in each bank - replacing them as a record is broken or someone makes it to the top 10. Then you compare those 10 values with all of the other players', and create a finalized top 10 global leaderboard for the players in that game. Works with all other values as well.
The more games that are played of that game, the more accurate that leaderboard is.
The one way to fool this leaderboard is to join a game alone, play, beat the highest score, then never touch that game ever again.
So anyways, for all of the editor geniuses out there - is this accurate/doable/efficient? Or is there a better workaround for an accurate global leaderboard?
/
I'm not a genius at the editor - but the global leaderboard thing got me thinking, so I came up with this theory. I ask you people: is it possible? is it worthwhile? is there a better way to do it? etc...
It's more of a thought experiment than a request for help.
What I do is at the start of the map I check the players score top list and synchronize them and than check if anybody has enough score top be in the top list or is in the top list but has more score, and than I correct the top list. This is one of the reason that I dont use true elo rating, so I dont need to track what is the player's latest score, instead most of the times people gain score and dont loose any. (since bank is 1mb this isnt a big problem, but the other reason that you can back up your bank and have a 100% win rate...)
Worth mentioning that with 100 player in the top list it takes significant time to sync and sort the top list. (though I could use much better code)
Also when I did use only the blizzard bank protection in my NSS map, it got hacked and it wasnt nice in the toplist, so I use additional protection in Entropy TD.
The more games that are played of that game, the more accurate that leaderboard is.
The one way to fool this leaderboard is to join a game alone, play, beat the highest score, then never touch that game ever again.
True, but if you play the map only once alone it doesnt matters for you, if others see your highscore :)
(so you were pretty right on all the stuff)
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
(copied and pasted)
Hey y'all, I just wanted to discuss the process of making an (almost true) global leaderboard for an SC2 Arcade Map.
I'm not looking to do this for myself, I was just doing some thinking about another game I play (Marine Arena). I noticed that Entropy TD somehow has a very accurate Global Leaderboard, so I resolve to figure out how theirs works, or at least how they managed to get such an accurate one.
So, all the players in a game join together. They play together - and the score of each player is saved to each player's bank (so they all have, say 8 identical values in their bank).
Then one guy joins another game. There's another 8 players. At the start of the game, the 1 guy's banks sync with everyone else' banks so they all have 8 values. The game ends - so all the values are saved again. Now there are 15 values in that person one's. Games continue like this. It's sort of like a viral infection - the game takes, copies, and updates everyone's data in a shared pool for the most accurate data for the players in that game, and that replicates every time they join a game.
But now you say hey - that's a metric fuckton of values to save in a tiny bank file. What do? Well, let's say you want a top 10 global leaderboard. You only have to save the highest 10 scores in each bank - replacing them as a record is broken or someone makes it to the top 10. Then you compare those 10 values with all of the other players', and create a finalized top 10 global leaderboard for the players in that game. Works with all other values as well.
The more games that are played of that game, the more accurate that leaderboard is.
The one way to fool this leaderboard is to join a game alone, play, beat the highest score, then never touch that game ever again.
So anyways, for all of the editor geniuses out there - is this accurate/doable/efficient? Or is there a better workaround for an accurate global leaderboard?
/
I'm not a genius at the editor - but the global leaderboard thing got me thinking, so I came up with this theory. I ask you people: is it possible? is it worthwhile? is there a better way to do it? etc...
It's more of a thought experiment than a request for help.
Tricky Goa using a system like this in his maps, it works, what else can I say.
@SupaCats: Go
What I do is at the start of the map I check the players score top list and synchronize them and than check if anybody has enough score top be in the top list or is in the top list but has more score, and than I correct the top list. This is one of the reason that I dont use true elo rating, so I dont need to track what is the player's latest score, instead most of the times people gain score and dont loose any. (since bank is 1mb this isnt a big problem, but the other reason that you can back up your bank and have a 100% win rate...)
Worth mentioning that with 100 player in the top list it takes significant time to sync and sort the top list. (though I could use much better code)
Also when I did use only the blizzard bank protection in my NSS map, it got hacked and it wasnt nice in the toplist, so I use additional protection in Entropy TD.
True, but if you play the map only once alone it doesnt matters for you, if others see your highscore :)
(so you were pretty right on all the stuff)