|
So, programmers have proven it is very much possible to produce fully functional "bots" that can play StarCraft 2.
What about taking it to the next level. Designing some sort of artificial intelligence which you could feed replay files to, and the bot could intelligently analyze the characteristics of the player specified. The more replay files, the more accurate the bot could imitate the player.
Imagine feeding this bot with 100+ recent replays of your favorite pro gamer, or even yourself, and then playing against an accurate clone of that person!
Hah, just a thought I had earlier today. Probably impossible to come anything close to an accurate imitation, but just imagine for a second
|
Blazinghand
United States25550 Posts
I think it might take some time to process each replay, since a replay is just a record of the commands you gave during a game-- so if you were spamming, say, the marine button, or were trying to do something and were unable to due to resource limits, the replay file doesn't know that-- you have to run it through the game engine to see what the resources were at any given point ;_;
|
This isn't really an AI, just a basic combination algorithm with an output.
As you've described it, the program would see which of the situations in its memory was the most like the current situation, and respond as it had seen. There is no intelligence behind it. Also, this would take a ridiculous amount of memory and replays of different situations.
|
What you have described, no, that wouldn't be AI. You're not understanding. I imagine the bot having a general ruleset on how to play, but the variables would be influenced by the playstyle and level of the analyzed player (this is where the AI comes into play, as it would be making live decisions based off of the profile it has generated of the analyzed person).
Every player has certain characteristics which in general, define how they play and at what level. If the bot could "understand" and take on these characteristics at the same level, as accurately as programmatically possible, we could have ourselves a pretty fucking awesome tool ^^
|
Hmm. Not AI, exactly, but you could probably get Watson (or a modified version of the chess programs) up to a decent ability using a form of adaptive learning based on the replays and outcomes of games. But the return on it wouldn't be much, and I don't know that any university academics would take it on as a project. (Big Blue might, just for a lark, if it helped them sell Watson's services. I'm pretty sure that's why they had Watson on Jeopardy.)
|
I feel like that wouldn't be a bad idea, but it would lack creativity, along with the mind games that set players apart from each other. The ability to play a straight up macro game against a pro bot would be cool.
|
The difficulty would be in building the variable set used to train your bot. For example, how significant is it that Flash built a cc at 14 supply in 75% of his games? Instead you would have to have very specific variables such as taldarimAltar, close-spawn, scoutingInfo does not contain information of early pool, etc. At that point, using specific variables like that would require a much larger and much more varied data source probably many thousands of replays to train the bot properly. Otherwise you could probably build a really naive bot based on a simple rules engine such as 'Flash does 14 CC in 75% of his games) and just make the bot use that build 75% of the time, but that wouldn't be effective at all.
|
Sure that will be some good learning. I read people's response and Xyik's is the best for me so far.
Computer is a computational beast, but not more than a dumb labor executing what you tell it to execute. To put it in context, a computer cannot magically discover facts, but rather you'd have to teach the computer these facts explicitly.
There are crucial things in the game, such as the gas/pool timing is crucial, and there are not crucial things in the game, such as the drone's mineral assignment. The amount of event is huge (you can't learn every detail) and you'd have to tell the computer explicitly what is important and what is not important.
As a result you'd be writing stuff like "analyze the replay to find average gas timing", "analyze replay to find army composition against another army composition", "analyze the replay to find ..."
So after you done all that you will likely think "well... the computer is still dumb, I had to tell it what to learn". So not much intelligence from the computer still, don't you think? So all in all AI is a hard field, and the fact you had to tell the computer what to learn explicitly is what turned me away from studying AI further. Of course there are better and more abstract things you can tell the computer to learn, but in the end, the computer computes what you tell it, and inherently isn't creative.
|
"Imagine feeding this bot with 100+ recent replays of your favorite pro gamer, or even yourself, and then playing against an accurate clone of that person!"
Oh yeah that's not possible haha. What you are asking is some kind of interpolation of a playstyle from a finite amount of replays. Well a playstyle is likely a very complicated function right? I'm sure you know it takes 2 points to define a line, 3 points to define a 2nd degree polynomial, and 10 points to define a 9 degree polynomial. But a playstyle! I'd say it'll take a LOT of points to define a playstyle function right?
|
http://overmind.cs.berkeley.edu/ I worked on this team as an undergrad a few years back. I'm not sure if you played bw, but you can say this is the state of the art a few years back. You can see how dumb it is at times but at others it's quite good. It's a lot of hard-coded knowledge (if A, then B).
|
|
|
|