Tracks
We are submitting to the General and Entertainment tracks.
Inspiration
A project idea we've wanted to attempt since Freshman year.
What it does
Applies the machine learning algorithm NEAT to a zombie survival game in Unity 3D. The game play is a series of "waves" where each zombie within the wave is a phenome and each wave is a generation. This allows the zombies to learn how to best counter the player and continuously challenge them.
How we built it
We read the original NEAT paper by Kenneth O. Stanley and decided to use the the UnitySharpNEAT package within a custom built Unity3D game. The NEAT algorithm reads parameters about the zombies' surroundings as inputs to the black box and outputs controls for the zombie character controller. After each wave of zombies are defeated, the zombie with the best fitness has its genes bred with the others and the overall zombie AI improves.
Challenges we ran into
Unity3D is a difficult engine for a hackathon since there are so many small bugs and challenges that must be worked through before a functioning game emerges, in addition to a steep learning curve. Before this, we had no experience with the NEAT algorithm or genetic algorithms, so understanding and implementing it was challenging. Also, for some reason Git took 2 hours to push.
Accomplishments that we're proud of
Watching an AI evolve in real-time to defeat the player and develop emergent behaviors.
What we learned
- How to implement NEAT
- How NEAT works
- How Genetic Algorithms work
- How to develop games in Unity ## What's next for Unnatural Selection
- Grow the social experience
- Share phenotypes that you develop with friends
- Load phenotypes that have been shared with you
- Create a always online version of the game, that players around the world contribute to
- Distribute generational passes of the NEAT algorithm
- Continue refining the character controller
- Implement co-op multiplayer
- Tweak the inputs/outputs of the neural network
- Add a stamina resource that the AI must manage
- Dissuade continuous jumping and sprinting
- Increase the density of the raycasting points
- Implement different types of zombies
- Allow the genetic algorithm to determine physical attributes of the zombies
- Evolve different specialized species over time
Log in or sign up for Devpost to join the conversation.