Skip to content

Command-line flags

Modes:

  • zombye-server --mcp — MCP server on stdio. Time only advances when an agent calls step_ticks, so agent runs are deterministic and reproducible.

  • zombye-server --mcp-http [ADDR[:PORT]] — the same MCP server over streamable HTTP (mcp_http.rs), for agents that reach it over the network: POST /mcp, by default on 127.0.0.1:8787. One world, shared by everyone who connects. Needs a bearer token (ZOMBYE_MCP_TOKEN, or --mcp-token T; --mcp-token-in-url also takes it as /mcp/T) or --mcp-no-auth (open, and then without the debug tools); --mcp-no-dev turns the debug tools off with a token too; --mcp-origin ORIGIN allows a browser origin. No TLS: put a reverse proxy or a tunnel in front.

  • zombye-server --bench [--ticks N] [--players N] [--horde N] — run N ticks and print timing. With no players every zombie heads for a debug goal (all of them stay on the active tier); with players they start on the road west of town (in the forest on a big map), run in circles and make a 60 m noise every 10 s, --horde N spawns N more zombies round the first, and the report breaks the tick down by tier, and says what the worst tick was made of. --spread is a realistic server instead: the players on a grid over the whole map, one in four running and making a noise now and then, the rest walking. --bench --bots N is that bench over the real transport: a server on a loopback TCP port and N headless bots, each its own connection (the players’ places as above, the bots playing them), ticking at the real rate; it reports the whole tick (intents, world, snapshots), the active zombies and what each client was sent.

  • zombye-server --host [ADDR[:PORT]] — the multiplayer server (multiplayer.rs, zombye_net::host): game clients join with zombye --connect HOST[:PORT]. Listens on every interface, TCP port 7777, unless told otherwise. --max-players N (default 32, at most 64), --pvp on|off (default on: players can hurt each other; off is co-op), --spawn spread|together (default: spread round the town with PvP, together by the first house without), --name NAME, --password P, --allow-dev (take dev toggles and debug intents from clients), --budget KB (kilobytes a second down to each client, default 32, 8 to 1000: what its snapshots are kept within), --fair-sight on|off (#66: a client is told of another player only while its survivor sees them, and of one it only hears as a sound; default on with PvP, off in co-op), --logout-secs S (default 30: how long a survivor lies in the world, asleep, after its player leaves), --logout-safe-secs S (default 5: the same when it was left somewhere safe), --spawn-protection S (default 10: seconds a new survivor can’t be hurt by other players). New survivors start with the data folder’s start_kit.ron, or with --start-kit ITEM[:N],ITEM[:N]... (none: nothing). --camera isometric|first-person and --agents off|on|marked are the camera and agents rules (#69: told to every client that joins, and to anyone who asks with zombye --server-info HOST; clients that say they are programs are refused, let in, or let in and marked). With --save PATH the world is loaded or made, autosaved and saved on shutdown as below, with whose survivor is whose in PATH.players. --admin-mcp [ADDR[:PORT]] (admin.rs) adds the operator’s MCP endpoint to the running server, by default on 127.0.0.1:8788: list, kick and ban players, save, change settings, set off events, read the log. It always needs a bearer token (ZOMBYE_ADMIN_TOKEN, or --admin-token T); --admin-origin ORIGIN allows a browser origin.

  • zombye-server --config FILE — the dedicated server (config.rs, docs/self-hosting.md): --host with its settings read from one RON file (written with the defaults, commented, if it isn’t there yet; server.example.ron beside this crate’s manifest). The file stands for the flags above, so a flag on the command line wins over it; its paths are relative to its folder, and its world is saved in world.zsave there unless it says otherwise. This is what the Docker image runs (Dockerfile: --config /data/server.ron).

  • zombye-server --bots N --connect HOST[:PORT] [--secs S] [--bots-hostile] [--lag MS] — N headless bot clients, each on its own connection, that wander and fight; prints what each costs. --lag MS makes them play as if that many milliseconds of ping away (lag compensation).

  • zombye-server --benchmark list | table | ID | all — the agent survival benchmark (#29, benchmark.rs, docs/benchmark.md): fixed scenarios from the data folder’s scenarios.ron. list prints them; with --mcp or --mcp-http, --benchmark ID serves that scenario’s world to an agent (a player’s tools only, one life, time stops when the run is over) and writes its result as JSON into --results DIR (default saves/benchmark) under --agent NAME; --benchmark ID|all --baseline idle|brawler|runner plays it with a built-in script instead; table ranks the results in the folder.

  • zombye-server --docs DIR [--repo DIR] [--docs-base PATH] [--docs-strict] — write the game’s reference as Markdown pages into DIR (docgen.rs): every MCP tool, every data file with its fields and shipped values, every tuning number and these flags, from the game itself, for the docs site. Says what it found undocumented; --docs-strict exits 1 if anything is. --docs-base is the site path the pages are served under (default /docs/reference/game).

Common options: --zombies N (default: as many as population.ron gives for the map, about 2,600 on the default map), --seed S (default 1), --map-chunks N (a square map N × N chunks of 16 m; default 30, so 480 m; 64 is about 1 km), --data DIR (content folder; default $ZOMBYE_DATA, else the repo’s assets/data, else a data folder beside the binary: content::installed_data_dir).

Saves: --save PATH loads that save if it exists (the world options are then ignored) or makes a new world and saves it there; the server then autosaves to it every --autosave-mins N minutes of real time (default 5; 0 = never) and when it shuts down (stdin closed, Ctrl-C, SIGTERM or SIGHUP; on Windows also closing the console window). A save made with game data changed since in ways it can’t take (a building template that changes the map, a weapon it uses removed) is refused unless --load-anyway, which loads it dropping what no longer fits; compatible changes load with a note. --saves DIR is the folder for the MCP save/load/saves tools (default: the --save file’s folder, else saves). --bench --save-bench also times saving and loading the world at the end of the run.

Screenshots (MCP screenshot, screenshot.rs): --client PATH is the game client binary to render with (default $ZOMBYE_CLIENT, else zombye next to this binary) and --screenshot-timeout SECS how long a render may take (default 60).

Each flag with what it takes. Most are for testing, pictures and recordings; a plain start needs none.

Flag Takes
--zombies N
--seed S
--time HOUR
--at X,Y
--map-chunks N
--angle 0..3
--turn N@SECS[,N@SECS...]
--opening-hints on|off
--novsync
--zoom METRES
--screenshot PATH
--screenshot-after SECS[,SECS...]
--exit-after SECS
--fight-demo
--weapons-demo
--siege
--pvp
--duel
--autoplay
--sneak
--saves DIR
--load NAME|PATH
--load-anyway
--player ID
--data DIR
--mod DIR
--quicksave-after SECS
--quickload-after SECS
--new-run-after SECS
--render-to PATH
--size WxH
--center X,Y
--hud
--inventory
--find TEXT
--filter CATEGORY[,CATEGORY...]
--tab rows|floor
--sort name|type|weight
--expand
--pick N,N
--pick-range A,B[@SECS]
--drop-picked-after SECS
--menu SPEC
--menu-pick N[@SECS]
--skills
--health
--morning
--graphics-panel
--map
--map-zoom PX
--map-center X,Y
--map-all
--skip-hours H
--hover-tag N
--debug-stats
--god
--ignored
--crowd-vat PATH[,PATH...]|DIR|none
--survivor PATH|DIR|none
--pose NAME[:U]
--mute
--volume V
--music V
--ui-scale PCT
--help-text full|short|off
--old-look off|subtle|strong
--connect HOST[:PORT]
--name NAME
--password P
--agent
--server-info HOST[:PORT]
--server-list FILE|URL
--browser
--browser-join N[@SECS]
--joined
--join-error TEXT
--hotbar ID[,ID...]
--hotbar-press K@SECS[,K@SECS...]
--panel-at PANEL:X,Y[;PANEL:X,Y]
--drag-panel PANEL:DX,DY[@SECS]
--lag MS
--say TEXT[@SECS]
--shout TEXT[@SECS]
--whisper TEXT[@SECS]
--gesture NAME[@SECS]
--talk-demo
--talk-wall
--holdup-demo
--holdup-auto
--graphics low|medium|high|ultra|auto
--vegetation off|low|high|N
--no-post LIST
--msaa N
--shadow-map N
--render-scale F
--frame-bench N
--gun ID
--give ID[:N],...
--walls-up
--zombie-silhouettes
--aim-at DX,DY|zombie
--first-person
--new-game
--new-game-tab who|picks|world
--new-game-from PATH
--background ID
--strengths ID[,ID...]
--flaws ID[,ID...]
--outfit ITEM[,ITEM...]
--difficulty ID
--walk X,Y;X,Y;...