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
here (older version 1.62b, a newer version is in development )
- unzip, run efb.exe, select your goals, press “click to continue”
- yes, the user interface… takes getting used to :>
- 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
You can read (and look at some pictures ) about the development history here.
* 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).