What is it? SCFusion is a build order optimizer (I believe the original was EvolutionChamber written by Lomilar http://www.teamliquid.net/forum/viewmessage.php?topic_id=160231). It is written in C++ with strict memory control and other optimisations that allow it to simulate build orders at a rate of up to 1 million games / sec. Its purpose is to provide a build order that allows you to achieve the requirements as fast as possible.

As an example for how you can use it, if you wanted to find the fastest way to achieve a 4 hellbat rush with 2 medivacs, you would select a Terran build order, enter in '4' next to 'Hellbat', and '2' next to 'Medivac'. It would then give you something like the following build order which will get you the results at around 6 minutes and 10 seconds:

You might then decide that this doesn't leave you with a very good economy, and it can easily be scouted. So you might then want to make sure that by 3 minutes you have a barracks and a second supply depot under construction so you can block your ramp. To do this, add a waypoint (bottom left button) and expand barracks and supply depot and set their 'under construction' to 1. You can also change the SCVs in the target to 20 to ensure you have a good economy. This would give a build order such as the following:

At ~6:20 it's a bit later than the previous 4 hellbat & 1 medivac rush, but it's still pretty quick, it denies scouting, and it gives you a good economy. If there are other things you want to include (eg, a marine to kill scouting workers or zerglings) then you can add waypoints to do that too.

It's still a work in progress, so if you have any comments or feature requests, please reply here or create an issue on the GoogleCode site.

Enhancements:Application will remember the last used game/versionLotV updated to 23 October balance updateLotV time conversion factor modified to 1.38 to make the build times more realistic and achievable

Bug Fixes:Waypoint times have been updated to be multiplied by time conversion factorIntro information has been restored, and updated with more recent links

Enhancements:Saving/loading: build orders (along with their settings & requirements) can now be saved & loaded as XML files.

Bug Fixes:Gas Micro option "Three when geyser ready" now works.Creep Tumors no longer cause an infinite loop.Starport Tech Lab research for WoL fixed.Reapers now require 1 supply, rather than 2.Waypoints that are already complete no longer require an intermediate command or event to be marked complete.

Bug fixes:Fixed handling of maximums that might discourage the algorithm from completing a waypointFixed initial build order error messageFixed duplicate command for waypoints relying on targets under construction

Enhancements:Adds 'Nuke' as a targetAdds 'MULEs Available' as a targetAdds 'Scanner Sweeps Available' as a target

Bug Fixes:Fixes minimal output combining commands that have probes built inbetween.Fixes use of Chronoboost from a single nexus.Improves use of Queens & injecting larvae.Removed Lair requirement for Overlord speed in HotS.

Hopefully fixes energy usage issue for regions that use commas instead of periods for decimal marks.Adds bases as a target, with the ability to have macro hatcheries & command centers (ie, not built at a new base).

On November 12 2010 10:09 DaBears57 wrote:I think I speak for all protoss players when I say I hope no one makes a Terran version .

Lol, I hear ya. However, the developer side of my mind will probably take priority, so I expect I'll have a Terran version in the not too distant future.

Incidentally, I've got this grand idea of being able to develop a system that would automatically test build orders against eachother. So for instance, it runs the Protoss version of this app to get the best build order for 5 stalkers and then it builds a custom map with an AI that uses that build order, then runs it against a standard (Very Hard) AI using a standard build order (like a Terran 3rax). Records the results, then repeats the process for 6 stalkers, and so on. Idea being that it would hopefully find certain combinations that due to the timings are particularly strong against common builds.

I expect that something like that is a LONG way down the track though (if it's even possible to implement with any sort of usefulness).

I am just applying for a masters in artificial intelligence. This topic interests me a lot

I was wondering how is it that you simulate a build order in a game? For what I understand, your breeding function is just mutating the best builds. But in order to know who to mutate you need to determine its fitness. This fitness should come from running the build order and looking at the result compared to your stud. Or, how do you calculate the fitness of a build?

Thanks for the responses - nice to know there's interest in this version. Will try to answer questions as they come up.

On November 12 2010 10:28 Karliath wrote:Say I put in "1 Dark Templar" with the default time limit. What happens?

The system will set up the requirements for any input received. So if you put in 1 DT, it knows that it has to build a Dark Shrine, which requires a Twilight Council, Cybernetics Core, Gateway, and Pylon. From there it just starts randomly coming up with build orders, and it will start to breed & mutate them to get closer to the result. So if it randomly decides to build a pylon then gateway, it'll likely prefer to develop on that build when it comes to the next generation, so hopefully it then decides to try building a core, and so on.

On November 12 2010 10:41 Undead_Knight wrote:I was wondering how is it that you simulate a build order in a game? For what I understand, your breeding function is just mutating the best builds. But in order to know who to mutate you need to determine its fitness. This fitness should come from running the build order and looking at the result compared to your stud. Or, how do you calculate the fitness of a build?

My algorithm is a true GA - it breeds build orders as well as mutating them. A build order is exactly that - just an order of commands to execute. It breeds them by taking half of one build order and adding it to half of another build order. It then runs through every command and it has a 1% chance for each mutation operation (I have 6 - insert, delete, move, immediate swap, random swap, mutate) to apply it to that command. Calculating the fitness is done by running a simulation using that build order. The value it gives is based on how much of the target it fulfills, and how fast it does it (although if it didn't complete the target then it uses the time limit for how long it took). Breeding selection is then done with roulette wheel selection.

On November 12 2010 10:49 Kinky wrote:I put in 30 probes just for a preemptive test and it's telling me to get 4 assimilators after 130386225 runs >_>

I am a bit surprised to hear that. When I run it myself I get a satisfactory result very quickly (within 2 million games / 5 seconds).

On November 12 2010 11:10 kochujang wrote:Is it possible to include a FE into the optimizer? The effectiveness of dual chronoboost would interest me.

It knows that it can build a second nexus, but I don't think it will ever choose that just for chrono boost as it'd almost always be better just to build another production facility.

On November 12 2010 11:18 Chronicle wrote:Works great. Only issue I have with it is that when it is fullscreened it does not expand to fullscreen, the build order remains the same size. Would be nice to be able to see builds fullscreened.