Popover Menu get started
Popover Menu Tools
client discord
Menu
supported games setup guides f.a.q. generate game host game user content clients discord
Archipelago Guide

Advanced YAML Guide

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.

If you would like to generate a basic, fully playable YAML without editing a file, then visit the options page for the game you intend to play.

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.

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 possible for the game including some that don't display correctly on the site.

YAML Overview

The MultiworldGG 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 options 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 options.

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

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. After editing your YAML file, you can validate it at the website's validation page.

A typical YAML file will look like:

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

In MultiworldGG, 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, then 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 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 options. 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, and the name of the games you want options for.

Game Options

One of your root options will be the name of the game you would like to populate with options. 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 an options section even if it is empty.

Universal Game Options

Some options in MultiworldGG can be used by every game but must still be placed within the relevant game's section.

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.

See the plando guide for more info on plando options. Plando guide: MultiworldGG Plando Guide

Random numbers

Options taking a choice of a number can also use a variety of random options to choose a number randomly.

Example


description: An example using various advanced options
name: Example Player
game: 
  A Link to the Past: 10
  Timespinner: 10
requires: 
  version: 0.4.1
A Link to the Past:
  accessibility: minimal
  progression_balancing: 50
  smallkey_shuffle:
    original_dungeon: 1
    any_world: 1
  crystals_needed_for_gt:
    random-low: 1
  crystals_needed_for_ganon:
    random-range-high-1-7: 1
  local_items:
    - Bombos
    - Ether
    - Quake
  non_local_items:
    - Moon Pearl
  start_inventory:
    Pegasus Boots: 1
    Bombs (3): 2
  start_hints:
    - Hammer
  start_location_hints:
    - Spike Cave
  exclude_locations:
    - Cave 45
  priority_locations:
    - Link's House
  item_links:
    - name: rods
      item_pool:
        - Fire Rod
        - Ice Rod
      replacement_item: "Rupee (1)"
      link_replacement: true
  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
Timespinner:
  accessibility: minimal
  progression_balancing: 50
  item_links: # Share part of your item pool with other players.
    - name: TSAll
      item_pool: 
        - Everything
      local_items:
        - Twin Pyramid Key
        - Timespinner Wheel
      replacement_item: null

This is a fully functional yaml file that will do all the following things:

Generating Multiple Worlds

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 the submission. (i.e. Multiple long games (SMZ3, OoT, HK, etc.) for a game intended to be <2 hrs is not likely considered reasonable, but submitting a ChecksFinder alongside another game OR submitting multiple Slay the Spire runs is likely OK)

To configure your file to generate multiple worlds, use 3 dashes --- on an empty line to separate the ending of one world and the beginning of another world. You can also combine multiple files by uploading them to the validation page.

Example

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
  accessibility: items
  EnableCoinStars: false
  StrictCapRequirements: true
  StrictCannonRequirements: true
  StarsToFinish: 70
  AmountOfStars: 70
  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
  accessibility: items
  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
  accessibility: items

The above example will generate 3 worlds - one Super Mario 64, one Minecraft, and one ChecksFinder.