WebHost: Undo all softwrapping changes because people don't like it. Fair enough!

This commit is contained in:
Hussein Farran
2021-12-31 14:12:22 -05:00
parent 3e16593bb7
commit e2f61636cc
36 changed files with 1443 additions and 676 deletions

View File

@@ -1,23 +1,38 @@
# Advanced YAML Guide
This guide covers more the more advanced options available in YAML files. This guide is intended for the user who is intent on editing their YAML file manually. This guide should take about 10 minutes to read.
If you would like to generate a basic, fully playable, YAML without editing a file then visit the settings page for the game you intend to play.
This guide covers more the more advanced options available in YAML files. This guide is intended for the user who is
intent on editing their YAML file manually. This guide should take about 10 minutes to read.
The settings page can be found on the supported games page, just click the "Settings Page" link under the name of the game you would like. Supported games page: [Archipelago Games List](https://archipelago.gg/games)
If you would like to generate a basic, fully playable, YAML without editing a file then visit the settings page for the
game you intend to play.
Clicking on the "Export Settings" button at the bottom-left will provide you with a pre-filled YAML with your options. The player settings page also has an option to download a fully filled out yaml containing every option with every available setting for the available options.
The settings page can be found on the supported games page, just click the "Settings Page" link under the name of the
game you would like. Supported games page: [Archipelago Games List](https://archipelago.gg/games)
Clicking on the "Export Settings" button at the bottom-left will provide you with a pre-filled YAML with your options.
The player settings page also has an option to download a fully filled out yaml containing every option with every
available setting for the available options.
## YAML Overview
The Archipelago system generates games using player configuration files as input. These are going to be YAML files and each world will have one of these containing their custom settings for the game that world will play.
The Archipelago system generates games using player configuration files as input. These are going to be YAML files and
each world will have one of these containing their custom settings for the game that world will play.
## YAML Formatting
YAML files are a format of human-readable config files. The basic syntax of a yaml file will have a `root` node and then different levels of `nested` nodes that the generator reads in order to determine your settings.
To nest text, the correct syntax is to indent **two spaces over** from its root option. A YAML file can be edited with whatever text editor you choose to use though I personally recommend that you use Sublime Text. Sublime text website: [SublimeText Website](https://www.sublimetext.com)
YAML files are a format of human-readable config files. The basic syntax of a yaml file will have a `root` node and then
different levels of `nested` nodes that the generator reads in order to determine your settings.
This program out of the box supports the correct formatting for the YAML file, so you will be able to use the tab key and get proper highlighting for any potential errors made while editing the file. If using any other text editor you should ensure your indentation is done correctly with two spaces.
To nest text, the correct syntax is to indent **two spaces over** from its root option. A YAML file can be edited with
whatever text editor you choose to use though I personally recommend that you use Sublime Text. Sublime text
website: [SublimeText Website](https://www.sublimetext.com)
This program out of the box supports the correct formatting for the YAML file, so you will be able to use the tab key
and get proper highlighting for any potential errors made while editing the file. If using any other text editor you
should ensure your indentation is done correctly with two spaces.
A typical YAML file will look like:
```yaml
root_option:
nested_option_one:
@@ -28,58 +43,93 @@ root_option:
option_two_setting_two: 43
```
In Archipelago, YAML options are always written out in full lowercase with underscores separating any words. The numbers following the colons here are weights. The generator will read the weight of every option the roll that option that many times, the next option as many times as its numbered and so forth.
In Archipelago, YAML options are always written out in full lowercase with underscores separating any words. The numbers
following the colons here are weights. The generator will read the weight of every option the roll that option that many
times, the next option as many times as its numbered and so forth.
For the above example `nested_option_one` will have `option_one_setting_one` 1 time and `option_one_setting_two` 0 times so `option_one_setting_one` is guaranteed to occur.
For the above example `nested_option_one` will have `option_one_setting_one` 1 time and `option_one_setting_two` 0 times
so `option_one_setting_one` is guaranteed to occur.
For `nested_option_two`, `option_two_setting_one` will be rolled 14 times and `option_two_setting_two` will be rolled 43 times against each other. This means `option_two_setting_two` will be more likely to occur, but it isn't guaranteed adding more randomness and "mystery" to your settings.
For `nested_option_two`, `option_two_setting_one` will be rolled 14 times and `option_two_setting_two` will be rolled 43
times against each other. This means `option_two_setting_two` will be more likely to occur, but it isn't guaranteed
adding more randomness and "mystery" to your settings.
Every configurable setting supports weights.
### Root Options
Currently, there are only a few options that are root options. Everything else should be nested within one of these root options or in some cases nested within other nested options. The only options that should exist in root are `description`, `name`, `game`, `requires`, `accessibility`, `progression_balancing`, `triggers`, and the name of the games you want settings for.
* `description` is ignored by the generator and is simply a good way for you to organize if you have multiple files using this to detail the intention of the file.
Currently, there are only a few options that are root options. Everything else should be nested within one of these root
options or in some cases nested within other nested options. The only options that should exist in root
are `description`, `name`, `game`, `requires`, `accessibility`, `progression_balancing`, `triggers`, and the name of the
games you want settings for.
* `name` is the player name you would like to use and is used for your slot data to connect with most games. This can also be filled with multiple names each having a weight to it.
* `description` is ignored by the generator and is simply a good way for you to organize if you have multiple files
using this to detail the intention of the file.
* `game` is where either your chosen game goes or if you would like can be filled with multiple games each with different weights.
* `name` is the player name you would like to use and is used for your slot data to connect with most games. This can
also be filled with multiple names each having a weight to it.
* `requires` details different requirements from the generator for the YAML to work as you expect it to. Generally this is good for detailing the version of Archipelago this YAML was prepared for as if it is rolled on an older version may be missing settings and as such will not work as expected. If any plando is used in the file then requiring it here to ensure it will be used is good practice.
* `game` is where either your chosen game goes or if you would like can be filled with multiple games each with
different weights.
* `accessibility` determines the level of access to the game the generation will expect you to have in order to reach your completion goal. This supports `items`, `locations`, and `none` and is set to `locations` by default.
* `locations` will guarantee all locations are accessible in your world.
* `items` will guarantee you can acquire all items in your world but may not be able to access all locations. This mostly comes into play if there is any entrance shuffle in the seed as locations without items in them can be placed in areas that make them unreachable.
* `none` will only guarantee that the seed is beatable. You will be guaranteed able to finish the seed logically but may not be able to access all locations or acquire all items. A good example of this is having a big key in the big chest
in a dungeon in ALTTP making it impossible to get and finish the dungeon.
* `requires` details different requirements from the generator for the YAML to work as you expect it to. Generally this
is good for detailing the version of Archipelago this YAML was prepared for as if it is rolled on an older version may
be missing settings and as such will not work as expected. If any plando is used in the file then requiring it here to
ensure it will be used is good practice.
* `progression_balancing` is a system the Archipelago generator uses to try and reduce "BK mode" as much as possible. This primarily involves moving necessary progression items into earlier logic spheres to make the games more accessible so that players almost always have something to do. This can be turned `on` or `off` and is `on` by default.
* `accessibility` determines the level of access to the game the generation will expect you to have in order to reach
your completion goal. This supports `items`, `locations`, and `none` and is set to `locations` by default.
* `locations` will guarantee all locations are accessible in your world.
* `items` will guarantee you can acquire all items in your world but may not be able to access all locations. This
mostly comes into play if there is any entrance shuffle in the seed as locations without items in them can be
placed in areas that make them unreachable.
* `none` will only guarantee that the seed is beatable. You will be guaranteed able to finish the seed logically but
may not be able to access all locations or acquire all items. A good example of this is having a big key in the
big chest in a dungeon in ALTTP making it impossible to get and finish the dungeon.
* `triggers` is one of the more advanced options that allows you to create conditional adjustments. You can read more triggers in the triggers guide. Triggers guide: [Archipelago Triggers Guide](/tutorial/archipelago/triggers/en)
* `progression_balancing` is a system the Archipelago generator uses to try and reduce "BK mode" as much as possible.
This primarily involves moving necessary progression items into earlier logic spheres to make the games more
accessible so that players almost always have something to do. This can be turned `on` or `off` and is `on` by
default.
* `triggers` is one of the more advanced options that allows you to create conditional adjustments. You can read
more triggers in the triggers guide. Triggers
guide: [Archipelago Triggers Guide](/tutorial/archipelago/triggers/en)
### Game Options
One of your root settings will be the name of the game you would like to populate with settings. Since it is possible to give a weight to any option it is possible to have one file that can generate a seed for you where you don't know which game you'll play. For these cases you'll want to fill the game options for every game that can be rolled by these settings. If a game can be rolled it **must** have a settings section even if it is empty.
One of your root settings will be the name of the game you would like to populate with settings. Since it is possible to
give a weight to any option it is possible to have one file that can generate a seed for you where you don't know which
game you'll play. For these cases you'll want to fill the game options for every game that can be rolled by these
settings. If a game can be rolled it **must** have a settings section even if it is empty.
#### Universal Game Options
Some options in Archipelago can be used by every game but must still be placed within the relevant game's section.
Currently, these options are `start_inventory`, `start_hints`, `local_items`, `non_local_items`, `start_location_hints`, `exclude_locations`, and various plando options.
Currently, these options are `start_inventory`, `start_hints`, `local_items`, `non_local_items`, `start_location_hints`
, `exclude_locations`, and various plando options.
See the plando guide for more info on plando options. Plando guide: [Archipelago Plando Guide](/tutorial/archipelago/plando/en)
See the plando guide for more info on plando options. Plando
guide: [Archipelago Plando Guide](/tutorial/archipelago/plando/en)
* `start_inventory` will give any items defined here to you at the beginning of your game. The format for this must be the name as it appears in the game files and the amount you would like to start with. For example `Rupees(5): 6` which will give you the item `Rupees(5)` six times, totalling 30 rupees.
* `start_inventory` will give any items defined here to you at the beginning of your game. The format for this must be
the name as it appears in the game files and the amount you would like to start with. For example `Rupees(5): 6` which
will give you the item `Rupees(5)` six times, totalling 30 rupees.
* `start_hints` gives you free server hints for the defined item/s at the beginning of the game allowing you to hint for the location without using any hint points.
* `start_hints` gives you free server hints for the defined item/s at the beginning of the game allowing you to hint for
the location without using any hint points.
* `local_items` will force any items you want to be in your world instead of being in another world.
* `non_local_items` is the inverse of `local_items` forcing any items you want to be in another world and won't be located in your own.
* `non_local_items` is the inverse of `local_items` forcing any items you want to be in another world and won't be
located in your own.
* `start_location_hints` allows you to define a location which you can then hint for to find out what item is located in it to see how important the location is.
* `start_location_hints` allows you to define a location which you can then hint for to find out what item is located in
it to see how important the location is.
* `exclude_locations` lets you define any locations that you don't want to do and during generation will force a "junk" item which isn't necessary for progression to go in these locations.
* `exclude_locations` lets you define any locations that you don't want to do and during generation will force a "junk"
item which isn't necessary for progression to go in these locations.
### Example YAML
@@ -88,7 +138,7 @@ See the plando guide for more info on plando options. Plando guide: [Archipelago
description: An example using various advanced options
name: Example Player
game: A Link to the Past
requires:
requires:
version: 0.2.0
accessibility: none
progression_balancing: on
@@ -123,6 +173,7 @@ triggers:
```
#### This is a fully functional yaml file that will do all the following things:
* `description` gives us a general overview so if we pull up this file later we can understand the intent.
* `name` is `Example Player` and this will be used in the server console when sending and receiving items.
@@ -131,26 +182,37 @@ triggers:
* `requires` is set to require release version 0.2.0 or higher.
* `accesibility` is set to `none` which will set this seed to beatable only meaning some locations and items may be completely inaccessible but the seed will still be completable.
* `accesibility` is set to `none` which will set this seed to beatable only meaning some locations and items may be
completely inaccessible but the seed will still be completable.
* `progression_balancing` is set on meaning we will likely receive important items earlier increasing the chance of having things to do.
* `progression_balancing` is set on meaning we will likely receive important items earlier increasing the chance of
having things to do.
* `A Link to the Past` defines a location for us to nest all the game options we would like to use for our game `A Link to the Past`.
* `A Link to the Past` defines a location for us to nest all the game options we would like to use for our
game `A Link to the Past`.
* `smallkey_shuffle` is an option for A Link to the Past which determines how dungeon small keys are shuffled. In this example we have a 1/2 chance for them to either be placed in their original dungeon and a 1/2 chance for them to be placed anywhere amongst the multiworld.
* `smallkey_shuffle` is an option for A Link to the Past which determines how dungeon small keys are shuffled. In this
example we have a 1/2 chance for them to either be placed in their original dungeon and a 1/2 chance for them to be
placed anywhere amongst the multiworld.
* `start_inventory` defines an area for us to determine what items we would like to start the seed with. For this example we have:
* `Pegasus Boots: 1` which gives us 1 copy of the Pegasus Boots
* `Bombs (3)` gives us 2 packs of 3 bombs or 6 total bombs
* `start_inventory` defines an area for us to determine what items we would like to start the seed with. For this
example we have:
* `Pegasus Boots: 1` which gives us 1 copy of the Pegasus Boots
* `Bombs (3)` gives us 2 packs of 3 bombs or 6 total bombs
* `start_hints` gives us a starting hint for the hammer available at the beginning of the multiworld which we can use with no cost.
* `start_hints` gives us a starting hint for the hammer available at the beginning of the multiworld which we can use
with no cost.
* `local_items` forces the `Bombos`, `Ether`, and `Quake` medallions to all be placed within our own world, meaning we have to find it ourselves.
* `local_items` forces the `Bombos`, `Ether`, and `Quake` medallions to all be placed within our own world, meaning we
have to find it ourselves.
* `non_local_items` forces the `Moon Pearl` to be placed in someone else's world, meaning we won't be able to find it.
* `start_location_hints` gives us a starting hint for the `Spike Cave` location available at the beginning of the multiworld that can be used for no cost.
* `start_location_hints` gives us a starting hint for the `Spike Cave` location available at the beginning of the
multiworld that can be used for no cost.
* `exclude_locations` forces a not important item to be placed on the `Cave 45` location.
* `triggers` allows us to define a trigger such that if our `smallkey_shuffle` option happens to roll the `any_world` result it will also ensure that `bigkey_shuffle`, `map_shuffle`, and `compass_shuffle` are also forced to the `any_world` result.
* `triggers` allows us to define a trigger such that if our `smallkey_shuffle` option happens to roll the `any_world`
result it will also ensure that `bigkey_shuffle`, `map_shuffle`, and `compass_shuffle` are also forced to
the `any_world` result.

View File

@@ -1,10 +1,16 @@
### Helpful Commands
Commands are split into two types: client commands and server commands. Client commands are commands which are executed by the client and do not affect the Archipelago remote session. Server commands are commands which are executed by the Archipelago server and affect the Archipelago session or otherwise provide feedback from the server.
In clients which have their own commands the commands are typically prepended by a forward slash:`/`. Remote commands are always submitted to the server prepended with an exclamation point: `!`.
Commands are split into two types: client commands and server commands. Client commands are commands which are executed
by the client and do not affect the Archipelago remote session. Server commands are commands which are executed by the
Archipelago server and affect the Archipelago session or otherwise provide feedback from the server.
In clients which have their own commands the commands are typically prepended by a forward slash:`/`. Remote commands
are always submitted to the server prepended with an exclamation point: `!`.
#### Local Commands
The following list is a list of client commands which may be available to you through your Archipelago client. You execute these commands in your client window.
The following list is a list of client commands which may be available to you through your Archipelago client. You
execute these commands in your client window.
- `/connect <address:port>` Connect to the multiworld server.
- `/disconnect` Disconnects you from your current session.
@@ -15,9 +21,14 @@ The following list is a list of client commands which may be available to you th
- Just typing anything will broadcast a message to all players
#### Remote Commands
- `!hint <item name>` Tells you at which location in whose game your Item is. Note you need to have checked some locations to earn a hint. You can check how many you have by just running `!hint`
- `!forfeit` If you didn't turn on auto-forfeit or if you allowed forfeiting prior to goal completion. Remember that "forfeiting" actually means sending out your remaining items in your world.
- `!collect` Grants you all the remaining checks in your world. Can only be used after your goal is complete or when you have forfeited.
- `!hint <item name>` Tells you at which location in whose game your Item is. Note you need to have checked some
locations to earn a hint. You can check how many you have by just running `!hint`
- `!forfeit` If you didn't turn on auto-forfeit or if you allowed forfeiting prior to goal completion. Remember that "
forfeiting" actually means sending out your remaining items in your world.
- `!collect` Grants you all the remaining checks in your world. Can only be used after your goal is complete or when you
have forfeited.
#### Host only (on Archipelago.gg or in your server console)
- `/forfeit <Player Name>` Forfeits someone regardless of settings and game completion status

View File

@@ -1,68 +1,109 @@
# Archipelago Plando Guide
This guide details the use of the plando modules available with Archipelago. This guide is intended for a more advanced user who has more in-depth knowledge of the randomizer they're playing as well as experience editing YAML files. This guide should take about 10 minutes to read.
This guide details the use of the plando modules available with Archipelago. This guide is intended for a more advanced
user who has more in-depth knowledge of the randomizer they're playing as well as experience editing YAML files. This
guide should take about 10 minutes to read.
## What is Plando?
The purposes of randomizers is to randomize the items in a game to give a new experience. Plando takes this concept and changes it up by allowing you to plan out certain aspects of the game by placing certain items in certain locations, certain bosses in certain rooms, edit text for certain NPCs/signs, or even force certain region connections. Each of these options are going to be detailed separately as `item plando`, `boss plando`, `text plando`, and `connection plando`. Every game in archipelago supports item plando but the other plando options are only supported by certain games. Currently, Minecraft and LTTP both support connection plando, but only LTTP supports text and boss plando.
The purposes of randomizers is to randomize the items in a game to give a new experience. Plando takes this concept and
changes it up by allowing you to plan out certain aspects of the game by placing certain items in certain locations,
certain bosses in certain rooms, edit text for certain NPCs/signs, or even force certain region connections. Each of
these options are going to be detailed separately as `item plando`, `boss plando`, `text plando`,
and `connection plando`. Every game in archipelago supports item plando but the other plando options are only supported
by certain games. Currently, Minecraft and LTTP both support connection plando, but only LTTP supports text and boss
plando.
### Enabling Plando
On the website plando will already be enabled. If you will be generating the game locally plando features must be enabled manually (opt-in). To opt-in go to the archipelago installation directory (default: `C:\ProgramData\Archipelago`), open the host.yaml with a text editor and find the `plando_options` key. The available plando modules can be enabled by adding them after this such as `plando_options: bosses, items, texts, connections`.
On the website plando will already be enabled. If you will be generating the game locally plando features must be
enabled manually (opt-in). To opt-in go to the archipelago installation directory (
default: `C:\ProgramData\Archipelago`), open the host.yaml with a text editor and find the `plando_options` key. The
available plando modules can be enabled by adding them after this such
as `plando_options: bosses, items, texts, connections`.
## Item Plando
Item plando allows a player to place an item in a specific location or specific locations, place multiple items into a list of specific locations both in their own game or in another player's game. **Note that there's a very good chance that
cross-game plando could very well be broken i.e. placing on of your items in someone else's world playing a different game.**
* The options for item plando are `from_pool`, `world`, `percentage`, `force`, and either item and location, or items and locations.
* `from_pool` determines if the item should be taken *from* the item pool or *added* to it. This can be true or false and defaults to true if omitted.
* `world` is the target world to place the item in.
* It gets ignored if only one world is generated.
* Can be a number, name, true, false, or null. False is the default.
* If a number is used it targets that slot or player number in the multiworld.
* If a name is used it will target the world with that player name.
* If set to true it will be any player's world besides your own.
* If set to false it will target your own world.
* If set to null it will target a random world in the multiworld.
* `force` determines whether the generator will fail if the item can't be placed in the location can be true, false, or silent. Silent is the default.
* If set to true the item must be placed and the generator will throw an error if it is unable to do so.
* If set to false the generator will log a warning if the placement can't be done but will still generate.
* If set to silent and the placement fails it will be ignored entirely.
* `percentage` is the percentage chance for the relevant block to trigger. This can be any value from 0 to 100 and if omitted will default to 100.
* Single Placement is when you use a plando block to place a single item at a single location.
* `item` is the item you would like to place and `location` is the location to place it.
* Multi Placement uses a plando block to place multiple items in multiple locations until either list is exhausted.
* `items` defines the items to use and a number letting you place multiple of it.
* `locations` is a list of possible locations those items can be placed in.
* Using the multi placement method, placements are picked randomly.
Item plando allows a player to place an item in a specific location or specific locations, place multiple items into a
list of specific locations both in their own game or in another player's game. **Note that there's a very good chance
that cross-game plando could very well be broken i.e. placing on of your items in someone else's world playing a
different game.**
* The options for item plando are `from_pool`, `world`, `percentage`, `force`, and either item and location, or items
and locations.
* `from_pool` determines if the item should be taken *from* the item pool or *added* to it. This can be true or
false and defaults to true if omitted.
* `world` is the target world to place the item in.
* It gets ignored if only one world is generated.
* Can be a number, name, true, false, or null. False is the default.
* If a number is used it targets that slot or player number in the multiworld.
* If a name is used it will target the world with that player name.
* If set to true it will be any player's world besides your own.
* If set to false it will target your own world.
* If set to null it will target a random world in the multiworld.
* `force` determines whether the generator will fail if the item can't be placed in the location can be true, false,
or silent. Silent is the default.
* If set to true the item must be placed and the generator will throw an error if it is unable to do so.
* If set to false the generator will log a warning if the placement can't be done but will still generate.
* If set to silent and the placement fails it will be ignored entirely.
* `percentage` is the percentage chance for the relevant block to trigger. This can be any value from 0 to 100 and
if omitted will default to 100.
* Single Placement is when you use a plando block to place a single item at a single location.
* `item` is the item you would like to place and `location` is the location to place it.
* Multi Placement uses a plando block to place multiple items in multiple locations until either list is exhausted.
* `items` defines the items to use and a number letting you place multiple of it.
* `locations` is a list of possible locations those items can be placed in.
* Using the multi placement method, placements are picked randomly.
### Available Items
* A Link to the Past: [Link to the Past Item List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/alttp/Items.py#L52)
* Factorio Non-Progressive: [Factorio Technologies Wiki List](https://wiki.factorio.com/Technologies)
* Note that these use the *internal names*. For example, `advanced-electronics`
* Factorio Progressive: [Factorio Progressive Technologies List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/factorio/Technologies.py#L374)
* Minecraft: [Minecraft Items List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/minecraft/Items.py#L14)
* Ocarina of Time: [Ocarina of Time Items List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/oot/Items.py#L61)
* Risk of Rain 2: [Risk of Rain 2 Items List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/ror2/Items.py#L8)
* Slay the Spire: [Slay the Spire Items List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/spire/Items.py#L13)
* Subnautica: [Subnautica Items List JSON File](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/subnautica/items.json)
* Timespinner: [Timespinner Items List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/timespinner/Items.py#L11)
* A Link to the
Past: [Link to the Past Item List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/alttp/Items.py#L52)
* Factorio Non-Progressive: [Factorio Technologies Wiki List](https://wiki.factorio.com/Technologies)
* Note that these use the *internal names*. For example, `advanced-electronics`
* Factorio
Progressive: [Factorio Progressive Technologies List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/factorio/Technologies.py#L374)
*
Minecraft: [Minecraft Items List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/minecraft/Items.py#L14)
* Ocarina of
Time: [Ocarina of Time Items List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/oot/Items.py#L61)
* Risk of Rain
2: [Risk of Rain 2 Items List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/ror2/Items.py#L8)
* Slay the
Spire: [Slay the Spire Items List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/spire/Items.py#L13)
*
Subnautica: [Subnautica Items List JSON File](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/subnautica/items.json)
*
Timespinner: [Timespinner Items List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/timespinner/Items.py#L11)
### Available Locations
* A Link to the Past: [Link to the Past Locations List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/alttp/Regions.py#L429)
* A Link to the
Past: [Link to the Past Locations List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/alttp/Regions.py#L429)
* Factorio: [Factorio Technologies List Wiki](https://wiki.factorio.com/Technologies)
* In Factorio the location names are the same as the item names.
* Minecraft: [Minecraft Locations List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/minecraft/Locations.py#L18)
* Ocarina of Time: [Ocarina of Time Locations List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/oot/LocationList.py#L38)
* Risk of Rain 2: [Risk of Rain 2 Locations List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/ror2/Locations.py#L17)
* This is a special case. The locations are "ItemPickup[number]" up to the maximum set in the yaml.
* Slay the Spire: [Slay the Spire Locations List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/spire/Locations.py)
* Subnautica: [Subnautica Locations List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/subnautica/locations.json)
* Timespinner: [Timespinner Locations List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/timespinner/Locations.py#L13)
* In Factorio the location names are the same as the item names.
*
Minecraft: [Minecraft Locations List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/minecraft/Locations.py#L18)
* Ocarina of
Time: [Ocarina of Time Locations List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/oot/LocationList.py#L38)
* Risk of Rain
2: [Risk of Rain 2 Locations List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/ror2/Locations.py#L17)
* This is a special case. The locations are "ItemPickup[number]" up to the maximum set in the yaml.
* Slay the
Spire: [Slay the Spire Locations List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/spire/Locations.py)
*
Subnautica: [Subnautica Locations List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/subnautica/locations.json)
*
Timespinner: [Timespinner Locations List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/timespinner/Locations.py#L13)
A list of all available items and locations can also be found in the server's datapackage. Data package
JSON: [DataPackage JSON](/api/datapackage).
A list of all available items and locations can also be found in the server's datapackage. Data package JSON: [DataPackage JSON](/api/datapackage).
### Examples
```yaml
plando_items:
# example block 1 - Timespinner
# example block 1 - Timespinner
- item:
Empire Orb: 1
Radiant Orb: 1
@@ -70,8 +111,8 @@ plando_items:
from_pool: true
world: true
percentage: 50
# example block 2 - Ocarina of Time
# example block 2 - Ocarina of Time
- items:
Kokiri Sword: 1
Biggoron Sword: 1
@@ -90,8 +131,8 @@ plando_items:
- Shadow Temple Hover Boots Chest
- Spirit Temple Silver Gauntlets Chest
world: false
# example block 3 - Slay the Spire
# example block 3 - Slay the Spire
- items:
Boss Relic: 3
locations:
@@ -99,7 +140,7 @@ plando_items:
Boss Relic 2
Boss Relic 3
# example block 4 - Factorio
# example block 4 - Factorio
- items:
progressive-electric-energy-distribution: 2
electric-energy-accumulators: 1
@@ -112,32 +153,49 @@ plando_items:
percentage: 80
force: true
```
1. This block has a 50% chance to occur, and if it does will place either the Empire Orb or Radiant Orb on another player's Starter Chest 1 and removes the chosen item from the item pool.
2. This block will always trigger and will place the player's swords, bow, magic meter, strength upgrades, and hookshots in their own dungeon major item chests.
1. This block has a 50% chance to occur, and if it does will place either the Empire Orb or Radiant Orb on another
player's Starter Chest 1 and removes the chosen item from the item pool.
2. This block will always trigger and will place the player's swords, bow, magic meter, strength upgrades, and hookshots
in their own dungeon major item chests.
3. This block will always trigger and will lock boss relics on the bosses.
4. This block has an 80% chance of occuring and when it does will place all but 1 of the items randomly among the four locations chosen here.
4. This block has an 80% chance of occuring and when it does will place all but 1 of the items randomly among the four
locations chosen here.
## Boss Plando
As this is currently only supported by A Link to the Past instead of explaining here please refer to the Z3 plando guide. Z3 plando guide: [LttP Plando Guide](/tutorial/zelda3/plando/en)
As this is currently only supported by A Link to the Past instead of explaining here please refer to the Z3 plando
guide. Z3 plando guide: [LttP Plando Guide](/tutorial/zelda3/plando/en)
## Text Plando
As this is currently only supported by A Link to the Past instead of explaining here please refer to the Z3 plando guide. Z3 plando guide: [LttP Plando Guide](/tutorial/zelda3/plando/en)
As this is currently only supported by A Link to the Past instead of explaining here please refer to the Z3 plando
guide. Z3 plando guide: [LttP Plando Guide](/tutorial/zelda3/plando/en)
## Connections Plando
This is currently only supported by Minecraft and A Link to the Past. As the way that these games interact with their connections is different I will only explain the basics here while more specifics for Link to the Past connection plando can be found in its plando guide.
* The options for connections are `percentage`, `entrance`, `exit`, and `direction`. Each of these options support subweights.
This is currently only supported by Minecraft and A Link to the Past. As the way that these games interact with their
connections is different I will only explain the basics here while more specifics for Link to the Past connection plando
can be found in its plando guide.
* The options for connections are `percentage`, `entrance`, `exit`, and `direction`. Each of these options support
subweights.
* `percentage` is the percentage chance for this connection from 0 to 100 and defaults to 100.
* Every connection has an `entrance` and an `exit`. These can be unlinked like in A Link to the Past insanity entrance shuffle.
* Every connection has an `entrance` and an `exit`. These can be unlinked like in A Link to the Past insanity entrance
shuffle.
* `direction` can be `both`, `entrance`, or `exit` and determines in which direction this connection will operate.
Link to the Past connections: [Link to the Past Connections List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/alttp/EntranceShuffle.py#L3852)
Link to the Past
connections: [Link to the Past Connections List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/alttp/EntranceShuffle.py#L3852)
Minecraft connections: [Minecraft Connections List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/minecraft/Regions.py#L62)
Minecraft
connections: [Minecraft Connections List in the Code](https://github.com/ArchipelagoMW/Archipelago/blob/main/worlds/minecraft/Regions.py#L62)
### Examples
```yaml
plando_connections:
# example block 1 - Link to the Past
# example block 1 - Link to the Past
- entrance: Cave Shop (Lake Hylia)
exit: Cave 45
direction: entrance
@@ -147,8 +205,8 @@ plando_connections:
- entrance: Agahnims Tower
exit: Old Man Cave Exit (West)
direction: exit
# example block 2 - Minecraft
# example block 2 - Minecraft
- entrance: Overworld Structure 1
exit: Nether Fortress
direction: both
@@ -157,5 +215,9 @@ plando_connections:
direction: both
```
1. These connections are decoupled so going into the lake hylia cave shop will take you to the inside of cave 45 and when you leave the interior you will exit to the cave 45 ledge. Going into the cave 45 entrance will then take you to the lake hylia cave shop. Walking into the entrance for the old man cave and Agahnim's Tower entrance will both take you to their locations as normal but leaving old man cave will exit at Agahnim's Tower.
2. This will force a nether fortress and a village to be the overworld structures for your game. Note that for the Minecraft connection plando to work structure shuffle must be enabled.
1. These connections are decoupled so going into the lake hylia cave shop will take you to the inside of cave 45 and
when you leave the interior you will exit to the cave 45 ledge. Going into the cave 45 entrance will then take you to
the lake hylia cave shop. Walking into the entrance for the old man cave and Agahnim's Tower entrance will both take
you to their locations as normal but leaving old man cave will exit at Agahnim's Tower.
2. This will force a nether fortress and a village to be the overworld structures for your game. Note that for the
Minecraft connection plando to work structure shuffle must be enabled.

View File

@@ -1,49 +1,85 @@
# Archipelago Setup Guide
This guide is intended to provide an overview of how to install, set up, and run the Archipelago multiworld software. This guide should take about 5 minutes to read.
This guide is intended to provide an overview of how to install, set up, and run the Archipelago multiworld software.
This guide should take about 5 minutes to read.
## Installing the Archipelago software
The most recent public release of Archipelago can be found on the GitHub Releases page. GitHub Releases page: [Archipelago Releases Page](https://github.com/ArchipelagoMW/Archipelago/releases).
Run the exe file, and after accepting the license agreement you will be prompted on which components you would like to install.
The most recent public release of Archipelago can be found on the GitHub Releases page. GitHub Releases
page: [Archipelago Releases Page](https://github.com/ArchipelagoMW/Archipelago/releases).
The generator allows you to generate multiworld games on your computer. The ROM setups are required if anyone in the game that you generate wants to play any of those games as they are needed to generate the relevant patch files.
Run the exe file, and after accepting the license agreement you will be prompted on which components you would like to
install.
The server will allow you to host the multiworld on your machine. Hosting on your machine requires forwarding the port you are hosting on. The default port for Archipelago is `38281`. If you are unsure how to do this there are plenty of other guides on the internet that will be more suited to your hardware.
The generator allows you to generate multiworld games on your computer. The ROM setups are required if anyone in the
game that you generate wants to play any of those games as they are needed to generate the relevant patch files.
The `Clients` are what are used to connect your game to the multiworld. If the
game/games you plan to play are available here go ahead and install these as well. If the game you choose to play is supported by Archipelago but not listed in the installation check the setup guide for that game. Installing a client for a ROM based game requires you to have a legally obtained ROM for that game as well.
The server will allow you to host the multiworld on your machine. Hosting on your machine requires forwarding the port
you are hosting on. The default port for Archipelago is `38281`. If you are unsure how to do this there are plenty of
other guides on the internet that will be more suited to your hardware.
The `Clients` are what are used to connect your game to the multiworld. If the game/games you plan to play are available
here go ahead and install these as well. If the game you choose to play is supported by Archipelago but not listed in
the installation check the setup guide for that game. Installing a client for a ROM based game requires you to have a
legally obtained ROM for that game as well.
## Generating a game
### What is a YAML?
YAML is the file format which Archipelago uses in order to configure a player's world. It allows you to dictate which game you will be playing as well as the settings you would like for that game.
YAML is a format very similar to JSON however it is made to be more human-readable. If you are ever unsure of the validity of your YAML file you may check the file by uploading it to the check page on the Archipelago website. Check page: [YAML Validation Page](/mysterycheck)
YAML is the file format which Archipelago uses in order to configure a player's world. It allows you to dictate which
game you will be playing as well as the settings you would like for that game.
YAML is a format very similar to JSON however it is made to be more human-readable. If you are ever unsure of the
validity of your YAML file you may check the file by uploading it to the check page on the Archipelago website. Check
page: [YAML Validation Page](/mysterycheck)
### Creating a YAML
YAML files may be generated on the Archipelago website by visiting the games page and clicking the "Settings Page" link under any game. Clicking "Export Settings" in a game's settings page will download the YAML to your system. Games page: [Archipelago Games List](/games)
In a multiworld there must be one YAML per world. Any number of players can play on each world using either the game's native coop system or using Archipelago's coop support. Each world will hold one slot in the multiworld and will have a slot name and, if the relevant game requires it, files to associate it with that multiworld.
YAML files may be generated on the Archipelago website by visiting the games page and clicking the "Settings Page" link
under any game. Clicking "Export Settings" in a game's settings page will download the YAML to your system. Games
page: [Archipelago Games List](/games)
If multiple people plan to play in one world cooperatively then they will only need one YAML for their coop world. If each player is planning on playing their own game then they will each need a YAML.
In a multiworld there must be one YAML per world. Any number of players can play on each world using either the game's
native coop system or using Archipelago's coop support. Each world will hold one slot in the multiworld and will have a
slot name and, if the relevant game requires it, files to associate it with that multiworld.
If multiple people plan to play in one world cooperatively then they will only need one YAML for their coop world. If
each player is planning on playing their own game then they will each need a YAML.
### Gather All Player YAMLs
All players that wish to play in the generated multiworld must have a YAML file which contains the settings that they wish to play with.
Typically, a single participant of the multiworld will gather the YAML files from all other players. After getting the YAML files of each participant for your multiworld game they can be compressed into a ZIP folder to then be uploaded to the multiworld generator page. Multiworld generator page: [Archipelago Seed Generator Page](https://archipelago.gg/generate)
All players that wish to play in the generated multiworld must have a YAML file which contains the settings that they
wish to play with.
Typically, a single participant of the multiworld will gather the YAML files from all other players. After getting the
YAML files of each participant for your multiworld game they can be compressed into a ZIP folder to then be uploaded to
the multiworld generator page. Multiworld generator
page: [Archipelago Seed Generator Page](https://archipelago.gg/generate)
#### Rolling a YAML Locally
It is possible to roll the multiworld locally, using a local Archipelago installation. This is done by entering the installation directory of the Archipelago installation and placing each YAML file in the `Players` folder. If the folder does not exist then it can be created manually.
It is possible to roll the multiworld locally, using a local Archipelago installation. This is done by entering the
installation directory of the Archipelago installation and placing each YAML file in the `Players` folder. If the folder
does not exist then it can be created manually.
After filling the `Players` folder the `ArchipelagoGenerate.exe` program should be run in order to generate a multiworld. The output of this process is placed in the `output` folder.
After filling the `Players` folder the `ArchipelagoGenerate.exe` program should be run in order to generate a
multiworld. The output of this process is placed in the `output` folder.
#### Changing local host settings for generation
Sometimes there are various settings that you may want to change before rolling a seed such as enabling race mode, auto-forfeit, plando support, or setting a password.
All of these settings plus other options are able to be changed by modifying the `host.yaml` file in the Archipelago installation folder. The settings chosen here are baked into the `.archipelago` file that gets output with the other files after generation so if rolling locally ensure this file is edited to your liking *before* rolling the seed.
Sometimes there are various settings that you may want to change before rolling a seed such as enabling race mode,
auto-forfeit, plando support, or setting a password.
All of these settings plus other options are able to be changed by modifying the `host.yaml` file in the Archipelago
installation folder. The settings chosen here are baked into the `.archipelago` file that gets output with the other
files after generation so if rolling locally ensure this file is edited to your liking *before* rolling the seed.
## Hosting an Archipelago Server
The output of rolling a YAML will be a `.archipelago` file which can be subsequently uploaded to the Archipelago host game page. Archipelago host game page: [Archipelago Seed Upload Page](https://archipelago.gg/uploads)
The `.archipelago` file may be run locally in order to host the multiworld on the local machine. This is done by running `ArchipelagoServer.exe` and pointing the resulting file selection prompt to the `.archipelago` file that was generated.
The output of rolling a YAML will be a `.archipelago` file which can be subsequently uploaded to the Archipelago host
game page. Archipelago host game page: [Archipelago Seed Upload Page](https://archipelago.gg/uploads)
The `.archipelago` file may be run locally in order to host the multiworld on the local machine. This is done by
running `ArchipelagoServer.exe` and pointing the resulting file selection prompt to the `.archipelago` file that was
generated.

View File

@@ -1,38 +1,53 @@
# Archipelago Triggers Guide
This guide details the use of the Archipelago YAML trigger system. This guide is intended for a more advanced user with more in-depth knowledge of Archipelago YAML options as well as experience editing YAML files. This guide should take about 5 minutes to read.
This guide details the use of the Archipelago YAML trigger system. This guide is intended for a more advanced user with
more in-depth knowledge of Archipelago YAML options as well as experience editing YAML files. This guide should take
about 5 minutes to read.
## What are triggers?
Triggers allow you to customize your game settings by allowing you to define one or many options which only occur under specific conditions. These are essentially "if, then" statements for options in your game. A good example of what you can do with triggers is the custom mercenary mode YAML that was created using entirely triggers and plando.
Mercenary mode YAML: [Mercenary Mode YAML on GitHub](https://github.com/alwaysintreble/Archipelago-yaml-dump/blob/main/Snippets/Mercenary%20Mode%20Snippet.yaml)
Triggers allow you to customize your game settings by allowing you to define one or many options which only occur under
specific conditions. These are essentially "if, then" statements for options in your game. A good example of what you
can do with triggers is the custom mercenary mode YAML that was created using entirely triggers and plando.
For more information on plando you can reference the general plando guide or the Link to the Past plando guide.
Mercenary mode
YAML: [Mercenary Mode YAML on GitHub](https://github.com/alwaysintreble/Archipelago-yaml-dump/blob/main/Snippets/Mercenary%20Mode%20Snippet.yaml)
For more information on plando you can reference the general plando guide or the Link to the Past plando guide.
General plando guide: [Archipelago Plando Guide](/tutorial/archipelago/plando/en)
Link to the Past plando guide: [LttP Plando Guide](/tutorial/zelda3/plando/en)
## Trigger use
Triggers have to be defined in the root of the yaml file meaning it must be outside a game section.
The best place to do this is the bottom of the yaml.
- Triggers comprise the trigger section and then each trigger must have an `option_category`, `option_name`, and `option_result` from which it will react to and then an `options` section where the definition of what will happen.
Triggers have to be defined in the root of the yaml file meaning it must be outside a game section. The best place to do
this is the bottom of the yaml.
- Triggers comprise the trigger section and then each trigger must have an `option_category`, `option_name`,
and `option_result` from which it will react to and then an `options` section where the definition of what will
happen.
- `option_category` is the defining section from which the option is defined in.
- Example: `A Link to the Past`
- This is the root category the option is located in. If the option you're triggering off of is in root then you
would use `null`, otherwise this is the game for which you want this option trigger to activate.
- This is the root category the option is located in. If the option you're triggering off of is in root then you
would use `null`, otherwise this is the game for which you want this option trigger to activate.
- `option_name` is the option setting from which the triggered choice is going to react to.
- Example: `shop_item_slots`
- This can be any option from any category defined in the yaml file in either root or a game section except for `game`.
- Example: `shop_item_slots`
- This can be any option from any category defined in the yaml file in either root or a game section except
for `game`.
- `option_result` is the result of this option setting from which you would like to react.
- Example: `15`
- Each trigger must be used for exactly one option result. If you would like the same thing to occur with multiple results you would need multiple triggers for this.
- `options` is where you define what will happen when this is detected. This can be something as simple as ensuring another option also gets selected or placing an item in a certain location.
- Example:
- Each trigger must be used for exactly one option result. If you would like the same thing to occur with multiple
results you would need multiple triggers for this.
- `options` is where you define what will happen when this is detected. This can be something as simple as ensuring
another option also gets selected or placing an item in a certain location.
- Example:
```yaml
A Link to the Past:
start_inventory:
Rupees (300): 2
```
This format must be:
```yaml
@@ -42,7 +57,9 @@ This format must be:
```
### Examples
The above examples all together will end up looking like this:
```yaml
triggers:
- option_category: A Link to the Past
@@ -54,9 +71,11 @@ The above examples all together will end up looking like this:
Rupees(300): 2
```
For this example if the generator happens to roll 15 shuffled in shop item slots for your game you'll be granted 600 rupees at the beginning. These can also be used to change other options.
For this example if the generator happens to roll 15 shuffled in shop item slots for your game you'll be granted 600
rupees at the beginning. These can also be used to change other options.
For example:
```yaml
triggers:
- option_category: Timespinner
@@ -66,4 +85,5 @@ For example:
Timespinner:
Inverted: true
```
In this example if your world happens to roll `SpecificKeycards` then your game will also start in inverted.

View File

@@ -1,16 +1,33 @@
# Using the Archipelago Website
This guide encompasses the use cases for rolling and hosting multiworld games on the Archipelago website. This guide should only take a couple of minutes to read.
This guide encompasses the use cases for rolling and hosting multiworld games on the Archipelago website. This guide
should only take a couple of minutes to read.
## Rolling the Seed On the Website
1. After gathering the YAML files together in one location, select all the files and compress them into a `.ZIP` file.
2. Next go to the "Generate Game" page. Generate game page: [Archipelago Seed Generation Page](https://archipelago.gg/generate). Here, you can adjust some server settings such as forfeit rules and the cost for a player to use a hint before generation.
3. After adjusting the host settings to your liking click on the Upload File button and using the explorer window that opens, navigate to the location where you zipped the player files and upload this zip. The page will generate your game and refresh multiple times to check on completion status.
4. After the generation completes you will be on a Seed Info page that provides the seed, the date/time of creation, a link to the spoiler log, if available, and links to any rooms created from this seed.
5. To begin playing, click on "Create New Room", which will take you to the room page. From here you can navigate back to the Seed Info page or to the Tracker page. Sharing the link to the room page with your friends will provide them with the necessary info and files for them to connect to the multiworld.
1. After gathering the YAML files together in one location, select all the files and compress them into a `.ZIP` file.
2. Next go to the "Generate Game" page. Generate game
page: [Archipelago Seed Generation Page](https://archipelago.gg/generate). Here, you can adjust some server settings
such as forfeit rules and the cost for a player to use a hint before generation.
3. After adjusting the host settings to your liking click on the Upload File button and using the explorer window that
opens, navigate to the location where you zipped the player files and upload this zip. The page will generate your
game and refresh multiple times to check on completion status.
4. After the generation completes you will be on a Seed Info page that provides the seed, the date/time of creation, a
link to the spoiler log, if available, and links to any rooms created from this seed.
5. To begin playing, click on "Create New Room", which will take you to the room page. From here you can navigate back
to the Seed Info page or to the Tracker page. Sharing the link to the room page with your friends will provide them
with the necessary info and files for them to connect to the multiworld.
## Hosting a Pre-Generated Multiworld on the Website
The easiest and most recommended method is to generate the game on the website which will allow you to create a private room with all the necessary files you can share, as well as hosting the game and supporting item trackers for various games.
If for some reason the seed was rolled on a machine, then either the resulting zip file or the resulting `AP_XXXXX.archipelago` inside the zip file can be uploaded to the host game page. Host game page: [Archipelago Seed Upload Page](https://archipelago.gg/uploads)
The easiest and most recommended method is to generate the game on the website which will allow you to create a private
room with all the necessary files you can share, as well as hosting the game and supporting item trackers for various
games.
This will give a page with the seed info and a link to the spoiler log, if it exists. Click on "Create New Room" and then share the link to the resulting page the other players so that they can download their patches or mods. The room will also have a link to a Multiworld Tracker and tell you what the players need to connect to from their clients.
If for some reason the seed was rolled on a machine, then either the resulting zip file or the
resulting `AP_XXXXX.archipelago` inside the zip file can be uploaded to the host game page. Host game
page: [Archipelago Seed Upload Page](https://archipelago.gg/uploads)
This will give a page with the seed info and a link to the spoiler log, if it exists. Click on "Create New Room" and
then share the link to the resulting page the other players so that they can download their patches or mods. The room
will also have a link to a Multiworld Tracker and tell you what the players need to connect to from their clients.