Skip to content

ericyuegu/hal

Repository files navigation

HAL

Training superhuman AI for Super Smash Bros. Melee via imitation learning and RL.

HAL is named after both HAL Laboratory, the developer of Super Smash Bros. Melee, and HAL 9000, the infamous robot villain from 2001: A Space Odyssey.

Blog: https://ericyuegu.com/melee-pt1.

Quick start

Setup venv:

uv sync
source .venv/bin/activate

To download ready-made datasets and emulator for training and eval, request keys for the S3 bucket from the maintainer @ericyuegu.

You can copy keys to .env or your .bashrc.

source .env
uv run fetch    # will download to `<repo_root>/data/` by default

Training experiments reside as single files under experiments/.

uv run experiments/001_flow_matching_baseline.py

To launch experiments on cloud, wrap your local training command with a launcher script:

uv run scripts/launch_vast.py --max-price 1.0 -- uv run experiments/001_flow_matching_baseline.py

Data

Raw datasets

From the Slippi Discord server:

Data preprocessing

To create your own training datasets from .slp files, there are 3 helpful scripts in hal/scripts/:

# step 1: indexing - supports directly reading from .7z archives on-the-fly
uv run hal/scripts/build_index.py --archive data/raw/dev.7z --output data/processed/dev/index.jsonl

# step 2: filtering
uv run hal/scripts/filter.py --index data/processed/dev/index.jsonl --output data/processed/dev/paths.txt

# step 3: materializing
uv run hal/scripts/materialize.py --paths-file data/processed/dev/paths.txt --index data/processed/dev/index.jsonl --output data/processed/dev/mds

About

Training AI for Super Smash Bros. Melee

Resources

Stars

36 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages