diff --git a/celeste/README.md b/celeste/README.md index 009d7c2..e9d71ea 100644 --- a/celeste/README.md +++ b/celeste/README.md @@ -1,15 +1,37 @@ # Celeste-AI: A Celeste Classic DQL Agent -This is an attempt to create an agent that learns to play Celeste Classic. +This is an attempt to create a deep Q-learning agent that learns to play Celeste Classic. + + ## Contents - - `./resources`: contain files these scripts require. Notably, we have an (old) version of PICO-8 that's known to work with this script, and a version of Celeste Classic with telementery and delays called `hackcel.p8`. + - `./resources`: contains files this script requires. Notably, we have an (old) version of PICO-8 that's known to work with this script, and a version of Celeste Classic with telementery and delays called `hackcel.p8`. + - `ffmpeg.sh`: uses game screenshots to make real-time video of the agent's attempts. Read the script, it's pretty simple. + - `plot.py`: generates plots from model snapshots. These are placed in `model_data/current/plots/`. ## Setup +Before you set up Celeste-AI, you need to prepare PICO-8. See [`resources/README.md`](./resources/README.md) + + + This is designed to work on Linux. You will need `xdotool` to send keypresses to the game. 1. `cd` into this directory 2. Make and enter a venv -3. `pip install -e .` \ No newline at end of file +3. `pip install -e .` + +Once you're set up, you can... + - `python celeste_ai/train.py` to train a model + - `python plot.py` to make prediction plots + - `python test.py` to test a model + + +**Before running, be aware of the following:** + - Only one instance of PICO-8 can be running at a time. See `celeste.py`. + - `hackcel.p8` captures a screenshot of every frame. PICO-8 will probably place these on your desktop. Since this repo contains a rather old version of PICO-8, there is no way to change where it places screenshots. `train.py` will delete, move, and rename screenshots automatically during training, but you should tell it where your desktop is first. + - When you start training, a `model_data` directory will be created. It contains the following: + - `model_archive`: history of the model. Save interval is configured inside `train.py` + - `screenshots`: contains subdirectories. Each subdirectory contains the frames of one episode. Use `ffmpeg.sh` to turn these into a video. + - `plots`: generated by `plot.py`. Contains pretty plots. \ No newline at end of file