--- license: mit language: - en --- # README for Flappy-AI with Reinforcement Learning Model for the repository [flappy-ai](https://github.com/amc-madalin/flappy-ai), an project that utilizes reinforcement learning, to train an AI agent to master the game of Flappy Bird. This model is the 20th episode for the following hyperparameters: # File: config.yml ``` game_screen: width: 800 height: 600 game_mechanics: gravity: 5 flap_strength: 20 pipe_speed: 2 pipe_width: 100 pipe_gap: 200 character_size: 50 collision_penalty: -1 # Penalty for hitting a pipe pass_reward: 1 # Reward for successfully passing a pipe height_penalty: -0.1 # Penalty for flying too high or too low initial_positions: character_x: 350 character_y: 250 pipe_x: 800 pipe_height_min: 100 pipe_height_max: 400 ai_config: epsilon: 0.3 epsilon_min: 0.01 epsilon_decay: 0.98 gamma: 0.1 learning_rate: 0.0001 batch_size: 32 buffer_size: 5000 num_episodes: 500 other_settings: random_seed: 42 model: save_path: ./experiments/ load_path: ~ ``` ## Project Structure - `ai/`: This directory houses the core AI components, including the Q-network for decision making, the replay buffer for learning from past actions, and the training logic essential for the agent's learning process. - `assets/`: Here, you'll find all the graphical and audio assets utilized in the project, enriching the game's visual and auditory experience. - `configs/`: Contains various configuration files that allow customization and fine-tuning of the AI agent and the game environment. - `environment.yml`: A comprehensive list of dependencies required for the project, ensuring consistent setup across different environments. - `experiments/`: This section includes experimental code and data, showcasing the trials and tests conducted during the development process. - `game/`: Contains the game's logic and rendering code, the heart of the Flappy Bird game that the AI interacts with. - `model/`: Here lies the trained AI model, a testament to the learning and adaptation achieved through reinforcement learning. - `runs/`: Stores outputs from various training runs, providing insights into the AI's performance and learning progression. - `utils/`: A collection of utility scripts and modules that support various functionalities across the project. - `train.py`: The primary script used to kickstart the AI agent's training process. - `test_game.py`: A testing script to run the game independently of the AI agent, useful for debugging and game playthroughs. ## Installation To set up this project on your local machine, follow these steps: 1. Clone the repository: ```sh git clone https://github.com/amc-madalin/flappy-ai.git ``` 2. Navigate to the project directory: ```sh cd flappy-ai ``` 3. Install the required dependencies: ```sh conda env create -f environment.yml ``` ## Usage Once the installation is complete, you can start exploring Flappy-AI. 1. Activate the project environment: ```sh conda activate flappy-ai ``` 2. To begin training the AI agent, execute: ```sh python train.py ``` 3. To test the game mechanics without the AI agent, run: ```sh python test_game.py ``` ## License This project is released under the MIT License, promoting open-source collaboration and sharing.