APLobbyGen

A local-first front end for running Archipelago multiworlds on Windows. The roster lives on your machine, generation never touches the network, and the seed can be hosted right here.

The APLobbyGen window: a lobby of eleven players, each row showing the game, the world file that resolves it, its version and its status. The APLobbyGen window in dark mode: a lobby of eleven players, each row showing the game, the world file that resolves it, its version and its status.
Every player resolved against the world files actually installed. ready, world must match (the apworld ships a client, so every player needs the identical file), sitting out, and no world installed — which is why Generate is off, and it says so rather than just greying out. Players shown are invented.

Why it exists

Most tooling around a multiworld treats a remote lobby as the source of truth. Every generation re-scrapes someone else's server, the roster evaporates between runs, and nothing works offline. Here the local lobby owns the roster; a remote room is one way to put configs into it, not the thing that defines it.

Standard library only — no pip install, no virtualenv. If you have Python and an Archipelago install, you have everything.

What it does

Getting started

Windows, Python 3.10 or newer with tkinter, and an Archipelago install.

git clone https://github.com/vitsorg/APLobbyGen
cd APLobbyGen
python aplobby_gui.py

Or from the command line

python aplobby.py import folder path\to\configs   add configs to the lobby
python aplobby.py list                            show the roster
python aplobby.py generate                        build a seed, no network
python aplobby.py host                            host it on this machine
Nothing is downloaded for you. The tool tells you which world file and which client each game needs, and links to them. GitHub release layouts differ enough per project that guessing which asset to fetch would do more harm than a person clicking through. World files and player configs are self-supplied.

Verification

Five test suites, all offline except the one that deliberately hosts on loopback and connects to itself. They assert rather than print, so a silent pass is a real pass — including one that drives the real window with nobody watching.

python selftest_lobby.py     the store: identity, history, crash recovery
python selftest_sources.py   the importers, with the network stubbed
python selftest_gui.py       drives the real window with nobody watching
python selftest_serve.py     really starts a server, really connects to it
python selftest_links.py     the upstream pointers and their client states

Licence and contributing

Source-available rather than open source: run it freely for Archipelago multiworlds and share it unmodified, but changes come back here as pull requests instead of being published as a separate version. Forking to open a PR is explicitly permitted. See the licence for the exact terms.