Appearance
Hosting guide
Your world, your friends, your rules. Two ways to run a world: the launcher on your own computer, or the dedicated server on a VPS that stays up when your computer is off. Both use the same world folder, so you can start at home and move later.
What a world is
The launcher keeps worlds in its data folder (the Open folder button in the Worlds tab shows where); the dedicated server keeps them where you tell it.
<name>/
world.json name, port, max players, enabled extensions, style pack
world.sqlite every account, character and item (one file; copy it to back up)
config/ one <extension>.json per extension with the values you changed
content/ your overrides and additions (zones, items, mobs, quests)
packs/ extensions and style packs you installed from the market
logs/ server.log
backups/ daily copies of world.sqlite (7 kept by default)Back up a world by copying the folder. Move it to another machine the same way.
Option A: the launcher (home PC)
- Download MMO Run and open the launcher.
- Create world: pick a name, the Classic MMO preset (chat, inventory, combat, mobs, leveling, classes, abilities, NPCs, quests and the starter zones), a style pack, a port (27015 is fine) and how many players you want to allow.
- Press Start. The Console tab shows the server log.
- Invite: press New invite and share the code; friends type it into the client. If your router is in the way they connect through the relay automatically. See Invites.
- The first account created on your world becomes the owner. Make an account from the client right away so that is you.
Everything else (extensions on/off, their settings, players, bans) is a tab in the launcher. Changes marked "restart needed" apply when you press Restart.
Option B: running a dedicated server
For a world that is always on, run the server download on a VPS or any machine with a terminal. A small Linux VPS (1 CPU, 1 GB) handles a world for dozens of players. Open UDP port 27015 in its firewall.
# create and start a world in one go (the folder is created if missing)
./mmorun-server --world ./worlds/mine --port 27015 --name "Mine" --preset classic --consoleFlags: --world <folder>, --port <n>, --name "<world name>", --preset core|classic, --enable chat,inventory,... (add extensions to the world), --stylepack <id>, --max-players <n>, --motd "<text>", --console (type commands into the terminal), --log-level debug|info|warn. Relative paths are relative to the folder you run it from.
The server prints MMORUN_READY port=... world=... when it is up and logs to worlds/mine/logs/server.log. Players connect to your-vps-address:27015, or you can make an invite code for it the same way the launcher does.
Stopping. Type /stop in the console. The server saves every character, writes a backup, then exits. If it is killed instead, at most 30 seconds of play are lost (the autosave interval); the world file itself stays consistent.
Keeping it running. On Linux, a systemd service starts the world at boot and restarts it if it stops:
[Unit]
Description=MMO Run world "mine"
After=network.target
[Service]
User=mmorun
WorkingDirectory=/opt/mmorun
ExecStart=/opt/mmorun/mmorun-server --world /opt/mmorun/worlds/mine --port 27015
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.targetSave it as /etc/systemd/system/mmorun.service, then systemctl enable --now mmorun. To get a console on a running server, start it inside tmux or screen with --console instead.
Moving a world. Stop it, copy the world folder to the new machine, start it there with --world pointing at the copy. Accounts, characters and everything you built come along.
Configuring without the launcher
Every extension's settings live in worlds/mine/config/<extension>.json, values only; the launcher's Extensions tab shows every setting with its default and writes these files for you. Core's own settings (message of the day, autosave interval, characters per account, backup hour, whether new accounts are allowed) are in config/core.json.
json
{ "motd": "Welcome to Mine. Be nice.", "max_characters": 3, "backup_hour": 5 }Turn extensions on and off in world.json ("enabled": [...]). If a dependency is missing the server logs a plain sentence ("Guilds needs Chat turned on.") and starts without that extension.
Add or retune content with the in-game editor, or by dropping JSON into worlds/mine/content/<kind>/ (see Content format). Check hand-written files before starting the world:
./mmorun-server --validate ./worlds/mine/contentAdmin commands
In the game chat (or the launcher console / --console): /help, /who, /kick <name>, /ban <name> [minutes] [reason], /unban <user>, /tp ..., /role <user> <mod|admin|owner>, /setpassword <user> <new>, /announce <text>, /save, /stop, plus whatever the enabled extensions add (/give, /spawn, /mute, ...). Roles: player < mod < admin < owner.
Players and passwords
Accounts are per world. Passwords are hashed (PBKDF2-HMAC-SHA256, 60k rounds) but the host owns the database, so the login screen tells players not to reuse a password from elsewhere. There is no e-mail recovery: an owner resets passwords with /setpassword.
Performance and limits
Target 50 players on a home connection; hard cap 100 per world. Snapshots go out at 10 Hz, a moving player costs roughly 1 to 2 KB/s per viewer within 24 tiles. One world is one process on one UDP port; run two worlds on two ports if you want two.
Backups
Daily at backup_hour (default 04:00 local), keeping backup_keep (default 7), plus one on every clean shutdown, all in worlds/mine/backups/. To restore, stop the server and copy a backup over world.sqlite.
Turning extensions on or off later
A world remembers its extensions in world.json. From the game or the console, the owner can run /extensions to list them, /extensions enable <id>... or /extensions disable <id>...; changes apply at the next server start. Starting the server with --enable a,b adds those to an existing world too. The launcher's Extensions tab does the same with checkboxes.
Installing community packs
Extensions and style packs made by other people come as .pck files (<id>.pck or <id>.stylepack.pck). Put the file in the world's packs/ folder, then turn the extension on in the Extensions tab (or with --enable <id>), or set "style_pack" in world.json for a style pack, and restart the world. Players download the packs when they join; nobody else installs anything. Want to make your own? See dev.mmo.run.
Host content and the editor
worlds/<name>/content/ is the host layer: JSON (and .run scripts) that override or add to shipped content. Edit it in place (mmorun-server --validate ./worlds/mine/content checks it) or from inside the game with the editor. The server packs the folder as host-content and serves it to clients with the extension packs, so players see your quests, items and NPCs; the manifest carries the pack's hash and it is rebuilt on every editor save.