BirdWar Game

Bird War - Reinforcement Learning,
End-of-year Project - 1st Year of Engineering Program

The end-of-first-year project took place in two phases: we had the first week to get familiar with arcade game development using SDL2, and then the second week to propose a game and implement a reinforcement learning solution on it.
With my classmates Julien and Lisa, we proposed an evasion game: the player controlled the bird (starting from the lower left corner) and had to move it to the key (upper right corner) while avoiding as many missiles as possible, with possible movements being 'forward' and 'up'.
For the next step, our program had to learn to play by itself. The idea was that initially, the program was unaware of the game rules. It only had the controls and a limited perception of its situation, meaning it knew its state at each moment from a predefined list of states we defined. Its choices were random initially (exploration phase). It received a penalty for each encountered missile and a reward for each collected key. Through the propagation of these rewards/penalties in subsequent decisions, it accumulated knowledge of what was a good choice in a given state (reward maximization). The more complete the cumulative knowledge, the more the program could rely on it (exploitation phase). After playing thousands of rounds, the program could reach the key without touching any missile.
We received a very good grade for this project.

Technologies Used

  • C, SDL2 library
  • Makefile, automated compilation

Transversal Skills

  • Teamwork
  • Oral presentation
Return to the main page