Starting location after beginning the game
Beginning of evolution.
Simpler set of enemies in the base generation.
Evolution takes time. Some in the first set of offsprings are still easy.
Enemies in base generation.
We wanted enhance classic arcade style games through implementing Machine Learning algorithms to the enemy bot.
How we built it
The base game that is similar to Space Invaders and Galaga was built using the Pygame library in Python. Sprites, animations, and other assets were built using Gimp. To determine the attributes of enemies in each room, we used an library called inspyred that implements many genetic algorithms. Successive generations of enemies are constructed via a Laplace crossover (this means that each offspring trait has an expected value of the mean of the two parent traits, but tends to be closer to one of the parents) of the parents and Gaussian mutations (random value drawn from a Gaussian distribution is added to each trait) for randomness to find solutions outside of the original generation. To allow relatively quick evolution, we use a generational replacement algorithm that allows the fittest parents to survive to successive generations.
Challenges we ran into
Merging these two was difficult because multiprocessing can be tricky when information needs to go between processes. Map generation that was semi-randomized took effort to develop. The parameters for the evolutionary algorithms are not obvious and with more time, we could tweak them so that evolution occurs more quickly.
Accomplishments that we're proud of
We are proud that we learned about the basics of genetic algorithms and their uses, implemented a nuanced map generation method, and have a functional product that improves as the user plays.
What's next for Alien Swarm
Different enemy types. More varied movement patterns and strategies. Improved bosses.