Update README.md

This commit is contained in:
Skilly
2026-09-06 17:15:06 +02:00
parent 3d6ff8603a
commit 43afae8f63

View File

@@ -1,30 +1,8 @@
# Archipelago World Tester
_Disclaimer: AI was used in this project_
This project checks whether [community Archipelago worlds](https://docs.google.com/spreadsheets/d/1iuzDTOAvdoNe8Ne8i461qGNucg5OuEoF-Ikqs8aUQZw/edit?gid=58422002#gid=58422002) can generate a seed.
It reads the community worlds spreadsheet, downloads each world's newest `.apworld` file, and runs Archipelago's generator against it in a Docker container. To see the results of this live in action, see [worlds.archipelago.skillysue.nl](https://worlds.archipelago.skillysue.nl)
Each world is tested five ways:
- by itself
- with two players of the same game
- with 25 of Archipelago's built-in worlds
- by itself with its options randomized
- with other worlds and its options randomized
Each test is repeated with different seeds. The results are combined into one of six stability values:
| Value | Meaning |
| --- | --- |
| Stable | Every attempt succeeded |
| Minor issues | Solo and multiworld tests worked, but a randomized test failed |
| Flaky | Some attempts succeeded and others failed |
| Solo only | Works by itself, but fails with other worlds |
| Broken | Could not generate at all |
| Unknown | No usable result, for example because the `.apworld` was missing or a ROM was required |
A successful test means the world loaded, generated a seed, and computed the spoiler log at the configured level. With the default `playthrough` level, this also checks that the seed is completable.
# Archipelago World Generation Tester
_Disclaimer: AI was used in this repository_
This repository contains a python packages that can check whether community Archipelago worlds can generate a valid seed without bringing down the multi-game world.
It uses the [community worlds spreadsheet](https://docs.google.com/spreadsheets/d/1iuzDTOAvdoNe8Ne8i461qGNucg5OuEoF-Ikqs8aUQZw/edit?gid=58422002#gid=58422002) to download each world's newest `.apworld` file, and runs Archipelago's generator against it in a Docker container. To see the results of this live in action, see [worlds.archipelago.skillysue.nl](https://worlds.archipelago.skillysue.nl)
## Contents
- [Requirements](#requirements)
@@ -33,6 +11,7 @@ A successful test means the world loaded, generated a seed, and computed the spo
- [Install the package](#install-the-package)
- [Configuration](#configuration)
- [GitHub](#github)
- [Testing overview](#testing-overview)
- [Test worlds](#test-worlds)
- [Test all worlds](#test-all-worlds)
- [Test a local `.apworld`](#test-a-local-apworld)
@@ -112,25 +91,52 @@ The tester checks and downloads hundreds of apworlds from GitHub repositories. I
GITHUB_TOKEN=ghp_<your_token_here>
```
## Testing overview
Each world is tested five ways:
- by itself
- with two players of the same game
- with 25 of Archipelago's built-in worlds
- by itself with its options randomized
- with other worlds and its options randomized
Each test is repeated with different seeds. The results are combined into one of six stability values:
| Value | Meaning |
| --- | --- |
| Stable | Every attempt succeeded |
| Minor issues | Solo and multiworld tests worked, but a randomized test failed |
| Flaky | Some attempts succeeded and others failed |
| Solo only | Works by itself, but fails with other worlds |
| Broken | Could not generate at all |
| Unknown | No usable result, for example because the `.apworld` was missing or a ROM was required |
A successful test means the world loaded, generated a seed, and computed the spoiler log at the configured level. With the default `playthrough` level, this also checks that the seed is completable.
## Test worlds
The `TestRun` class can be used to test one or more worlds:
```python
from apworld_tester import TestRun
TestRun("Baba Is You").run()
test = TestRun("Baba Is You")
test.run()
```
To test multiple worlds, supply the names as a list:
```python
TestRun(["Baba Is You", "Anodyne"]).run()
test = TestRun(["Baba Is You", "Anodyne"])
test.run()
```
To test all worlds that have already been downloaded, add `cached=True`:
```python
TestRun(cached=True).run()
test = TestRun(cached=True)
test.run()
```
The first run clones Archipelago and builds the Docker image, which can take several minutes.
@@ -141,7 +147,8 @@ The real benefit of the tester is to parse the community worlds spreadsheet and
```python
from apworld_tester import UpdateRun
UpdateRun().run()
updater = UpdateRun()
updater.run()
```
## Test a local `.apworld`
@@ -153,15 +160,16 @@ In case you want to test a world for which you have an apworld locally, you can
└── my_game.apworld
```
Then run:
Then run the following:
```python
from apworld_tester import TestRun
TestRun(
"My Game",
root_directory="/home/you/my-apworlds",
).run()
test = TestRun(
game="My Game",
root_directory="~/my-apworlds",
)
test.run()
```
## Related Projects