Skip to content

Server Konfiguration

ElGregor edited this page Aug 15, 2026 · 1 revision

Server-Konfiguration (servertest.ini, Sandbox-Preset, Render-Workflow)

Home · Zurück: ENV-Variablen

Diese Seite ist die zentrale Referenz für alle Server-Optionen dieses Repos: welche Optionen existieren wirklich, welche Werte das Repo setzt, wie der Render-Workflow funktioniert — und welche Fantasie-Optionen aus Foren existieren NICHT.

Prinzip: Config-as-Code

Die Datei servertest.ini im Spielerverzeichnis wird nie von Hand editiert (Repo-Workflow, siehe README: „Config-as-Code: .env + Templates -> Server-Configs, nie von Hand editieren"). Der Weg ist immer:

  1. .env anpassen (Werte wie Name, Passwörter, Ports — siehe ENV-Variablen)
  2. config/templates/servertest.ini.tmpl anpassen (Optionen, die keine .env-Variable haben)
  3. make render ausführen (scripts/render-config.sh füllt das Template per envsubst und schreibt das Ergebnis nach ${PZ_DATA_DIR}/Server/)
  4. Server neu starten (make restart), damit die Änderungen greifen

Grund: Hand-Edits in der fertigen servertest.ini werden beim nächsten make render kommentarlos überschrieben (Repo-Verhalten, 1:1 aus scripts/render-config.sh).

Aufbau der servertest.ini

Alle Zeilen aus config/templates/servertest.ini.tmpl, vollständig und in drei Gruppen. Dynamische Werte (mit ${...}) kommen aus der .env — der angegebene Beispielwert entspricht dem Repo-Default aus .env.example.

Gruppe 1: Identität und Netz

Option Repo-Default Bedeutung Quelle/Label
PublicName ${PUBLIC_NAME}ProjectZomboiD Coop Servername in der Serverliste Repo-Default
PublicDescription ${DESCRIPTION}Privater Coop-Server (Build 42) Beschreibung in der Serverliste Repo-Default
MaxPlayers ${MAX_PLAYERS}8 Maximale Spielerzahl Repo-Default
AdminPassword ${ADMIN_PASSWORD}CHANGE_ME Passwort für In-Game-Admin-Funktionen Repo-Default
Password ${SERVER_PASSWORD}CHANGE_ME Join-Passwort für Spieler Repo-Default
DefaultPort ${GAME_PORT}16261 Haupt-Spielport Repo-Default
UDPPort ${DIRECT_PORT}16262 Zweiter Spiel-UDP-Port Repo-Default
RCONPort ${RCON_PORT}27015 TCP-Port für RCON-Fernsteuerung Repo-Default
RCON ${RCON_ENABLED}true RCON aktiviert Repo-Default
SteamScoreboard true Steam-Scoreboard/Serverliste-Funktionen Repo-Default
Public false Server nicht öffentlich in der Steam-Liste sichtbar Repo-Default
PauseEmpty true Simulation pausiert, wenn kein Spieler online Repo-Default
PingLimit 400 Maximaler Ping; höhere Pings werden gekickt Repo-Default
DoLuaChecksum true Lua-Checksummen-Prüfung gegen modifizierte Clients Repo-Default
DenyLoginOnOverloadedServer true Logins ablehnen, wenn der Server überlastet ist Repo-Default
MaxAccountsPerUser 1 Nur ein Account pro Steam-User auf diesem Server Repo-Default
SpawnPoint 0,0,0 Globaler Spawn-Punkt (0,0,0 = deaktiviert — Heuristik; Spawns laufen über das Spawn-System) Wert: Repo-Default; Deutung 0,0,0: Heuristik
SaveWorldEveryMinutes 15 Autosave-Intervall in Minuten Repo-Default

Gruppe 2: Performance

Werte = Repo-Default (1:1 aus dem Template). Die Wirksamkeits-Beschreibung stammt aus der Repo-Doku docs/09-performance.md und Community-Wissen.

Option Repo-Default Bedeutung Quelle/Label
ZombieUpdateMaxHighPriority 50 Maximal Anzahl Zombies mit voller Update-Rate Wert: Repo-Default; Wirkung: Community-Quelle (Repo-Doku docs/09)
ZombieUpdateDelta 0.5 Sekunden zwischen Zombie-Bulk-Updates Wert: Repo-Default; Wirkung: Community-Quelle (Repo-Doku docs/09)
ZombieUpdateRadiusHighPriority 10.0 Radius um Spieler mit voller Simulation (0.0 = altes Verhalten) Wert: Repo-Default; Wirkung: Community-Quelle (Repo-Doku docs/09)
ZombieUpdateRadiusLowPriority 45.0 Darunterliegender Radius, in dem Zombies nur mit niedriger Priorität aktualisiert werden Wert: Repo-Default; Wirkung: Community-Quelle (Repo-Doku docs/09)
LightingUpdateInterval 0.5 Intervall der B42-Echtzeit-Lichtpropagation; höher = weniger CPU, minimal verzögerte Lichtwechsel. Interner Default reportedly ~0.1 Wert: Repo-Default; Default ~0.1: Community-Quelle (Repo-Doku docs/09 als Näherung)
HoursForWorldItemRemoval 48 Welt-Items werden nach 48 In-Game-Stunden entfernt (Welt-Hygiene) Wert: Repo-Default; Wirkung: Community-Quelle (Repo-Doku docs/09)
RemovePlayerCorpsesOnCorpseRemoval true Spieler-Leichen werden bei Leichen-Entfernung mit entfernt Repo-Default

Hinweis zu LightingUpdateInterval: Der Template-Kommentar selbst warnt, dass dies ein neuer B42-Key ist, der nach dem ersten Boot im Log verifiziert werden sollte, dass der Build ihn akzeptiert (Repo-Default-Verhalten, 1:1 aus dem Template-Kommentar).

Die Zombie-Update-Settings bewirken laut Repo-Doku, dass entfernte Zombies gebündelt und verzögert aktualisiert werden — bei 8 Spielern kaum sichtbar, bei großen Horden der Unterschied zwischen 60 und 20 TPS (Community-Quelle: Repo-Doku docs/09).

Gruppe 3: Mods (generiert)

Option Repo-Default Bedeutung Quelle/Label
WorkshopItems (leer im Template) Steam-Workshop-IDs der Mods, semikolongetrennt Repo-Default (generiert aus mods.yaml)
Mods (leer im Template) Interne Mod-IDs (aus mod.info), B42: mit Backslash-Prefix Repo-Default (generiert aus mods.yaml)
Map (leer im Template) Interne Karten-Ordnernamen; Muldraugh, KY immer zuletzt Repo-Default (generiert aus mods.yaml)

Diese drei Zeilen stehen im Template nur als Kommentar — sie werden von scripts/mods-generate.sh aus mods.yaml erzeugt (Ausgabe: config/generated/workshop-items.txt) und gehören in die fertige Server-INI übernommen. Details: Mods-Referenz und Modding-Workflow.

Sandbox-Voreinstellung: coop-balanced.lua

Das Repo bringt ein Sandbox-Preset mit: config/presets/sandbox/coop-balanced.lua. scripts/render-config.sh kopiert sie bei jedem make render als ${SERVER_NAME}_SandboxVars.lua ins Server-Verzeichnis (Repo-Verhalten, 1:1).

Designziel des Presets (1:1 aus dem Dateikopf): Top-Coop-Erfahrung für 8 Spieler, kein Sleep-Zwang, gemeinsame Safehouses, moderates XP, Loot-Respawn aus + kein Zombie-Respawn.

Die wichtigsten Werte (alle Repo-Default, 1:1 aus der Datei):

Sandbox-Var Wert Bedeutung
DayLength 3 2h Echtzeit pro In-Game-Tag — gut für Coop-Sessions (Dateikommentar)
StartMonth 7 Startmonat Juli
StartTime 2 Start 09:00 Uhr (Dateikommentar)
Zombies 4 „Normal". ACHTUNG: Skala ist invertiert — 1=Insane ... 4=Normal, 5=Low (Dateikommentar; 3 wäre High = mehr CPU-Last)
PopulationMultiplier 1.0 Gesamt-Population (laut docs/09: 4.0=Insane ... 0=None)
PopulationStartMultiplier 0.8 Sanfterer Start (weniger Zombies am Anfang)
PopulationPeakMultiplier 1.5 Höchst-Population am Peak-Day
ZombieLore Speed/Strength/Cognition 2/2/3 Shamblers, coop-freundliche Werte (Dateikommentar)
RespawnHours 0 Kein Zombie-Respawn — weniger Simulation (Dateikommentar)
FoodLoot / WeaponLoot / OtherLoot 4 / 4 / 4 Seltenes Loot-Niveau, kein Respawn → gemeinsames Wirtschaften
LootRespawn 1 Deaktiviert (Dateikommentar)
XpMultiplier 1.5 Moderat beschleunigtes XP für die Gruppe
SkillBooksMultiplier 1.5 Skillbücher ebenfalls 1.5-fach
SleepAllowed false Kein erzwungener Gruppen-Sleep
Safehouse / PlayerSafehouse true / true Safehouse-System aktiv (auch spieler-eigene)
SafehouseDaySurvivedToClaim 3 3 überlebte Tage bis zum Safehouse-Claim
GlobalChat true Globaler Chat an
PVP false PvP aus — Coop-Server
SafetySystem true Waffen-Safety-System an
CarSpawnRate 3 Fahrzeuge-Spawn-Rate; bei Lag auf 2 drehbar (docs/09)
ChanceHasGas 2 Wahrscheinlichkeit Restbenzin in Fahrzeugen
HoursForCorpseRemoval 72 Leichen werden nach 3 Tagen entfernt (Welt-Hygiene)
BloodLevel 1 Wenig Blut-Decals — spart langfristig RAM (Dateikommentar)

Alle Werte dieser Tabelle: (Repo-Default). Feinjustierung direkt in der Preset-Datei möglich — sie wird 1:1 kopiert (Dateikommentar).

Mythos-Kasten — diese Optionen existieren NICHT

Die folgenden neun Namen kursieren in Foren und KI-generierten „Optimierungslisten" als angebliche Server-Optionen. Sie sind Fantasie- Namen und werden von Project Zomboid (B42) nicht als servertest.ini-Option erkannt:

LightingUpdateDelta, LightingFrameInterval, LightUpdateMs, ZombieLobjectManager, RearrangeZombieUpdate, OptimizeUpdateLoS, MaxZombies, MaxTicksPerFrame, ServerFps

Wichtig zur Verwechslungsgefahr: LightingUpdateInterval (mit „Interval") ist ein ANDERER, echter Name und wird vom Repo-Template gesetzt (siehe Tabelle oben). Die Fantasie-Varianten mit „Delta"/„Frame"/„Ms" gibt es dagegen nicht.

Regel: Niemals Optionen ungeprüft aus Forenbeiträgen in die Server-Konfiguration kopieren. Echte Quelle für dieses Repo sind ausschließlich config/templates/servertest.ini.tmpl und die Repo-Doku unter docs/. Unbekannte Keys werden vom Server schlicht ignoriert — die erhoffte Wirkung tritt nie ein (Heuristik).

Änderungen sauber einführen

Workflow (Repo-Standard):

# 1. Template oder .env anpassen
$EDITOR config/templates/servertest.ini.tmpl   # oder .env

# 2. Rendern
make render

# 3. Neustart, damit der Server die neue Config liest
make restart

Was scripts/render-config.sh dabei alles tut (1:1):

  1. Rendert alle config/templates/*.tmpl per envsubst mit 12 Variablen aus der .env nach ${PZ_DATA_DIR}/Server/ (derzeit nur servertest.ini.tmplservertest.ini). Die 12 Variablen (1:1): SERVER_NAME, PUBLIC_NAME, DESCRIPTION, MAX_PLAYERS, ADMIN_PASSWORD, SERVER_PASSWORD, RCON_PASSWORD, RCON_PORT, RCON_ENABLED, RAM_XMX, GAME_PORT, DIRECT_PORT — siehe ENV-Variablen
  2. Kopiert das Sandbox-Preset als ${SERVER_NAME}_SandboxVars.lua
  3. Kopiert Spawn-Dateien: generierte Versionen aus config/generated/spawns/ (entstehen per make spawns) haben Vorrang, sonst die Vorlagen aus config/spawns/ — Datei-Prefix servertest wird auf ${SERVER_NAME} umbenannt

Achtung: Die Mods-Zeilen (WorkshopItems=/Mods=/Map=) kommen aus make mods (mods.yaml), nicht aus dem Template — siehe Mods-Referenz.

Verwandte Seiten

Vertieft in Repo: docs/09-performance.md (Performance-Checkliste) und config/templates/servertest.ini.tmpl (autoritative Optionsliste).

Weiter: Performance-Guide

Clone this wiki locally