We were inspired to develop Boost after being impressed and intrigued by several evolutionary neural network projects on social media. We wanted to create a project that allowed us to not only expand our skills in game development and Python, but also to implement and tune a trainable neural network.

Our project has three main parts: a map creator, a racing game, and an AI trainer. The map creator draws a smooth line (using an svg) that connects points clicked by the user, then saves the file. The racing game uses this map and creates the track along with a starting line and checkpoints, then allows a user or an AI to control cars on the map, with collision detection. We used the Pygame library as a graphics engine, and wrote all of the physics and collision logic from scratch. Finally, the AI trainer initializes a neural network using the NEAT Python library, and trains the AI across many generations of randomly mutated neural networks. After training, the best AI of each generation is saved, and can be used to play back the game.

Our past experiences at hackathons proved to us that they are the perfect opportunity to learn new things in the field of programming. We had very limited knowledge of game development, Python, and neural networks a few days ago, but now believe we have a substantial grasp on their implementation. Despite our unfamiliarity with the subjects we focused on this weekend, we ended up using lots of previous knowledge from various educational fields. From linear algebra to kinematics, this project was an amazing mix of old knowledge and new skills. We even dabbled in pixel art and graphics effects to make the game more appealing.

In its current state, Boost can learn to finish a new map in as little as three generations, and long periods of training effectively improve its operation. We're extremely proud of its performance and our main aspirations for the future of the project are making it more user-friendly, efficient, and generalized, allowing easy changes to physics constants and vehicle parameters.

Built With

Share this project:

Updates