A Pygame implementation of classic Flappy-Bird game controlled by Neuroevolutional AI.
Images resources are found online, you may use them for any purposes.
This project uses the NEAT(NeuroEvolution of Augmenting Topologies) algorithm with neat-python.
Check out the initial NEAT Paper here.
In our NEAT algorithm, each bird has its own genomes(weights of its neural network), and birds that performs well get to pass their genomes to the next generation. Our idea is to evolve the "best" set of genome through generations to make the birds master the game.
neat-python
:
pip install neat-python
pygame
:
pip install pygame
Clone this project and run flappy-bird.py
.
****** Running generation 1 ******
Population's average fitness: 192.69333 stdev: 98.08002
Best fitness: 812.60000 - size: (3, 7) - species 2 - id 35
Average adjusted fitness: 0.010
Mean genetic distance 3.222, standard deviation 0.580
Population of 75 members in 31 species:
ID age size fitness adj fit stag
==== === ==== ======= ======= ====
1 1 8 751.6 0.181 0
2 1 9 812.6 0.073 0
3 1 2 175.4 0.000 0
4 1 2 175.6 0.000 0
5 1 2 175.6 0.000 0
6 1 2 175.2 0.000 1
7 1 2 175.2 0.000 1
8 1 2 175.4 0.000 1
9 1 2 175.8 0.000 0
10 1 2 251.4 0.040 1
11 1 2 175.4 0.000 0
12 1 2 175.6 0.001 1
13 1 2 175.6 0.000 0
14 1 2 175.8 0.000 0
15 1 2 175.4 0.000 0
16 1 2 175.6 0.000 1
17 1 2 176.0 0.001 0
18 1 2 175.4 0.000 1
19 1 2 175.4 0.000 0
20 1 2 175.4 0.000 1
21 1 2 175.6 0.000 0
22 1 2 175.4 0.000 0
23 1 2 175.8 0.000 0
24 1 2 175.6 0.000 0
25 1 2 175.4 0.000 0
26 1 2 175.6 0.000 0
27 1 2 175.4 0.000 1
28 1 2 175.4 0.000 0
29 1 2 176.0 0.001 0
30 1 2 176.2 0.001 0
31 1 2 175.4 0.000 0
Total extinctions: 0
Generation time: 6.907 sec (6.901 average)
- increase the difficulty along with game progress
- try different model architectures
- add random rewards and punishments(such as fruits and bombs) in the game
- ...