|
Current Version: v0023
<0023 update>
Evolution Chamber Hwaiting! Und das uber Evolution Chamber!
That's right boys and girls, we have internationalization!
</0023 update>
It is out! http://code.google.com/p/evolutionchamber
Download Java and get it!
Yes, there will be a toss and terran version. We are in the preliminary advanced stages of making them.
For any non-code related feedback, please email fritley@gmail.com or (if you have a TL account) PM me.
Chat: irc.quakenet.org #EvolutionChamber
----------------
My career is in building learning systems and AI. One day I thought, huh, it looks like Starcraft 2 has a set vocabulary, and the game _is_ deterministic, to a certain point in the game. That means I can write a program that can learn how to perform a build order better, in order to make myself better.
I want to repeat this. I wrote a program that can learn how to optimize a build order.
So what I want to see if I can prove is if my program works, and get feedback on this.
The input is like so. I want to reach a certain point in the game. That point in the game may be 7 roaches. The build order optimizer tells you step by step instructions on how to get there, and then optimizes to become the fastest way to get there.
Here is the output for a 7 roach rush, a build I've used on the ladder to great effect. Note the following:
This is (potentially) the FASTEST way to get 7 roaches. Not to have a good economy and 7 roaches, or 7 roaches and a queen (though as you can see, it thinks a queen is useful), but just 7 roaches.
It is also naive. It uses averages and numbers, it doesn't actually run a drone to the mineral line, or think about how long it takes to run a drone to build a spawning pool. It is a simulator, and is not subject to gas steals, scouting, or anything of that sort.
The way to read this is: @ -- This is at... so at 0 minutes and 0 seconds, you have M: Minerals G: Gas L: Larvae Supply: 6.0 of 10 Drone -- build a drone @1fetc -- ignore. Just an address.
the +1 means the thing has popped at that time. So at 15 seconds, a larva spawned.
The Build Order for fast roaches. + Show Spoiler + @0:0 M:50 G:0 L:3 S:6.0/10 Drone@1fc9896 @0:12 M:51 G:0 L:2 S: 7.0/10 Drone@85bc91 @0:15 Larva+1 @0:17 Drone+1 @0:23 M:52 G:0 L:2 S:8.0/10 Drone@1ee85f @0:29 Drone+1 @0:30 Larva+1 @0:33 M:54 G:0 L:2 S: 9.0/10 Drone@129e853 @0:40 Drone+1 @0:45 Larva+1 @0:50 Drone+1 @0:50 M:106 G:0 L:2 S:10.0/10 Overlord@53b641 @1:0 Larva+1 @1:15 Overlord+1 @1:15 Larva+1 @1:18 M:202 G:0 L:3 S:10.0/18 SpawningPool@1e2a632 @1:26 M:52 G:0 L:3 S: 9.0/18 Drone@10d3219 @1:34 M:52 G:0 L:2 S:10.0/18 Drone@1898dfc @1:41 Larva+1 @1:42 M:52 G:0 L:2 S:11.0/18 Drone@1c8d07e @1:43 Drone+1 @1:49 M:51 G:0 L:1 S:12.0/18 Drone@f03da2 @1:51 Drone+1 @1:56 Larva+1 @1:56 M:55 G:0 L:1 S:13.0/18 Drone@5e6792 @1:59 Drone+1 @2:6 Drone+1 @2:11 Larva+1 @2:11 M:135 G:0 L:1 S:14.0/18 Drone@1e1e208 @2:11 M:85 G:0 L:0 S:15.0/18 Extractor@be887e @2:13 Drone+1 @2:23 Spawning Pool+1 @2:26 Larva+1 @2:26 M:196 G:0 L:1 S:14.0/18 Drone@19c8632 @2:27 M:155 G:0 L:0 S:15.0/18 Queen@12e6b9b @2:28 Drone+1 @2:41 Extractor+1 @2:41 Larva+1 @2:41 M:141 G:1 L:1 S:17.0/18 Drone@9a8db8 @2:43 Drone+1 @2:48 M:150 G:15 L:0 S:18.0/18 RoachWarren@ce3285 @2:56 Larva+1 @2:56 M:62 G:30 L:1 S:17.0/18 Drone@156dd0d @2:58 Drone+1 @3:11 Larva+1 @3:11 M:139 G:58 L:1 S:18.0/18 Overlord@1ca9ff1 @3:13 Drone+1 @3:17 Queen+1 @3:26 Larva+1 @3:26 M:175 G:87 L:1 S:18.0/18 Overlord@1ca9057 @3:36 Overlord+1 @3:36 M:167 G:106 L:0 S:18.0/26 EcActionWait@1ca46d3 @3:41 Larva+1 @3:41 M:213 G:115 L:1 S:18.0/26 EcActionWait@effef4 @3:43 Roach Warren+1 @3:43 M:231 G:119 L:1 S:18.0/26 EcActionWait@4b843a @3:43 M:231 G:119 L:1 S:18.0/26 Roach@1d60d6d @3:51 Overlord+1 @3:56 Larva+1 @3:56 M:280 G:119 L:1 S:20.0/34 Roach@b752d @4:2 Larva+4 @4:2 M:265 G:105 L:4 S:22.0/34 Roach@39e69c @4:2 M:195 G:80 L:3 S:24.0/34 Roach@1532379 @4:2 M:125 G:55 L:2 S:26.0/34 Roach@13e0bc6 @4:5 M:83 G:36 L:1 S:28.0/34 Roach@770c65 @4:10 Roach+1 @4:11 Larva+1 @4:13 M:86 G:26 L:1 S:30.0/34 Roach@1cec45b @4:23 Roach+1 @4:26 Larva+1 @4:29 Roach+1 @4:29 Roach+1 @4:29 Roach+1 @4:32 Roach+1 @4:40 Roach+1
Poll: Do you ever think this should see the light of day?Yes. (1837) 89% No, and you've just ruined the metagame. (138) 7% No. (100) 5% 2075 total votes Your vote: Do you ever think this should see the light of day? (Vote): Yes. (Vote): No. (Vote): No, and you've just ruined the metagame.
Poll: What flavor would you like to see the build order optimizer in?Runnable Application. I want to use my awesome computer for personal gain! (1188) 62% Web Application. I want it to be the easiest thing to use, don't care if it is slow. (475) 25% Android Application. I want to do it at work. Discreetly. In the bathroom. (174) 9% Distributed Program. I don't care if it takes a while to get out, I want community support! (76) 4% 1913 total votes Your vote: What flavor would you like to see the build order optimizer in? (Vote): Runnable Application. I want to use my awesome computer for personal gain! (Vote): Web Application. I want it to be the easiest thing to use, don't care if it is slow. (Vote): Distributed Program. I don't care if it takes a while to get out, I want community support! (Vote): Android Application. I want to do it at work. Discreetly. In the bathroom.
Descriptions are here.
|
That's very interesting, though it'd be about 150x better if it could account for scouting on whatever number you scout on/required movement of workers.
|
I just use the digits provided by Liquipedia on their mineral/gas mining page. I could add arbitrary delays for things like moving a drone to build a building, but considering you can move a drone into position right within the time it takes to mine, that is mostly a moot point.
As for scouting, I thought about removing a drone at some scouting time, but eh. That's fine. If I make a real application out of this, it will definitely have the ability to do that.
I also don't have an option yet to pull workers out of gas, but again, that's not hard.
|
I don't understand whats so wrong about this. And just because you don't release it eventually someone will, if it is effective as you say it is.
|
Part of 'playing the game' over the long term is figuring out build orders. If I want 20 roaches and 10 hydras, this can give me a definitive answer as to the best way to get that, so I don't have to play 30 or so games, working and smoothing out the build order.
That's the danger. It is a significant advantage.
|
I don't see where the "moral problem" is here. This is merely a tool, it's not like it can play the game for you. With this kind of program SC2 can advance so much quicker than it has in the past, without the need to test build orders. For example, nobody would've guessed that an overpool/15 extractor would be the fastest way to get 7 roaches out.
EDIT: Is there a way to input multiple "goals" for the program? (i.e. get 7 Roaches and 1 set of Zerglings)
|
Can the program understand the advantages of a fast expo, if so, how much is that "worth"? And is there a certain number of drones you must maynard for the build order to work with the estimated worth of the expo?
|
Yes. It can tell you when to expo.
Right now, it assumes the available number of mineral patches is based on the number of hatcheries you have, same with gas, and that the workers are distributed evenly. A flaw right now is that it assumes the workers are maynarded over instantly, with no mineral time lost. That is going on the list of things to fix.
And how much is it worth? Well, it depends what your goal is. The bigger the goal (50 roaches, or just 20 zerglings) the longer it takes to achieve, so it accounts for building an expo in the former, but not the latter, because it is faster to do the latter with just a queen.
You can require it also to build an expo. So 7 roach fast expand could be a possible build for it to crunch.
I can also chain these builds together. So 7 roach to fast muta, find the best way to do that.
|
10 pool isn't even THAT much of an economic disadvantage.
Edit: It seems to have a problem with overlords in my opinion. Always gets them when it is supply capped. I don't think thats optimal?
|
On October 13 2010 08:58 Lomilar wrote: It is a simulator, and is not subject to gas steals, scouting, or anything of that sort.
Sounds cool, but it sounds like it only computes the fastest way to do something you already know you want to do (which btw isn't even the best way necessarily). As long as the above is true, I don't think you need to worry about any moral dilemma.
|
It sounds like it's blind and deaf but smart otherwise. In other words, it'll get you the fastest Mutalisk but it won't care that the enemy is attacking you with Marines and you need Zerglings now.
But yeah, feel free to release it. And make one for Protoss and Terran when you can. I'm impressed it considers expansions as well. If this program was somehow combined with the map analyzer, it would be that much more powerful.
|
I think in order for this to work beyond cheese you would have to input a few things. Like tell it to get up another hatchery, 35 drones, 2 spines, 4 zerglings, and 2 roaches then lair. Oh yea, and the zerglings and the roaches have to come out before the first hellion harrass. Knowing the fastest way to do this would be something useful. Can you program this?
|
The fastest way to do something is still the fastest way to do something.
If you are following this, but say a probe kills a drone, you will be behind a few seconds, but it still is probably the most efficient way.
|
On October 13 2010 09:14 flowandebb wrote: ... Edit: It seems to have a problem with overlords in my opinion. Always gets them when it is supply capped. I don't think thats optimal?
I didn't think that was optimal either, but if you think about it, an overpool means you start the pool while waiting for the overlord to pop, maximizing the number of minerals from 10 drones instead of 9 (and pretty early too, necessary for fast roaches), and the 2 overlords while waiting for the roach warren to pop also makes sense, since you want the supply right when you build the 7 roaches from when the queen larva pop.
PLEASE! If you can post a replay of you getting close to this time or beating it with a build order, I want to know.
But yes, a lot of things seem counter-intuitive, but run the build a few times, and it starts to make more sense.
|
Easy to make so just release it. It's a constraint problem, easily solved by a simple search - not like most programmers can't do it.
The problem is not "how fast can i make 10 battlecruisers!" The problem is: How can i sustain a good economy, and yet being able to fend off his army... The algorithm can't solve that.
|
...I somehow doubt this program is as impressive as you claim.
Say you told it you wanted to make 50 hydralisks. There are an extreme number of variables in that equation; when do larva start to appear at a new expansion? When can a queen get there? Should you expand 3 times as soon as possible or delay them? If so, by how much? I mean, how does your program possibly determine and optimize hundreds of precise timings? Does your claim that it 'learns' just mean that it gives you limited information as to how to 'optimize' a build once you already execute it?
|
|
On October 13 2010 09:24 tsuxiit wrote: ...I somehow doubt this program is as impressive as you claim.
Say you told it you wanted to make 50 hydralisks. There are an extreme number of variables in that equation; when do larva start to appear at a new expansion? When can a queen get there? Should you expand 3 times as soon as possible or delay them? If so, by how much? I mean, how does your program possibly determine and optimize hundreds of precise timings? Does your claim that it 'learns' just mean that it gives you limited information as to how to 'optimize' a build once you already execute it?
Give me a desired build. Something like, the fastest way to some mutalisks, or something like that.
There are indeed an extreme number of variables in that equation. I have programmed some tricks in there, such as waiting for a building to pop before doing anything more. I haven't done others, like building a second queen at your main while waiting for your expo.
My claim is, you give me a desired destination (10 lings, 5 roaches, 7 mutalisks), and within an hour or two, or maybe less, I will give you a build like the above, telling you how to do it very quickly.
|
I don't think by any means that this would be a detriment to the SC2 community. No one plays like a robot, and unexpected things happen in games because each game is emergent and dynamic.This just allows players to skip the hardest part of advancing the metagame, figuring out correct timings to optimize their builds! This program could very well be the death of many strategies and the birth of many more fruitful ones.
|
I was actually considering writing a similar program. This won't change much in the gaming scene however, as the game gets too dynamic as it goes on, but it may provide some clever builds. I'm curious what function you used to determine the effectiveness of drone mining, as there is diminishing returns for each drone as you approach 3 drones per patch.
|
|
|
|