Update README.md
This commit is contained in:
78
README.md
78
README.md
@@ -1,30 +1,8 @@
|
|||||||
# Archipelago World Tester
|
# Archipelago World Generation Tester
|
||||||
_Disclaimer: AI was used in this project_
|
_Disclaimer: AI was used in this repository_
|
||||||
|
|
||||||
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 2–5 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.
|
|
||||||
|
|
||||||
|
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
|
## Contents
|
||||||
- [Requirements](#requirements)
|
- [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)
|
- [Install the package](#install-the-package)
|
||||||
- [Configuration](#configuration)
|
- [Configuration](#configuration)
|
||||||
- [GitHub](#github)
|
- [GitHub](#github)
|
||||||
|
- [Testing overview](#testing-overview)
|
||||||
- [Test worlds](#test-worlds)
|
- [Test worlds](#test-worlds)
|
||||||
- [Test all worlds](#test-all-worlds)
|
- [Test all worlds](#test-all-worlds)
|
||||||
- [Test a local `.apworld`](#test-a-local-apworld)
|
- [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>
|
GITHUB_TOKEN=ghp_<your_token_here>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Testing overview
|
||||||
|
|
||||||
|
Each world is tested five ways:
|
||||||
|
|
||||||
|
- by itself
|
||||||
|
- with two players of the same game
|
||||||
|
- with 2–5 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
|
## Test worlds
|
||||||
The `TestRun` class can be used to test one or more worlds:
|
The `TestRun` class can be used to test one or more worlds:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
from apworld_tester import TestRun
|
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:
|
To test multiple worlds, supply the names as a list:
|
||||||
|
|
||||||
```python
|
```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`:
|
To test all worlds that have already been downloaded, add `cached=True`:
|
||||||
|
|
||||||
```python
|
```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.
|
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
|
```python
|
||||||
from apworld_tester import UpdateRun
|
from apworld_tester import UpdateRun
|
||||||
|
|
||||||
UpdateRun().run()
|
updater = UpdateRun()
|
||||||
|
updater.run()
|
||||||
```
|
```
|
||||||
|
|
||||||
## Test a local `.apworld`
|
## 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
|
└── my_game.apworld
|
||||||
```
|
```
|
||||||
|
|
||||||
Then run:
|
Then run the following:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
from apworld_tester import TestRun
|
from apworld_tester import TestRun
|
||||||
|
|
||||||
TestRun(
|
test = TestRun(
|
||||||
"My Game",
|
game="My Game",
|
||||||
root_directory="/home/you/my-apworlds",
|
root_directory="~/my-apworlds",
|
||||||
).run()
|
)
|
||||||
|
test.run()
|
||||||
```
|
```
|
||||||
|
|
||||||
## Related Projects
|
## Related Projects
|
||||||
|
|||||||
Reference in New Issue
Block a user