How to Host an Archipelago Game (The Basics)
Step 1: Decide host settings
Navigate to your Archipelago folder. Look for host.yaml and open it. (Personally uses Notepad++ to view and edit YAMLs.
Link to the download page for that.) Contains settings for the multiworld. Describes most of them in the YAML itself, just above the setting. Suggests leaving most of the them alone. Some of the more notable ones, all near the top:
- server_password: Set to null by default. Means no password required. Never used it and never hopes to need it. Finds it here, at any rate.
- hint_cost: Determines how much a hint costs. Set it to 10 by default. Means you need to find 10% of your checks for 1 hint.
- release_mode: Determines how players are able to release items. The modes: "disabled" (never), "enabled" (may release whenever), "auto" (automatically on goal completion), "auto-enabled" (automatic release on goal + manual release), and "goal" (allowed after goal completion).
- collect_mode: Determines if/how players can use !collect. Has the same options as release_mode.
- remaining_mode: Determines if/how players can use !remaining. (Tells you what items are in your game, but not where.) Modes: "enabled" (may do so whenever), "disabled" (never), and "goal" (only after completing your goal).
Do not worry too much about the stuff in the other three-fourths of host.yaml. Notably lists the name of the ROMs it is looking for in here.
Step 2: Get all the player YAMLs and APWorlds
Ask your players for their YAMLs. Go to your Archipelago folder, and then to the Player folder. Dump all the YAMLs in here. Do not put them in another folder within Players either. Will not read them if you do. Ought to look like this:
Note: Do not worry about the Templates folder in there, if you have it. Just do not place any YAMLs you want used in Templates.
For games not officially supported: Ask what version of APWorld they are using. Potentially causes generation errors if you have a different APWorld version than they do. Finds links to the most recent in-development APWorlds in the
Google Sheets of Archipelago games in the works. Could also ask your players for a link or the APWorld itself.
With an APWorld in hand, start at your Archipelago folder. Go to the "lib" folder, then to "worlds" folder. Stick all your APWorlds here. Do NOT put them in both lib>worlds and custom_worlds. Will cause an error during generation.
May rarely need a different APWorld for an officially supported game. Mainly affects games that are still receiving updates to the vanilla game. Names Terraria and Stardew Valley as two such games that could do that. (Likely no longer becomes necessary once Archipelago updates to 0.5.1, though.) Expects the player to tell you about using a different APWorld from an officially supported one.
Step 3: Create the game
Start at your Archipelago folder. Either:
- A. Run ArchipelagoGenerate.exe
- B. Run ArchipelagoLauncher.exe. Click "Generate" near the upper-left.
Makes no difference which you use. Opens up a command line window that creates the game, ideally without any input. Goes pretty quick with only a few games. May take a few minutes with 20 games.
Runs into errors and hiccups here, generally. Recommends generating a new game every time you get a new YAML. Figures out which YAML caused it easier that way. Will cover some more likely errors.
- Requires a ROM to generate. Says something like "Opening file input dialog for Select Pokemon Blue (UE) ROM File". Basically wants you to provide a ROM to run it. Locate wherever you put the ROM and select it
Designed some of the later games to not need a ROM file to generate. Affects a few still, however. Some known ones: Pokemon Red/Blue, Zelda 1, Link's Awakening DX, A Link to the Past, Ocarina of Time, Super Metroid, SMZ3 (Super Metroid + Link to the Past), Donkey Kong Country 3, Kirby's Dream Land 3, Lufia II Ancient Cave, Megaman Battle Network 3, Secret of Evermore, Super Mario World, Yoshi's Island, and Castlevania: Symphony of the Night (just Track 1). Cannot provide these ROMs to you or tell you where to look, legally. Check your host.yaml to see what ROM you need.
- Please fix your yaml. Screenshotted an example of the last part of the error.
![[PokeCommunity.com] Casual Archipelago (Complete) [PokeCommunity.com] Casual Archipelago (Complete)](https://data.pokecommunity.com/attachments/82/82858-2fdca5ccf3fb263dc41f6b57d0420fd4.jpg)
Pay attention to the second to last line: "ValueError: File Earthbound.yaml is invalid. Please fix your yaml." Indicates an error with Earthbound's yaml. May be hard to decipher the cause yourself, especially if you are unfamiliar with the game. Try to skim it (or, better yet, ask the player). The problem here: Set the number of Sanctuaries Required to 9, which is more than the setting allows (max 8).
- Could not Progression Balance 50 items. Might see this fly by while generating, possibly with a different number. Should still generate if this happens. Simply means there were too many progression items to spread out evenly...or something like that. Leads to a lot of progression items early on. Do not worry about it, in other words.
- Already Registered: Spits out this error while generating: "RuntimeError: Game EarthBound already registered." Means you placed an APWorld of a game in both custom_worlds and lib > worlds. Still generated a seed, surprisingly. Cannot tell you which one it used, though. Delete one of the APWorlds to fix it.
Step 4: Unzip and Upload
Begin in your main Archipelago folder. Go to your "output" folder. Places a .zip file here by default. Should be named something like AP_31610875509970985939.zip, but with different numbers. Unzip it here (or wherever you can keep track of things easily). Personally uses 7-Zip for that (
Link to that download area). (With that: right-click, go down to 7-Zip, then choose "Extract Here".) Contains the following things:
- An Archipelago server file. Named it something like AP_31610875509970985939.archipelago. Run this if you want to play locally. Will not need it if hosting online.
- A spoiler log. Will be a text file. Titled it something like AP_31610875509970985939_Spoiler.txt. Contains all the information about the seed and each player's settings.
- Patch files for every player that needs them. Expect something like AP_31610875509970985939_P2_DevalueRed. May not get a patch file for every player (or even most players). Will need to hand these out to every player with an unsupported game (if there is a patch file for them). May need to shove them in a .zip file in order to share them on the forums. (To do that with 7-Zip, highlight the files and right-click them. Pick 7-Zip, then "Add to output.zip" or whatever .zip name it gives you.) Should be able to download patch files for an officially supported game in the room.
To upload the game to the online server, go to the
Archipelago.gg website. Click "Get Started" in the upper-right and choose "Host Game". Click "Upload File" and select the AP_31610875509970985939.zip file in your output folder. Hit "Create New Room" next. Recommends bookmarking your room. May also find it again by clicking the "Get Started" thing again and go down to User Content.
Set up everything if you made it this far. Talks about one more thing, however.
Server Commands
May notice something different in the room, compared to seeing it as a player: the server command line and the log file. Sees everything that happens in the box on the bottom. Scrolls as things happen. May view a static version at Open Log File.
Inputs server commands in the little empty box. Lists all of them here:
website link. Scroll down to the "host only" section. Might as well copy/paste the main ones here.
- /collect <player name> Collects all the items from that player's game.
- /release <player name> Releases all the items from that player's game.
- /send <player name> <item name> Sends a specified item to a player.
- /send_multiple <amount> <player name> <item name> Sends several of a single item to someone, such as small keys.
- /send_location <player name> <location name> Sends the item at the player's specified location.
- /hint <player name> <item or location name> Hints for a player's item/location without costing hint points. Appears in the player's !hint list, just like any other hint.
Two quick examples: Wants to send X Accuracy to Devalue Red. Types the following:
/send DevalueRed XAccuracy
To hint for Explorer of Time's Distortion Blasters (Banshee):
/hint ExplofTimeSC2 Distortion Blasters (Banshee)
Remove any whitespaces in the player name, notably. Writes "ExplofTimeSC2", not "Expl of Time SC2". Appears to make no difference if you remove whitespaces in the item name. Recommends peeking at the spoiler log if you need help to figure out what the item's/location's name is.
____________
Covers the basics. Will link this post in the first post to make finding this again a little easier. Feel free to ask any questions.
A More Advanced Option
Did not ask TwentyExEx or Arcaneum how to set up a game like Hexipelago with custom items. Might have figured it out. Describes this as more advanced. Involves some fiddling and know-how with Manual APWorlds. Will try to make it kind of understandable.
Step 1: Download Manual Event Files.zip at the bottom of this post. Contains two things: Event YAML.yaml and manual_Event_PokeComm.apworld. Place the YAML into Archipelago > Players and the APWorld into Archipelago > custom_worlds. (May be able to place the APWorld in lib > worlds too. Followed the instructions for manual APWorlds while doing this previously.)
Step 2: Dig into manual_Event_PokeComm.apworld. First, unzip manual_Event_PokeComm.apworld. (Recommends extracting it to a folder, like manual_Event_PokeComm\. Keeps things together easier.) Go into the "data" folder, then to items.json. (May need to associate .json files with something. Uses Notepad. Just plain Notepad, not Notepad++.) Ought to look like this inside:
Code:
{
"$schema": "https://github.com/ManualForArchipelago/Manual/raw/main/schemas/Manual.items.schema.json",
"data": [
{
"name": "Glowing Pokeball",
"count": 10,
"progression": true
},
{
"name": "Okay Pokeball",
"count": 20,
"useful": true
},
{
"name": "Boring Pokeball",
"count": 20
}
]
}
Made a "game" with 10 Glowing Pokeballs (marked as Progression), 20 Okay Pokeballs (marked as Useful), and 20 Boring Pokeballs (marked as trash) in it. Edit this as desired. Could add a second progression item, lower/raise the count, and so on. One note: Do not forget the , after the } if you add more item types. Do not put a , after the final }.
Save after you are done. Make a note of how many total items you have. Close it and open "locations.json" (in the same folder). Looks kind of like this:
Code:
{
"$schema": "https://github.com/ManualForArchipelago/Manual/raw/main/schemas/Manual.locations.schema.json",
"data": [
{
"name": "Location 1"
},
{
"name": "Location 2"
},
Will not copy/paste the whole thing. Continues on like this for 50 locations (the total number of items). Add or delete locations, as needed. As before, mind the commas after the }. Save and close it.
Optional: Check out game.json. Is only a few lines long. Look for "filler_item_name". Adds trash items if the game has fewer items than locations. Named them "Good Vibes". Feel free to change that.
Step 3: Convert it back to an APWorld. Right-click the "manual_Event_PokeComm" folder (or all the files, if you did not do a folder). Zip them. Personally goes to 7-Zip, then "Add to 'manual_Event_PokeComm.zip'". Next, if you do not have file extensions turned on, do so. (In Windows 10: Click the View tab in your File Explorer window. Check the box for "File Name extension".) Rename the .zip to manual_Event_PokeComm.apworld. Will warn you the file may not work properly. Do not worry about that.
After turning it into a .apworld, delete the "manual_Event_PokeComm" folder (or loose files, if you did it without the folder). Causes errors if both it and the APWorld are around.
Step 4: Adjust the YAML. Head to Archipelago > Players. Open Event YAML.yaml. Looks like this:
Code:
Manual_Event_PokeComm:
progression_balancing: 50
accessibility: items
exclude_locations: {Location 1, Location 2, Location 3, Location 4, Location 5, Location 6, Location 7, Location 8, Location 9, Location 10,
Location 11, Location 12, Location 13, Location 14, Location 15, Location 16, Location 17, Location 18, Location 19, Location 20,
Location 21, Location 22, Location 23, Location 24, Location 25, Location 26, Location 27, Location 28, Location 29, Location 30,
Location 31, Location 32, Location 33, Location 34, Location 35, Location 36, Location 37, Location 38, Location 39, Location 40,
Location 41, Location 42, Location 43, Location 44, Location 45, Location 46, Location 47, Location 48, Location 49, Location 50}
non_local_items: {Glowing Pokeball: 10, Okay Pokeball: 20, Boring Pokeball: 20}
description: 'Generated by https://archipelago.gg/'
game: Manual_Event_PokeComm
name: PokeballStore
Excluded all 50 locations. Prevents any player's progression items from landing in this fake game. Also made the items non-local. Guarantees all of the event items to be in a player's game. Change the location names and non-local items, as necessary.
One note: Feel free to change "PokeballStore". Do not change Manual_Event_PokeComm, however. Forgets precisely everything you need to change in order to do that. Maybe just the name of the APWorld? Shrugs.
Step 5: Generate the game. Ideally manages to create a game with no errors. Received tons of errors doing this the first time. One common error: items.json or locations.json empty. Means you forgot a comma (or several) somewhere in those.
Step 6: Going into the Manual APWorld. Unzip the seed you made. May notice a .apmanual file in there. Does not need it. (Theoretically takes you to the manual client if you double-click it. Never worked.)
Go to your main Archipelago folder. Run ArchipelagoLauncher.exe. On the right-side of the launcher, look for and select "Manual Client". Looks like this:
Put the server address in, as usual (or localhost for a locally hosted game). Type "Manual_Event_PokeComm" into the second field, as above. Hit Connect. Will ask you for a slot name. Chose "PokeballStore" in the YAML, as you may recall. Typed that in and connected.
To release all the items, simply type !release...if you allowed that. If not: click the "Manual" tab in the client. Ought to see something like this:
Click Location 1, Location 2, and so on. Sends the items one-by-one. Flip to the Archipelago tab in the client to see what was sent. Also finds the "Goal Complete" thing at the end of all the locations. Click that, if you want.