2021-12-20 03:54:45 +00:00
|
|
|
# Advanced YAML Guide
|
2023-06-02 03:33:12 +00:00
|
|
|
This guide covers more the more advanced options available in YAML files. This guide is intended for the user who plans
|
|
|
|
to edit their YAML file manually. This guide should take about 10 minutes to read.
|
2021-11-10 20:26:31 +00:00
|
|
|
|
2024-04-06 23:25:26 +00:00
|
|
|
If you would like to generate a basic, fully playable YAML without editing a file, then visit the options page for the
|
WebHost: Massive overhaul of options pages (#2614)
* Implement support for option groups. WebHost options pages still need to be updated.
* Remove debug output
* In-progress conversion of player-options to Jinja rendering
* Support "Randomize" button without JS, transpile SCSS to CSS, include map file for later editors
* Un-alphabetize options, add default group name for item/location Option classes, implement more option types
* Re-flow UI generation to avoid printing rows with unsupported or invalid option types, add support for TextChoice options
* Support all remaining option types
* Rendering improvements and CSS fixes for prettiness
* Wrap options in a form, update button styles, fix labels, disable inputs where the default is random, nuke the JS
* Minor CSS tweaks, as recommended by the designer
* Hide JS-required elements in noscript tag. Add JS reactivity to range, named-range, and randomize buttons.
* Fix labels, add JS handling for TextChoice
* Make option groups collapsable
* PEP8 current option_groups progress (#2604)
* Make the python more PEP8 and remove unneeded imports
* remove LocationSet from `Item & Location Options` group
* It's ugly, but YAML generation is working
* Stop generating JSON files for player-options pages
* Do not include ItemDict entries whose values are zero
* Properly format yaml output
* Save options when form is submitted, load options on page load
* Fix options being omitted from the page if a group has an even number of options
* Implement generate-game, escape option descriptions
* Fix "randomize" checkboxes not properly setting YAML options to "random"
* Add a separator between item/location groups and items/locations in their respective lists
* Implement option presets
* Fix docs to detail what actually ended up happening
* implement option groups on webworld to allow dev sorting (#2616)
* Force extremely long item/location/option names with no spaces to text-wrap
* Fix "randomize" button being too wide in single-column display, change page header to include game name
* Update preset select to read "custom" when updating form inputs. Show error message if the user doesn't input a name
* Un-break weighted-options, add option group names to weighted options
* Nuke weighted-options. Set up framework to rebuild it in Jinja.
* Generate styles with scss, remove styles which will be replaced, add placeholders for worlds
* Support Toggle, DefaultOnToggle, and Choice options in weighted-options
* Implement expand/collapse without JS for worlds and option groups
* Properly style set options
* Implement Range and NamedRange. Also, CSS is hard.
* Add support for remaining option types. JS and backend still forthcoming.
* Add JS functionality for collapsing game divs, populating span values on range updates. Add <noscript> tag to warn users with JS disabled.
* Support showing/hiding game divs based on range value for game
* Add support for adding/deleting range rows
* Save settings to localStorage on form submission
* Save deleted options on form submission
* Break weighted-options into a per-game page.
- Break weighted-options into a per-game page
- Add "advanced options" links to supported games page
- Use details/summary tags on supported games, player-options, and weighted-options
- Fix bug preventing previously deleted rows from being removed on page load if JS is enabled
- Move route handling for options pages to options.py
- Remove world handling from weighted-options
* Implement loading previous settings from localStorage on page load if JS is enabled
* Weighted options can now generate YAML files and single-player games
* options pages now respect option visibility settings for simple and complex pages
* Remove `/weighted-settings` redirect, fix weighted-options link on player-options page
* Fix instance of AutoWorld not having access to proper `random`
* Catch instances of frozenset along with set
* Restore word-wrap in tooltips
* Fix word wrap in player-options labels
* Add `dedent` filter to help with formatting tooltips in player-options
* Do not change the ordering of keys when printing yaml files
* Move necessary import out of conditional statement
* Expand only the first option group by default on both options pages
* Respect option visibility when generating yaml template files
* Swap to double quotes
* Replace instances of `/weighted-settings` with `/weighted-options`, swap out incomplete links
* Strip newlines and spaces after applying dedent filter
* Fix documentation for option groups
* Update site map
* Update various docs
* Sort OptionSet lists alphabetically
* Minor style tweak
* Fix extremely long text overflowing tooltips
* Convert player-options to use CSS grid instead of tables
* Do not display link to weighted-options page on supported games if the options page is an external link
* Update worlds/AutoWorld.py
Bugfix by @alwaysintreble
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
* Fix NamedRange options not being properly set if a preset it loaded
* Move option-presets route into options.py
* Include preset name in YAML if not "default" and not "custom"
* Removed macros for PlandoBosses and DefaultOnToggle, as they were handled by their parent classes
* Fix not disabling custom inputs when the randomize button is clicked
* Only sort OptionList and OptionSet valid_keys if they are unordered
* Quick style fixes for player-settings to give `select` elements `text-overflow: ellipsis` and increase base size of left-column
* Prevent showing a horizontal scroll bar on player-options if the browser width was beneath a certain threshold
* Fix a bug in weighted-options which prevented inputting a negative value for new range inputs
---------
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
2024-05-18 04:11:57 +00:00
|
|
|
game you intend to play.
|
2021-11-10 20:26:31 +00:00
|
|
|
|
2024-04-06 23:25:26 +00:00
|
|
|
The options page can be found on the supported games page, just click the "Options Page" link under the name of the
|
|
|
|
game you would like.
|
|
|
|
|
2022-02-14 23:21:19 +00:00
|
|
|
* Supported games page: [Archipelago Games List](/games)
|
2021-12-31 19:12:22 +00:00
|
|
|
|
2024-04-06 23:25:26 +00:00
|
|
|
Clicking on the "Export Options" button at the bottom-left will provide you with a pre-filled YAML with your options.
|
|
|
|
The player options page also has a link to download a full template file for that game which will have every option
|
2023-06-02 03:33:12 +00:00
|
|
|
possible for the game including some that don't display correctly on the site.
|
2021-12-20 03:54:45 +00:00
|
|
|
|
|
|
|
## YAML Overview
|
2021-12-31 19:12:22 +00:00
|
|
|
|
|
|
|
The Archipelago system generates games using player configuration files as input. These are going to be YAML files and
|
2024-04-06 23:25:26 +00:00
|
|
|
each world will have one of these containing their custom options for the game that world will play.
|
2021-11-10 20:26:31 +00:00
|
|
|
|
2021-11-14 19:26:30 +00:00
|
|
|
## YAML Formatting
|
2021-12-20 03:54:45 +00:00
|
|
|
|
2021-12-31 19:12:22 +00:00
|
|
|
YAML files are a format of human-readable config files. The basic syntax of a yaml file will have a `root` node and then
|
2024-04-06 23:25:26 +00:00
|
|
|
different levels of `nested` nodes that the generator reads in order to determine your options.
|
2021-12-31 19:12:22 +00:00
|
|
|
|
|
|
|
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)
|
2021-12-20 03:54:45 +00:00
|
|
|
|
2021-12-31 19:12:22 +00:00
|
|
|
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
|
2024-04-21 00:49:48 +00:00
|
|
|
should ensure your indentation is done correctly with two spaces. After editing your YAML file, you can validate it at
|
|
|
|
the website's [validation page](/check).
|
2021-12-20 03:54:45 +00:00
|
|
|
|
|
|
|
A typical YAML file will look like:
|
2021-12-31 19:12:22 +00:00
|
|
|
|
2021-11-10 20:26:31 +00:00
|
|
|
```yaml
|
|
|
|
root_option:
|
|
|
|
nested_option_one:
|
|
|
|
option_one_setting_one: 1
|
|
|
|
option_one_setting_two: 0
|
|
|
|
nested_option_two:
|
|
|
|
option_two_setting_one: 14
|
|
|
|
option_two_setting_two: 43
|
|
|
|
```
|
|
|
|
|
2021-12-31 19:12:22 +00:00
|
|
|
In Archipelago, YAML options are always written out in full lowercase with underscores separating any words. The numbers
|
2023-06-02 03:33:12 +00:00
|
|
|
following the colons here are weights. The generator will read the weight of every option, then roll that option that
|
|
|
|
many times, the next option as many times as its numbered and so forth.
|
2021-12-20 03:54:45 +00:00
|
|
|
|
2021-12-31 19:12:22 +00:00
|
|
|
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.
|
2021-12-20 03:54:45 +00:00
|
|
|
|
2021-12-31 19:12:22 +00:00
|
|
|
For `nested_option_two`, `option_two_setting_one` will be rolled 14 times and `option_two_setting_two` will be rolled 43
|
2022-01-16 00:59:40 +00:00
|
|
|
times against each other. This means `option_two_setting_two` will be more likely to occur, but it isn't guaranteed,
|
2024-04-06 23:25:26 +00:00
|
|
|
adding more randomness and "mystery" to your options. Every configurable setting supports weights.
|
2021-11-10 20:26:31 +00:00
|
|
|
|
2022-07-06 21:06:32 +00:00
|
|
|
## Root Options
|
2021-12-20 03:54:45 +00:00
|
|
|
|
2021-12-31 19:12:22 +00:00
|
|
|
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
|
2024-04-06 23:25:26 +00:00
|
|
|
are `description`, `name`, `game`, `requires`, and the name of the games you want options for.
|
2021-12-31 19:12:22 +00:00
|
|
|
|
|
|
|
* `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.
|
2021-12-20 03:54:45 +00:00
|
|
|
|
2021-12-31 19:12:22 +00:00
|
|
|
* `name` is the player name you would like to use and is used for your slot data to connect with most games. This can
|
2023-01-02 20:42:47 +00:00
|
|
|
also be filled with multiple names each having a weight to it. Names can also contain certain keywords, surrounded by
|
|
|
|
curly-braces, which will be replaced on generation with a number:
|
|
|
|
|
|
|
|
* `{player}` will be replaced with the player's slot number.
|
|
|
|
* `{PLAYER}` will be replaced with the player's slot number if that slot number is greater than 1, otherwise blank.
|
|
|
|
* `{number}` will be replaced with the counter value of the name.
|
|
|
|
* `{NUMBER}` will be replaced with the counter value of the name if the counter value is greater than 1, otherwise
|
|
|
|
blank.
|
2021-12-20 03:54:45 +00:00
|
|
|
|
2023-06-02 03:33:12 +00:00
|
|
|
* `game` is where either your chosen game goes or, if you would like, can be filled with multiple games each with
|
2021-12-31 19:12:22 +00:00
|
|
|
different weights.
|
2021-12-20 03:54:45 +00:00
|
|
|
|
2021-12-31 19:12:22 +00:00
|
|
|
* `requires` details different requirements from the generator for the YAML to work as you expect it to. Generally this
|
2024-05-24 00:36:45 +00:00
|
|
|
is good for detailing the version of Archipelago this YAML was prepared for. If it is rolled on an older version,
|
2024-04-06 23:25:26 +00:00
|
|
|
options may be missing and as such it will not work as expected. If any plando is used in the file then requiring it
|
2023-06-02 03:33:12 +00:00
|
|
|
here to ensure it will be used is good practice.
|
2021-11-10 20:26:31 +00:00
|
|
|
|
2022-07-06 21:06:32 +00:00
|
|
|
## Game Options
|
2021-11-10 20:26:31 +00:00
|
|
|
|
2024-04-06 23:25:26 +00:00
|
|
|
One of your root options will be the name of the game you would like to populate with options. Since it is possible to
|
2023-06-02 03:33:12 +00:00
|
|
|
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
|
2021-12-31 19:12:22 +00:00
|
|
|
game you'll play. For these cases you'll want to fill the game options for every game that can be rolled by these
|
2024-04-06 23:25:26 +00:00
|
|
|
settings. If a game can be rolled it **must** have an options section even if it is empty.
|
2021-11-10 20:26:31 +00:00
|
|
|
|
2022-07-06 21:06:32 +00:00
|
|
|
### Universal Game Options
|
2021-11-10 20:26:31 +00:00
|
|
|
|
|
|
|
Some options in Archipelago can be used by every game but must still be placed within the relevant game's section.
|
2021-11-30 03:26:08 +00:00
|
|
|
|
2023-06-02 03:33:12 +00:00
|
|
|
Currently, these options are `accessibility`, `progression_balancing`, `triggers`, `local_items`, `non_local_items`,
|
|
|
|
`start_inventory`, `start_hints`, `start_location_hints`, `exclude_locations`, `priority_locations`, `item_links`, and
|
|
|
|
various plando options.
|
2021-11-30 03:26:08 +00:00
|
|
|
|
2021-12-31 19:12:22 +00:00
|
|
|
See the plando guide for more info on plando options. Plando
|
2022-04-14 21:21:36 +00:00
|
|
|
guide: [Archipelago Plando Guide](/tutorial/Archipelago/plando/en)
|
2021-11-30 03:26:08 +00:00
|
|
|
|
2023-06-02 03:33:12 +00:00
|
|
|
* `accessibility` determines the level of access to the game the generation will expect you to have in order to reach
|
2024-08-05 22:00:33 +00:00
|
|
|
your completion goal. This supports `full`, `items`, and `minimal` and is set to `full` by default.
|
|
|
|
* `full` will guarantee all locations are accessible in your world.
|
2023-06-02 03:33:12 +00:00
|
|
|
* `items` will guarantee you can acquire all logically relevant items in your world. Some items, such as keys, may
|
2024-08-05 22:00:33 +00:00
|
|
|
be self-locking. This value only exists in and affects some worlds.
|
2023-06-02 03:33:12 +00:00
|
|
|
* `minimal` 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.
|
2023-10-22 11:11:19 +00:00
|
|
|
* `progression_balancing` is a system the Archipelago generator uses to try and reduce
|
|
|
|
["BK mode"](/glossary/en/#burger-king-/-bk-mode)
|
|
|
|
as much as possible.
|
2023-06-02 03:33:12 +00:00
|
|
|
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 in a range from 0 to 99, and is 50 by
|
|
|
|
default. This number represents a percentage of the furthest progressible player.
|
|
|
|
* For example: With the default of 50%, if the furthest player can access 40% of their items, the randomizer tries
|
|
|
|
to let you access at least 20% of your items. 50% of 40% is 20%.
|
|
|
|
* Note that it is not always guaranteed that it will be able to bring you up to this threshold.
|
|
|
|
* `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)
|
|
|
|
* `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 instead of
|
|
|
|
your own.
|
2021-12-31 19:12:22 +00:00
|
|
|
* `start_inventory` will give any items defined here to you at the beginning of your game. The format for this must be
|
2022-01-17 20:37:34 +00:00
|
|
|
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 30 rupees.
|
2023-06-02 03:33:12 +00:00
|
|
|
* `start_hints` gives you free server hints for the defined items at the beginning of the game, allowing you to hint for
|
2022-01-17 20:37:34 +00:00
|
|
|
the location without using any hint points.
|
2023-06-02 03:33:12 +00:00
|
|
|
* `start_location_hints` is the same as `start_hints` but for locations, allowing you to hint for the item contained
|
|
|
|
there without using any hint points.
|
2024-12-25 20:47:51 +00:00
|
|
|
* `exclude_locations` lets you define any locations that you don't want to do and prevents items classified as
|
|
|
|
"progression" or "useful" from being placed on them.
|
2024-05-14 18:28:15 +00:00
|
|
|
* `priority_locations` lets you define any locations that you want to do and forces a progression item into these
|
|
|
|
locations.
|
2023-06-02 03:33:12 +00:00
|
|
|
* `item_links` allows players to link their items into a group with the same item link name and game. The items declared
|
|
|
|
in `item_pool` get combined and when an item is found for the group, all players in the group receive it. Item links
|
2024-05-24 00:36:45 +00:00
|
|
|
can also have local and non-local items, forcing the items to either be placed within the worlds of the group or in
|
2023-06-02 03:33:12 +00:00
|
|
|
worlds outside the group. If players have a varying amount of a specific item in the link, the lowest amount from the
|
|
|
|
players will be the amount put into the group.
|
|
|
|
|
2022-01-16 00:59:40 +00:00
|
|
|
### Random numbers
|
|
|
|
|
|
|
|
Options taking a choice of a number can also use a variety of `random` options to choose a number randomly.
|
|
|
|
|
|
|
|
* `random` will choose a number allowed for the setting at random
|
|
|
|
* `random-low` will choose a number allowed for the setting at random, but will be weighted towards lower numbers
|
2022-01-17 20:37:34 +00:00
|
|
|
* `random-middle` will choose a number allowed for the setting at random, but will be weighted towards the middle of the
|
|
|
|
range
|
2022-01-16 00:59:40 +00:00
|
|
|
* `random-high` will choose a number allowed for the setting at random, but will be weighted towards higher numbers
|
|
|
|
* `random-range-#-#` will choose a number at random from between the specified numbers. For example `random-range-40-60`
|
2022-01-17 20:37:34 +00:00
|
|
|
will choose a number between 40 and 60
|
2022-01-16 00:59:40 +00:00
|
|
|
* `random-range-low-#-#`, `random-range-middle-#-#`, and `random-range-high-#-#` will choose a number at random from the
|
2022-01-17 20:37:34 +00:00
|
|
|
specified numbers, but with the specified weights
|
2022-01-16 00:59:40 +00:00
|
|
|
|
2021-11-14 19:26:30 +00:00
|
|
|
### Example
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
|
|
|
|
description: An example using various advanced options
|
|
|
|
name: Example Player
|
2022-06-12 21:24:19 +00:00
|
|
|
game:
|
|
|
|
A Link to the Past: 10
|
|
|
|
Timespinner: 10
|
2021-11-14 19:26:30 +00:00
|
|
|
requires:
|
2023-06-02 03:33:12 +00:00
|
|
|
version: 0.4.1
|
2021-11-14 19:26:30 +00:00
|
|
|
A Link to the Past:
|
2023-06-02 03:33:12 +00:00
|
|
|
accessibility: minimal
|
|
|
|
progression_balancing: 50
|
2021-11-14 19:26:30 +00:00
|
|
|
smallkey_shuffle:
|
|
|
|
original_dungeon: 1
|
|
|
|
any_world: 1
|
2022-01-16 00:59:40 +00:00
|
|
|
crystals_needed_for_gt:
|
|
|
|
random-low: 1
|
|
|
|
crystals_needed_for_ganon:
|
|
|
|
random-range-high-1-7: 1
|
2021-11-14 19:26:30 +00:00
|
|
|
local_items:
|
|
|
|
- Bombos
|
|
|
|
- Ether
|
|
|
|
- Quake
|
|
|
|
non_local_items:
|
|
|
|
- Moon Pearl
|
2023-06-02 03:33:12 +00:00
|
|
|
start_inventory:
|
|
|
|
Pegasus Boots: 1
|
|
|
|
Bombs (3): 2
|
|
|
|
start_hints:
|
|
|
|
- Hammer
|
2021-11-14 19:26:30 +00:00
|
|
|
start_location_hints:
|
|
|
|
- Spike Cave
|
|
|
|
exclude_locations:
|
|
|
|
- Cave 45
|
2023-06-02 03:33:12 +00:00
|
|
|
priority_locations:
|
|
|
|
- Link's House
|
2022-04-13 02:52:28 +00:00
|
|
|
item_links:
|
|
|
|
- name: rods
|
|
|
|
item_pool:
|
|
|
|
- Fire Rod
|
|
|
|
- Ice Rod
|
|
|
|
replacement_item: "Rupee (1)"
|
2022-12-07 05:37:47 +00:00
|
|
|
link_replacement: true
|
2023-06-02 03:33:12 +00:00
|
|
|
triggers:
|
|
|
|
- option_category: A Link to the Past
|
|
|
|
option_name: smallkey_shuffle
|
|
|
|
option_result: any_world
|
|
|
|
options:
|
|
|
|
A Link to the Past:
|
|
|
|
bigkey_shuffle: any_world
|
|
|
|
map_shuffle: any_world
|
|
|
|
compass_shuffle: any_world
|
2022-06-12 21:24:19 +00:00
|
|
|
Timespinner:
|
2023-06-02 03:33:12 +00:00
|
|
|
accessibility: minimal
|
|
|
|
progression_balancing: 50
|
2022-06-12 21:24:19 +00:00
|
|
|
item_links: # Share part of your item pool with other players.
|
|
|
|
- name: TSAll
|
|
|
|
item_pool:
|
|
|
|
- Everything
|
|
|
|
local_items:
|
|
|
|
- Twin Pyramid Key
|
|
|
|
- Timespinner Wheel
|
2023-06-02 03:33:12 +00:00
|
|
|
replacement_item: null
|
2021-11-14 19:26:30 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
#### This is a fully functional yaml file that will do all the following things:
|
2022-01-17 20:37:34 +00:00
|
|
|
|
2021-11-14 19:26:30 +00:00
|
|
|
* `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.
|
2022-07-06 21:06:32 +00:00
|
|
|
* `game` has an equal chance of being either `A Link to the Past` or `Timespinner` with a 10/20 chance for each. This is
|
|
|
|
because each game has a weight of 10 and the total of all weights is 20.
|
2022-06-12 21:24:19 +00:00
|
|
|
* `requires` is set to required release version 0.3.2 or higher.
|
2023-06-02 03:33:12 +00:00
|
|
|
* `accessibility` for both games is set to `minimal` which will set this seed to beatable only, so some locations and
|
|
|
|
items may be completely inaccessible but the seed will still be completable.
|
|
|
|
* `progression_balancing` for both games is set to 50, the default value, meaning we will likely receive important items
|
|
|
|
earlier, increasing the chance of having things to do.
|
2022-01-17 20:37:34 +00:00
|
|
|
* `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.
|
|
|
|
* `crystals_needed_for_gt` determines the number of crystals required to enter the Ganon's Tower entrance. In this
|
|
|
|
example a random number will be chosen from the allowed range for this setting (0 through 7) but will be weighted
|
|
|
|
towards a lower number.
|
|
|
|
* `crystals_needed_for_ganon` determines the number of crystals required to beat Ganon. In this example a number between
|
|
|
|
1 and 7 will be chosen at random, weighted towards a high number.
|
2023-06-02 03:33:12 +00:00
|
|
|
* `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.
|
2022-01-17 20:37:34 +00:00
|
|
|
* `start_inventory` defines an area for us to determine what items we would like to start the seed with. For this
|
|
|
|
example we have:
|
2022-07-06 21:06:32 +00:00
|
|
|
* `Pegasus Boots: 1` which gives us 1 copy of the Pegasus Boots
|
|
|
|
* `Bombs (3): 2` gives us 2 packs of 3 bombs or 6 total bombs
|
2022-01-17 20:37:34 +00:00
|
|
|
* `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_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.
|
2021-11-14 19:26:30 +00:00
|
|
|
* `exclude_locations` forces a not important item to be placed on the `Cave 45` location.
|
2023-06-02 03:33:12 +00:00
|
|
|
* `priority_locations` forces a progression item to be placed on the `Link's House` location.
|
|
|
|
* `item_links`
|
2022-06-12 21:24:19 +00:00
|
|
|
* For `A Link to the Past` all players in the `rods` item link group will share their fire and ice rods and the player
|
2022-12-07 05:37:47 +00:00
|
|
|
items will be replaced with single rupees. The rupee will also be shared among those players.
|
2023-06-02 03:33:12 +00:00
|
|
|
* For `Timespinner` all players in the `TSAll` item link group will share their entire item pool and the `Twin Pyramid
|
|
|
|
Key` and `Timespinner Wheel` will be forced among the worlds of those in the group. The `null` replacement item
|
|
|
|
will, instead of forcing a specific chosen item, allow the generator to randomly pick a filler item to replace the
|
|
|
|
player items.
|
2021-12-31 19:12:22 +00:00
|
|
|
* `triggers` allows us to define a trigger such that if our `smallkey_shuffle` option happens to roll the `any_world`
|
2022-07-06 21:06:32 +00:00
|
|
|
result it will also ensure that `bigkey_shuffle`, `map_shuffle`, and `compass_shuffle` are also forced to the
|
2023-06-02 03:33:12 +00:00
|
|
|
`any_world` result. More information on triggers can be found in the
|
|
|
|
[triggers guide](/tutorial/Archipelago/triggers/en).
|
|
|
|
|
2022-06-08 22:15:47 +00:00
|
|
|
|
2022-07-06 21:06:32 +00:00
|
|
|
## Generating Multiple Worlds
|
2022-06-08 22:15:47 +00:00
|
|
|
|
2023-06-02 03:33:12 +00:00
|
|
|
YAML files can be configured to generate multiple worlds using only one file. This is mostly useful if you are playing
|
|
|
|
an asynchronous multiworld (shortened to async) and are wanting to submit multiple worlds as they can be condensed into
|
|
|
|
one file, removing the need to manage separate files if one chooses to do so.
|
|
|
|
|
|
|
|
As a precautionary measure, before submitting a multi-game yaml like this one in a synchronous/sync multiworld, please
|
|
|
|
confirm that the other players in the multi are OK with what you are submitting, and please be fairly reasonable about
|
2024-05-24 00:36:45 +00:00
|
|
|
the submission. (i.e. Multiple long games (SMZ3, OoT, HK, etc.) for a game intended to be <2 hrs is not likely considered
|
2023-06-02 03:33:12 +00:00
|
|
|
reasonable, but submitting a ChecksFinder alongside another game OR submitting multiple Slay the Spire runs is likely
|
|
|
|
OK)
|
2022-06-08 22:15:47 +00:00
|
|
|
|
2023-06-02 03:33:12 +00:00
|
|
|
To configure your file to generate multiple worlds, use 3 dashes `---` on an empty line to separate the ending of one
|
2024-04-21 00:49:48 +00:00
|
|
|
world and the beginning of another world. You can also combine multiple files by uploading them to the
|
|
|
|
[validation page](/check).
|
2022-06-08 22:15:47 +00:00
|
|
|
|
2022-07-06 21:06:32 +00:00
|
|
|
### Example
|
2022-06-08 22:15:47 +00:00
|
|
|
|
|
|
|
```yaml
|
|
|
|
description: Example of generating multiple worlds. World 1 of 3
|
|
|
|
name: Mario
|
|
|
|
game: Super Mario 64
|
|
|
|
requires:
|
|
|
|
version: 0.3.2
|
|
|
|
Super Mario 64:
|
|
|
|
progression_balancing: 50
|
2024-05-24 00:36:45 +00:00
|
|
|
accessibility: items
|
2022-06-08 22:15:47 +00:00
|
|
|
EnableCoinStars: false
|
|
|
|
StrictCapRequirements: true
|
|
|
|
StrictCannonRequirements: true
|
|
|
|
StarsToFinish: 70
|
2022-07-25 16:39:31 +00:00
|
|
|
AmountOfStars: 70
|
2022-06-08 22:15:47 +00:00
|
|
|
DeathLink: true
|
|
|
|
BuddyChecks: true
|
|
|
|
AreaRandomizer: true
|
|
|
|
ProgressiveKeys:
|
|
|
|
true: 1
|
|
|
|
false: 1
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
description: Example of generating multiple worlds. World 2 of 3
|
|
|
|
name: Minecraft
|
|
|
|
game: Minecraft
|
|
|
|
Minecraft:
|
|
|
|
progression_balancing: 50
|
2024-05-24 00:36:45 +00:00
|
|
|
accessibility: items
|
2022-06-08 22:15:47 +00:00
|
|
|
advancement_goal: 40
|
|
|
|
combat_difficulty: hard
|
|
|
|
include_hard_advancements: false
|
|
|
|
include_unreasonable_advancements: false
|
|
|
|
include_postgame_advancements: false
|
|
|
|
shuffle_structures: true
|
|
|
|
structure_compasses: true
|
|
|
|
send_defeated_mobs: true
|
|
|
|
bee_traps: 15
|
|
|
|
egg_shards_required: 7
|
|
|
|
egg_shards_available: 10
|
|
|
|
required_bosses:
|
|
|
|
none: 0
|
|
|
|
ender_dragon: 1
|
|
|
|
wither: 0
|
|
|
|
both: 0
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
description: Example of generating multiple worlds. World 3 of 3
|
|
|
|
name: ExampleFinder
|
|
|
|
game: ChecksFinder
|
|
|
|
|
|
|
|
ChecksFinder:
|
|
|
|
progression_balancing: 50
|
2024-05-24 00:36:45 +00:00
|
|
|
accessibility: items
|
2022-06-08 22:15:47 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
The above example will generate 3 worlds - one Super Mario 64, one Minecraft, and one ChecksFinder.
|
|
|
|
|
|
|
|
|