ClawSoftware

Evolution Forge (2002-2005)

* About:
Evolution Forge is a tool to calculate optimal build orders for the computer game StarCraft. An optimal build order is a series of build commands that result in the shortest needed time for a given goal
My motivation was:
- To implement evolutionary algorithms,
- to learn to program a GUI from the scratch,
- to learn proper OOP with C++
and most importantly
- to give StarCraft with new strategies a new flavor and
- to teach people about real implementations of evolutionary algorithms. It’s great to show others the beauty of nature :)

* Download:
here (older version 1.62b, a newer version is in development ;) )

* Quickstart:
- unzip, run efb.exe, select your goals, press “click to continue”
- yes, the user interface… takes getting used to :>

* Technicalities:
- Own graphic library (based on SDL)
- Used various SDL libraries (SDL_Image, SDL_TTF, SDL_Sound / FMOD)
- Portable to Linux as well as Windows
- C++ (2MB source code)
- Total Lines: 10586 (UI) + 7800 (CORE) + 9104 (GUI) = ~27000 LOC

* History
You can read (and look at some pictures ;) ) about the development history here.

* Screenshots:

You can choose between different games (rule sets) in the first screen.

You can choose between different games (rule sets) in the first screen.

Main screen where you can select the goals and follow the progress of the calculation.

Main screen where you can select the goals and follow the progress of the calculation.

In the database screen you can manage and compare different solutions that have been calculated by the tool.

In the database screen you can manage and compare different solutions that have been calculated by the tool.

You can customize the user interface and set advanced calculation options in the settings screen.

You can customize the user interface and set advanced calculation options in the settings screen.

* Example usage scenario (Main screen)
- The user wants to trick the enemy in the game
- He chooses to build several air units against which the other player has no defense against in the beginning
- He adds “4 wraiths” to the goal list in the menu on the left side
- The program automatically adds the required technology and production buildings to the goal list and sets an option to allow a variable number of workers
- The user is satisfied with the goal list and clicks on “Optimize” in the top right window
- The program creates a set of random but valid build order lists
- The program determines if the created build order fulfills the goals stated in the goal list and calculates the approximate time needed to execute the build order within the game.
- The program displays the best build order list in the window on the right. Different colors denote different types of units (production facilities, technology buildings, combat units, support units).
- Using genetic operators the build order is randomly changed (mutated). The main difficulty when creating the algorithm was to ensure to cover most of the search space as well as creating a valid build order.
- This process is repeated.
- If there were no changes for a while the program stops and creates a readable HTML output which could be printed or put online.

Future releases will include an online database where users can exchange their solutions. In addition there will be further choices to pick a build order (using a Pareto frontier).


Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!