Final Project for Complex Systems 530 WN18
This is an agent-based simulation for competitive Pokémon battles. Each agent in the simulation is a player, with a team. These agents are matched either randomly or by their Elo ranking, based on the pool of players available. The framework used can be used to implement any turn-based two-player game. In addition to Pokémon, Rock Paper Scissors is also implemented with appropriate agents.
- Install the requirements with
pip install -r requirements.txt
. - Pull down the Pokemon Showdown usage data with
python scripts/retrieve_data.py
. - Run the sample Pokémon simulation with
python scripts/run_simulation.py -f
, and select thesample_simulations/sample_pokemon.yaml
file. - Once completed, run
python scripts/visualize_results.py -m elo
, and select thelogs/PKMNPlayers_....csv
file to see the elo rankings over the course of the simulation.
agent - Contains classes for agents in the simulations
battle_engine - Contains classes for the game logic in the simulations
data - Contains the data for the Pokémon simulations
docs - Contains License and Template files
file_manager - Contains classes for creating and parsing logs generated by the simulations
interface - Contains code for the flask interface to play against an agent
ladder - Contains classes for the player matching scheme
pokemon_helpers - Contains helpers for the Pokémon simulations
sample_simulations - Contains pre-built simulation configs
scripts - Contains miscellaneous scripts to handle files and run tests
simulations - Contains classes for the individual simulations
stats - Contains functions to calculate statistics from and plots of the logs
tests - Contains unit test cases
writeup - Contains assignment submissions