Inspiration
Video Games often feature epic bad guys and boss fights but, with preprogrammed attack patterns they can often suffer from feeling predictable. We believe that reinforcement learning could alleviate this issue and create a variety of strategically complex enemies for players to fight.
What it does/How we built it
Our project is a training pipeline for reinforcement learning models. Its YAML-based configuration system makes it extremely easy to tune parameters and create new scenarios to train the AI on. The logging and checkpointing systems keep you informed on how the training process is going and automatically save snapshots of the model at set intervals.
The training uses our PyTorch implementation of Q-Learning a popular and effective algorithm for reinforcement learning. The game is highly extendible allowing the training pipeline to easily be applied to new games.
Challenges we ran into
One of the biggest challenges what working asynchronously. Most of us had not worked in a group before this project but we overcame this challenge with our asynchronous development cycle. Together, we broke down the project into standalone components and developed them asynchronously communicating often to ensure interdependencies were met. We then tested everything in isolation and brought it all together when it was ready.
Extensions
Upgrading the Game:
- Terrains, obstacles
- Melee weapon, shields, grenades, magazines, reloading
- Distinct characters, abilities, power-ups
Experimenting with optimizations:
- Effect of different loss functions
- Effect of different reward functions
- Using model optimizations algorithms like NEAT
Log in or sign up for Devpost to join the conversation.