Written thesis and implemented project about Genetic Algorithms for game balancing at the gaming company Wooga.
OBS! Ongoing, expected to finish in october 2014.
Objective-C, C++, Cocos2D, AI, Genetic Algorithms, SourceTree, git
Master Thesis about researching how Artificial Intelligence and Genetic Algorithms could guide the balancing of a mobile real-time strategy game. Genetic Algorithms are algorithms that mimic evolutionary behavior, and good at finding optimal solutions. The game considered was a prototype in production at the social and mobile gaming company Wooga, founded in 2009 and based in Berlin, Germany. Wooga has hit games such as Jelly Splash, Diamond Dash and Pearl's Peril. The project was carried out by me and one other student, Ann Michélsen, for 5-6 months during 2014.
The idea behind the thesis was to see if Genetic Algorithms can guide and speed up the balancing process of a mobile real-time strategy game developed at Wooga. From this we took a decision to create an application that can help with the balancing of units in the game, since there are a lot of units and a lot of values that needs balance. And to do this we decided to try out Genetic Algorithms to evolve optimal build orders that can be analysed by a game designer.
We created an ingame application where two AI play against each other after a predefined build order. The build order is the exact order and placement of units throughout the game. When the AIs are done playing against each other, their performance in the game is evaluated and they are given a fitness score. This score is used as a pointer to decide what build orders will continue to the next generation. When all generations are done an optimal build order is found. A game designer can use this to see for example is a unit is never used and then change values according to conclusions about this, or for example try to play against an AI playing after build order to be able to analyse the units used even further.
When we started this project we had to dig into a code base that was about 1 year old and the application was done in Objective-C and Cocos2D, the battle logic and AI was done in C++. It was a big code base, and quite some challenge to learn since this was my first time with C++. But a lot of learnings and experience was gained by creating our own part of this project. We worked stand alone from the team and took our own decisions. It was our responsibility to take the project forward and develop a useful application. I also gained deeper knowledge within AI and Genetic Algorithms, as well as Objective-C, Cocos2D and C++.