Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/achoum/exploratron
Exploratron is a open-source turn-by-turn sandbox puzzle game with multiple simple mechanics that interact with each other and create complex and interesting emergent gameplay situations.
https://github.com/achoum/exploratron
genetic-algorithm machine-learning puzzle roguelike sandbox simulation
Last synced: about 2 months ago
JSON representation
Exploratron is a open-source turn-by-turn sandbox puzzle game with multiple simple mechanics that interact with each other and create complex and interesting emergent gameplay situations.
- Host: GitHub
- URL: https://github.com/achoum/exploratron
- Owner: achoum
- Created: 2022-06-19T19:53:02.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-12-26T10:01:45.000Z (almost 2 years ago)
- Last Synced: 2024-10-07T05:41:05.016Z (3 months ago)
- Topics: genetic-algorithm, machine-learning, puzzle, roguelike, sandbox, simulation
- Language: C++
- Homepage: https://achoum.github.io/exploratron
- Size: 5.46 MB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Exploratron
**Exploration** is a open-source turn-by-turn sandbox puzzle game with multiple simple mechanics that interact with each other and create complex and interesting emergent gameplay situations.
![](docs/game.gif)
Exploration is compatible with Linux, Windows and Web browser (using Webassembly).
You can play the Web browser version [here](https://achoum.github.io/exploratron).
## Compilation from source
Requires _Bazel_.
On Web browser:
```shell
./tools/game_wasm.sh
```On Linux:
```shell
./tools/game_terminal.sh
```On Windows:
```shell
tools\game_terminal.bat
```## Map creation
Maps are created using [Tiled](https://www.mapeditor.org/download.html). See examples in the `exploratron\assets\map` directory.
## Agent training
Exploratron is also a framework to train and evaluate agent using Machine Learning.
![](docs/agent_1.gif)
Read, modify and and run `./tools/train_agent.sh` to train and evaluate agents.
Some examples of commands (see `./tools/train_agent.sh` for details):
```shell
LOGDIR=$(pwd)/training_logs
FLAG="--config=linux --define=terminal=linux_console"
# MODE="-c dbg"
MODE="-c opt"# Run the evaluation on the "Gather" area using the Random controler (no leaning).
bazel run $MODE --config=linux --define=terminal=linux_console //exploratron/cli:evaluate_main $FLAG -- \
--arena=Gather --controller_key=Random --num_repetitions=100# Train and evaluate a genetic controller on the "Gather" area.
# Hyper-parameters are available in `exploratron/controller/genetic/genetic.h`
bazel run $MODE --config=linux //exploratron/controller/genetic:train_main $FLAG -- \
--training_log_base=${LOGDIR}/gather/genetic/r1_# Train and evaluate a hill climbing controller on the "Gather" area.
# Hyper-parameters are available in `exploratron/controller/hill_climb/hill_climb.h`
bazel run $MODE --config=linux //exploratron/controller/hill_climbing:train_main $FLAG -- \
--training_log_base=${LOGDIR}/gather/hill_climb/r1_# Run the evaluation on the "Gather" area using the keyboard controler (no leaning).
bazel run $MODE --config=linux //exploratron/cli:evaluate_main $FLAG -- \
--arena=Gather --controller_key=Keyboard
```Results can be compared using the R scipe `./tools/plot_training_logs.R`.