Ladies and gentlemen, please allow me to present this to Starcraft enthusiasts all over the world. I present it with the wish that the original Starcraft lives far beyond the inception of Starcraft 2 and that we will have many more chances in the future to utilize this tool.
I've mentioned in my previous blog posts that I've been working on an automated replay identifier. I've used Support Vector Machines and sophisticated machine learning tools to tackle this problem. However, I've re-evaluated the problem and I've come up with something simpler. I gave up trying to program a machine that is able to identify a player with 100% accuracy. It now presents a list of results that the human must interpret.
Throughout the process, romad has always been a source of inspiration, though he is probably not aware of it. He is the proof that a replay identifier is possible. Perhaps his ability to identify who's who in a replay is nothing short of genius, something akin to humans recognizing patterns in a game of Go. However, with the hopes that his ability can be turned into an algorithm, I kept myself on track.
I present to you INTREPID.
intrepid
characterized by resolute fearlessness, fortitude, and endurance
It is the INTeractive REPlay IDentifier.
Now, I do not claim that its accuracy comes anywhere near the identifying prowess of romad. In fact, it currently does pretty damn terribly.
Where it's at
=====================================================
=====================================================
>>>> INTREPID <<<<
=====================================================
=====================================================
It's in its infant stages and it works somewhat decently. Because of its inadequacies, it is currently only very good at identifying certain players.
It's quite peculiar. It's good at identifying players with very unique signatures, such as IdrA. He has an incredibly unique signature.
I am completely confident that it can detect IdrA replays. You can download the recent IdrA vs. ret replay and upload it to see the result: http://files.getdropbox.com/u/4422/replays/sleepwalker.rep.
I'll go through the process in case you're confused at the results. As mentioned earlier, the results require human analysis.
1. Upload the replay. You'll see the following.
2. Click Analyze to the right of SleepWalker. You'll see the following.
3. There are four categories. Building hotkeys, hotkey actions, hotkey spam, and hotkey assignments. Roughly speaking, each list is a list of players whose hotkeys come close to SleepWalker's hotkeys.
Building Hotkeys = assigning 1 to Command Center, 2 to Barracks, etc.
Hotkey Actions = does the player 1a2a3a or 4a5a6a?
Hotkey Spam = what sequence of hotkeys does the player love to repeat? 515251525125? or 232323232323?
Hotkey Assignments = what hotkeys are used at all by the player?
The "Total" combines all the categories into one easy-to-read list. As you can see, idra trumps all other players in similarity to SleepWalker.
Also, each player in the list is accompanied by a similarity rating.
Where does the player list come from?
I have a few thousand replays gathered mostly from TSL. I have a few dozen progamer replays that I've picked up from TL and other places. Whenever you upload a replay, it is compared to the database I have.
How to use
1) I cannot emphasize enough that in its current state, it is probably about 25-romad (in the sense that it is 25% close to romad-level detection). I don't think we can ever replace romad for accurate replay detection, but with this, a lot of unique key signatures CAN be detected with a fairly high accuracy (e.g. IdrA, TT1, and some others I found to be unique).
2) I'd say that a "Total similarity" rating of less than 0.5 is pretty much guaranteed equivalence. In the SleepWalker replay, the player Idra shows a < 0.5 total similarity to SleepWalker, strongly suggesting that SleepWalker = Idra. Furthermore, the vast majority of the top 50 results in Total is Idra.
3) I must emphasize that just because someone is at the top does not mean that the player is that someone. You must take the similarity into account. In fact, someone might take up the majority of the top 50 results in Total similarity. Even then, you cannot be certain. If the closest player's similarity rating is a 5, that's a pretty terrible similarity rating. The conclusion is that the INTREPID has no clue as to who it is.
Current problems
1) My server uses a 64-bit machine. RepASM, which I am using to analyze replays, was written for 32-bit. Therefore, some replays simply will not produce any results. You can tell because the page will finish load after pressing Analyze and you won't see anything.
2) RepASM has a few deficiencies. I cannot tell which unit is which. I have to detective work (did this unit just build an scv? then it must be the command center). Sometimes, it's impossible to determine the identity of a unit. For example, I can't tell whether a unit is a ComSat station or not because no special ability uses are recorded by RepASM. Thus, one major deficiency is that ComSat hotkeys are completely ignored.
3) I don't have enough progamer replays. In general, it improves the identifier to have more progamer replays. One reason is that the more there is for a player, the more likely it is that I have samples of different build orders. The other reason is that every player has small deviations. To have a greater sample set means that we can estimate the true "signature" of a player better.
4) I'm currently working on a much better (in theory) version of the algorithm. Stay tuned!
It is my hopes that these problems can be fixed by programmers out there. I am hoping that INTREPID is a good enough reason to motivate some coders.