DayZ má dva systémy, se kterými se noví administrátoři setkávají ve špatném pořadí: mody, kterými začíná každý, a centrální ekonomiku, která rozhoduje o tom, jestli mapa obsahuje něco, co stojí za nalezení. Dokonale modovaný server s nedotčenou ekonomikou je prázdný server. Aby obojí fungovalo, potřebuješ zhruba 6 GB paměti pro server na 40 slotů, tři porty UDP, účet na Steamu, který vlastní hru, a ochotu upravovat XML a restartovat. Tento návod pokrývá celou cestu: instalaci, serverDZ.cfg, porty, mody a jejich klíče, soubory ekonomiky, správu a selhání, která plní tickety podpory.
Co vlastně provozuješ#
Server DayZ je samostatná aplikace na Steamu - DayZ Server, app id 223350 - a na rozdíl od většiny her není dostupný anonymnímu přihlášení v SteamCMD. Potřebuješ účet na Steamu, který vlastní DayZ, a SteamCMD si u něj poprvé vyžádá potvrzení Steam Guard. Hostingy, které DayZ instalují za tebe, to dělají právě s tvými přihlašovacími údaji z tohoto důvodu. Použij záložní účet, který vlastní hru a nic jiného cenného; instalace herního serveru nemá co držet účet, ze kterého nakupuješ.
To, co server dostane z krabice, je skromnější, než lidé čekají:
- Jedna složka mise v
mpmissions, která je zároveň mapou i ekonomikou. Chernarus jedayzOffline.chernarusplus, Livonia jedayzOffline.enocha pozdější mapy mají vlastní složky - přečti si adresář, než abys název hádal. - Konfigurační soubor
serverDZ.cfgs přibližně čtyřiceti nastaveními. - BattlEye, který obstarává anticheat, bany a vzdálenou správu.
- Žádné admin menu ve hře. Není spectate, teleport, spawn předmětů ani seznam hráčů. Každý administrativní nástroj, který jsi kdy na serveru DayZ viděl, je mod nebo externí klient RCon.
- Perzistentní svět uložený odděleně od souborů mise, takže můžeš upravovat ekonomiku, aniž bys smazal základny hráčů - většinou.
Složka mise je ta důležitá myšlenka. Když upravuješ loot, upravuješ soubory uvnitř mpmissions/dayzOffline.chernarusplus/ a ty se čtou při startu. Nic, co tam změníš, se neprojeví, dokud server nerestartuješ, a proto má správa DayZ rytmus: uprav, restartuj, podívej se, uprav znovu.
Požadavky a využití zdrojů#
DayZ je na svůj počet hráčů těžký server. Simuluje nakažené, zvířata, vozidla a ekonomiku předmětů na mapě o rozloze 225 čtverečních kilometrů a hodně se opírá o jedno vlákno.
| Hráči | RAM | CPU | Poznámky |
|---|---|---|---|
| 10-20, vanilla | 4-6 GB | 2 jádra | Pohodlné; dobré pro soukromou skupinu |
| 30-40, vanilla | 6-8 GB | 2-3 jádra | Běžný veřejný server |
| 40-60, vanilla | 8-10 GB | 3+ jader | Limitem se stává FPS serveru, ne paměť |
| 30-50, silně modovaný | 10-12 GB | 3+ jader | Seznamy modů velikosti Expansion, obchodníci, AI |
- CPU rozhoduje o tom, jak se plný server hraje. Sledovanou metrikou je FPS serveru, zapisované, pokud nastavíš
logAverageFps. Zdravé je nad 30; pod zhruba 15 začnou hráči hlásit rubber-banding, nesynchronizovaný loot a dveře, které se otevřou dvakrát. - Paměť roste se seznamem modů mnohem rychleji než s počtem hráčů. Vanilkový server na 60 slotů spotřebuje méně než server na 30 slotů s velkou sestavou Expansion.
- Disk: instalace serveru zabírá zhruba 3 GB a každý mod přidává svoje. Seznam dvaceti modů snadno přidá dalších 10-15 GB, a proto plány DayZ začínají s větším diskem, než by u tak staré hry člověk čekal.
- Síť je skromná, několik set kilobajtů za sekundu na hráče, ale je to UDP a citlivé na latenci. Obecné pravidlo z CPU vs RAM pro herní servery platí tady víc než u většiny her: lidé kupují paměť, když je ve skutečnosti nasycené jedno jádro.
Plány DayZ na RE:NODE začínají na 6 GB se třemi přidělenými porty, což je správný tvar pro vanilkový nebo lehce modovaný server na 40 slotů. Velký server s Expansion chce horní příčku žebříčku.
Instalace serveru a spouštěcí řádek#
Na vlastním stroji SteamCMD se skutečným přihlášením:
$ steamcmd +force_install_dir /home/dayz/server +login <steam_account> \ +app_update 223350 validate +quitServer se pak spouští dlouhým řádkem parametrů. Tohle jsou parametry, na kterých záleží, a v panelu se objevují jako pole na kartě Startup, ne jako text, který píšeš:
| Parametr | Účel |
|---|---|
-config=serverDZ.cfg | Konfigurační soubor ke čtení |
-port=2302 | Herní port |
-profiles=profiles | Kam se zapisují logy, BattlEye a výpisy pádů |
-mod=@CF;@Mod2 | Mody pro klienta i server, odděleno středníky, na pořadí záleží |
-servermod=@AdminTool | Mody jen pro server, které klienti nesmějí mít |
-doLogs | Zapisovat logy skriptů a chyb |
-adminLog | Zapisovat log aktivity hráčů .ADM |
-netLog | Logování síťového provozu, jednou užitečné, navždy hlučné |
-freezeCheck | Vypsat log, když se server zasekne |
-cpuCount=2 | Kolik jader smí engine používat |
Dej -profiles někam, kam se dostaneš přes SFTP nebo správce souborů, protože ve té složce žije každá odpověď na otázku „proč to udělal“. Pokud je pro tebe SteamCMD nové, app id a rozdíl mezi validate a obyčejnou aktualizací vysvětluje SteamCMD vysvětleno.
serverDZ.cfg, klíč po klíči#
Soubor je seznam řádků key = value; včetně středníků, s blokem mise na konci. Hodnoty níže jsou ty z ukázkového souboru Bohemia a jsou rozumným výchozím bodem, ne doporučením.
hostname = "Chernarus - vanilla, no KOS in trader";password = "";passwordAdmin = "a-long-random-string";maxPlayers = 60;verifySignatures = 2;forceSameBuild = 1;disableVoN = 0;vonCodecQuality = 20;disable3rdPerson = 0;disableCrosshair = 0;serverTime = "SystemTime";serverTimeAcceleration = 12;serverNightTimeAcceleration = 1;serverTimePersistent = 0;loginQueueConcurrentPlayers = 5;loginQueueMaxPlayers = 500;instanceId = 1;storageAutoFix = 1;steamQueryPort = 2305;respawnTime = 5;timeStampFormat = "Short";logAverageFps = 300;logMemory = 300;logPlayers = 300;logFile = "server_console.log";adminLogPlayerHitsOnly = 0;enableDebugMonitor = 0;allowFilePatching = 0;multithreadedReplication = 1;speedhackDetection = 1;class Missions{ class DayZ { template = "dayzOffline.chernarusplus"; };};Ty, nad kterými stojí za to přemýšlet, místo abys je kopíroval:
verifySignatures = 2odmítne jakýkoli mod, jehož.bikeynení ve složcekeysna serveru. Nech 2. Snížení na 0 je způsob, jak servery skončí s cizími upravenými PBO.forceSameBuild = 1odmítne klienty s jinou verzí hry. Vypnutí nezpůsobí, že zastaralý klient bude fungovat; jen selže později a méně srozumitelně.allowFilePatching = 0blokuje klienty spuštěné s-filePatching, kudy přichází hodně nenápadného cheatování. Zapnuté ho potřebují jen vývojáři modů.serverTimeAccelerationnásobí herní hodiny.12dává dvouhodinový den.serverNightTimeAccelerationnásobí znovu během noci, takžeserverTimeAcceleration = 12sserverNightTimeAcceleration = 4dává dlouhý den a krátkou noc - nejčastěji požadovaná změna na každém veřejném serveru.serverTimePersistent = 1způsobí, že světový čas přežije restart, místo aby se vrátil naserverTime. Při čtyřech restartech denně a hodnotě 0 má tvůj server čtyřikrát to samé ráno.instanceIdvybírá složku persistence,storage_1pro instanci 1. Dva servery sdílející stroj nesmějí sdílet id instance.disableVoN = 0zachovává hlas ve hře. Vypnutí je větší změna toho, jak se hra hraje, než většina nastavení v souboru.
Porty a připojení#
| Port | Protokol | Účel |
|---|---|---|
2302 | UDP | Herní provoz, nastavuje -port= |
2303-2304 | UDP | Rezervované vedle herního portu; hostingy přidělují celý blok |
2305 | UDP | Dotaz Steam, nastavuje steamQueryPort |
| Port RCon | UDP | BattlEye RCon, nastavuje se v BEServer_x64.cfg |
Dotazovací port je ten, na kterém se lidé chytají. Hra běží, můžeš se připojit přes IP a server se nikdy neobjeví v seznamu DayZ Launcheru - to je zablokovaný nebo špatný steamQueryPort. Oba jsou UDP; pravidlo firewallu, které otevře jen TCP, tady nedělá vůbec nic. Porty herních serverů vysvětleny vysvětluje, proč dotazovací port existuje odděleně od herního a jak vypadá každé selhání.
Téměř nikdo se na modovaný server DayZ nepřipojuje z prohlížeče ve hře. Používají DayZ Launcher, který čte seznam modů, jejž server inzeruje, přihlásí odběr těch položek na Workshopu a spustí hru s odpovídajícím řádkem -mod=. To je celý důvod, proč musí být pořadí načítání modů a klíče správně: launcher automatizuje klientskou stranu a hlasitě to vzdá, když se obě strany neshodují.
Mody: klíče, pořadí načítání a dva přepínače#
Mody z Workshopu se stahují přes SteamCMD proti app id klienta, 221100, ne serveru:
$ steamcmd +force_install_dir /home/dayz/server +login <steam_account> \ +workshop_download_item 221100 1559212036 +quitPak se musí stát tři věci a když chybí kterákoli, projeví se jiným matoucím příznakem:
- Složka modu, pojmenovaná
@SomeMod, leží v kořeni serveru. - Její soubor
keys/*.bikeyje zkopírovaný do složkykeysna serveru. Když to vynecháš, klienti jsou na načítací obrazovce vyhozeni BattlEye s chybou podpisu, i když je všechno ostatní správně. - Složka je uvedená v
-mod=, v pořadí závislostí. Frameworky první:-mod=@CF;@DayZ-Expansion-Core;@DayZ-Expansion-Bundle. Community Framework (@CF) je závislostí velkého množství modů a musí se načíst před nimi.
-servermod= použij pro všechno, co klient mít nemá: admin nástroje, spawnery lootu, úpravy na straně serveru. Mody v -servermod= se launcheru neinzerují, takže hráči nejsou vyzváni k jejich stažení. Server-only mod omylem v -mod= způsobí, že si každý připojující se hráč stahuje něco, k čemu nemá využití.
Dva návyky zachrání celé servery. Zaprvé, zamkni seznam modů a aktualizuj ho záměrně, ne automaticky - patch DayZ zneplatní každý mod, dokud ho autor nepřestaví, a server, který se v den patche automaticky aktualizuje, je server, na který se v den patche nikdo nepřipojí. Co dělat, když aktualizace modu něco rozbije stojí za přečtení dřív, než to budeš potřebovat. Zadruhé, před každou aktualizací si ponech kopii funkční složky modu a svého XML. Mody ze Steam Workshopu na dedikovaných serverech popisuje, jak se stahování z Workshopu chová na straně serveru napříč hrami.
types.xml a centrální ekonomika#
Tohle je část, která rozhoduje, jestli se na tvém serveru vyplatí hrát. Loot se nerozhazuje náhodně. Centrální ekonomika drží cílovou populaci každého předmětu na mapě a doplňuje k ní, a pravidla žijí v XML uvnitř složky mise.
| Soubor | Co řídí |
|---|---|
db/types.xml | Každý předmět: kolik jich existuje, jak dlouho vydrží, jak rychle se vrací |
db/events.xml | Vozidla, havárie vrtulníků, spawny nakažených a zvířat |
db/globals.xml | Limity pro celý svět jako ZombieMaxCount a časovače úklidu |
db/messages.xml | Plánovaná hlášení, včetně toho, které vypíná server |
db/economy.xml | Které podsystémy ekonomiky se vůbec načítají |
cfgeconomycore.xml | Které soubory XML se čtou, včetně tvých vlastních |
cfgspawnabletypes.xml | S jakými příslušenstvími a obsahem se předmět spawnuje |
cfgeventspawns.xml | Souřadnice, které smějí události používat |
cfgplayerspawnpoints.xml | Kde se objevují nové spawny a respawny |
Záznam v types.xml vypadá takhle. Čísla jsou ilustrační - skutečná najdeš v přibaleném souboru:
<type name="M4A1"> <nominal>8</nominal> <lifetime>7200</lifetime> <restock>1800</restock> <min>4</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> <category name="weapons"/> <usage name="Military"/> <value name="Tier4"/></type>Každý element má konkrétní úlohu a pět z nich rozhoduje skoro o všem:
nominalje cílový počet na mapě.minje podlaha: když živý počet klesne na ni, ekonomika zařadí další.lifetimeje počet vteřin, které nedotčený předmět přežije, než ho úklid odebere. Zvednutí a položení předmětu hodiny vynuluje.restockje prodleva, než smí ekonomika nahradit to, co bylo odebráno.0znamená, jakmile to půjde.costje priorita spawnu mezi 0 a 100 - který z vhodných předmětů dostane slot.usageavaluerozhodují, kde se může objevit:usageje typ budovy (Military, Police, Medic, Farm, Industrial, Town, Village, Hunting),valueje úroveň lootu, vyšší úrovně jsou dál od pobřeží. Předmět bez usage a bez value se nespawnuje nikde, což je nejčastější sebezpůsobená rána v administraci DayZ.- Atributy
flagsrozhodují, co se počítá donominal.count_in_cargo="1"znamená, že se počítají předměty uvnitř kontejnerů, takže hromadící klan může mapu připravit o předmět, aniž by cokoli bylo rozbité.
Z tohoto mechanismu plynou tři důsledky. Městečko, které působí holé, je obvykle problém nominal, ne nastavení rychlosti spawnu, které nemůžeš najít. Zvýšení nominal napříč vším loot nenásobí donekonečna, protože celek je také omezen lootovými body na mapě. A předmět s krátkým lifetime zmizí ze základny, kterou jsi nechal týden - použij kontejner, který má vlastní lifetime.
Mody, které přidávají předměty, potřebují také své záznamy. Zbraňový mod, který vypadá, že nedělá nic, je téměř vždy mod, jehož předměty nebyly nikdy zaregistrovány v ekonomice: mod je načtený, zbraně existují v herních souborech a nic je nespawnuje. Správná oprava není vložit záznamy modu do vanilkového types.xml, který aktualizace hry přepíše. Místo toho zaregistruj vlastní složku v cfgeconomycore.xml:
<ce folder="custom"> <file name="mod_types.xml" type="types"/></ce>Teď tvé úpravy žijí v mpmissions/dayzOffline.chernarusplus/custom/mod_types.xml a přežijí přepsání patchem. types.xml a lootová ekonomika rozebírá celý systém podrobně.
Persistence je od toho všeho oddělená. Základny hráčů, skrýše, vozidla a data postav žijí v storage_<instanceId> vedle složky mise. Úprava ekonomiky je nemaže. Smazání té složky ano - to je wipe a je to jediný spolehlivý. Nejdřív udělej kopii a drž ji jinde než na serveru: zálohy, které opravdu obnovíš existují proto, že záloha, kterou nikdo neobnovil, je hypotéza.
Správa: RCon, logy a restarty#
Správa je BattlEye RCon plus admin mod, který sis vybral. passwordAdmin v serverDZ.cfg by mělo být dlouhé a náhodné, i když vanilka s ním dovoluje skoro nic dělat; heslo k RCon je oddělené a žije v BEServer_x64.cfg ve složce BattlEye uvnitř adresáře profiles.
Vlastní sada příkazů BattlEye, zadávaných do klienta RCon nebo do konzole panelu, je malá:
| Příkaz | Účinek |
|---|---|
players | Připojení hráči s jejich ID a pingy |
kick <id> <reason> | Vyhodí podle id relace |
ban <id> <minutes> <reason> | Zabanuje připojeného hráče, 0 pro trvalý ban |
addBan <GUID> <minutes> <reason> | Zabanuje někoho, kdo není připojený |
bans / removeBan <n> | Vypíše a zruší bany |
say -1 <message> | Zpráva všem |
loadBans / loadEvents | Znovu načte soubory BattlEye bez restartu |
#shutdown | Zastaví server |
Bany se ukládají do bans.txt jako GUID z BattlEye, které jsou odvozené ze SteamID a nejsou to SteamID. Zkopíruj je z logů, místo abys je převáděl ručně. Pokud RCon vůbec vystavuješ, přečti si nejdřív RCON bezpečně - protokol je UDP, heslo je celé ověření a servery DayZ se neustále skenují.
Logy ve složce profiles jsou druhá polovina práce:
server_console.log- všechno, co konzole vypsala, a tam se objevují chyby ve tvém XML při startu.*.ADM- admin log: připojení, odpojení, pozice, smrti, zásahy, kdo koho zabil a čím. To je soubor, který čteš po každé hádce o raid základny.script*.log- chyby skriptů, včetně těch z modů.crash_*a*.mdmp- to, co poslat autorovi modu.
Servery DayZ se restartují podle plánu, typicky každé tři až čtyři hodiny, protože FPS serveru s průběhem relace klesá a protože plánovaný restart je řízené uložení. Můžeš to řešit čistě v db/messages.xml, kde záznam zprávy může nést vypnutí, a karta Schedules v panelu umí spustit restart plus zálohu výrazem cron - jaký interval se skutečně vyplatí, viz restartovací plány, které pomáhají. Na RE:NODE je tlačítko Restart čisté zastavení, hlídač si všimne serveru, který se neustále sám restartuje, a otevře ticket, místo aby ho nechal ve smyčce, a server, který dosáhne limitu paměti, se zastaví a čistě restartuje, místo aby se nechal swapovat.
Řešení potíží#
Server běží, ale není v seznamu DayZ Launcheru. Dotazovací port. Zkontroluj, že steamQueryPort odpovídá přidělenému portu UDP a že ho na stroji nezabírá nic jiného.
Hráči jsou vyhazováni s chybou podpisu BattlEye. V keys chybí .bikey, nebo se mod aktualizoval a přinesl nový klíč. Po každé aktualizaci modu zkopíruj klíče všech modů znovu.
„You cannot play/edit this mission; it is dependent on downloadable content that has been deleted.“ Seznam modů klienta se neshoduje se serverem - obvykle mod, který launcher nestáhl, nebo nesoulad verzí. Ať hráč ověří soubory přes launcher, ne přes Steam.
Loot se po úpravě `types.xml` nezměnil. Buď jsi nerestartoval, nebo se soubor nepodařilo naparsovat a ekonomika se vrátila k výchozímu. Přečti server_console.log od začátku: poškozený soubor XML je tam pojmenovaný i s elementem, který ho rozbil.
Předměty přidaného modu se nikdy nespawnují. Nemají záznamy v ekonomice, nebo mají záznamy bez usage a bez value. Viz výše.
Všechno je pomalé, když se server zaplní. Zkontroluj zalogované FPS serveru dřív, než koupíš paměť. Vysoké počty nakažených, velké seznamy modů a desítky persistentních vozidel stojí CPU, ne RAM.
Základny po aktualizaci zmizely. Persistence v storage_<instanceId> byla resetována nebo se změnilo id instance. Bez zálohy té složky není žádná záchrana.
Světový čas se při každém restartu resetuje. serverTimePersistent = 0.
FAQ#
Můžu provozovat server DayZ, aniž bych DayZ vlastnil?
Ne. Aplikace serveru není dostupná anonymnímu přihlášení v SteamCMD, takže se pro instalaci musí použít účet na Steamu, který hru vlastní. Použij záložní účet, ne hlavní.
Kolik hráčů server DayZ unese?
maxPlayers jde výrazně přes 60, ale praktickým limitem je CPU. Většina veřejných serverů běží na 40-60 a nad tím začíná ztrácet FPS serveru, zvlášť s velkým seznamem modů. Počet hráčů server DayZ rozbije jen zřídka; rozbije ho seznam modů.
Musím restartovat každých pár hodin?
Ne nutně. Server bude běžet dál. Ale FPS serveru se při dlouhé relaci snižuje, restart je čisté uložení a většina serverů s mnoha mody je po něm viditelně lepší. Tři až čtyři hodiny jsou zvyk komunity; oznam to přes db/messages.xml, aby kvůli tomu nikdo neztratil raid.
Smaže úprava lootové ekonomiky mapu?
Ne. Loot a persistence jsou oddělené. Úprava types.xml a dalších souborů ekonomiky mění, co se spawnuje od příštího restartu; základny hráčů, skrýše a postavy v storage_<instanceId> zůstávají nedotčené. Wipe znamená záměrné smazání té složky storage.
Proč mod funguje mně, ale nikomu jinému?
Máš mod lokálně a server ho neinzeruje, nebo je v -servermod=, ačkoli má být v -mod=. Mody pro klienta i server patří do -mod= s klíčem v keys; do -servermod= patří jen skutečně serverové mody.
Kde mám hledat jako první, když je něco špatně?
V server_console.log a v souboru .ADM ve složce profiles, v tomto pořadí. Polovina správy DayZ je XML a druhá polovina je čtení logu, který ti řekne, který jeho řádek jsi pokazil.




Komentáře
Zcela anonymně: žádný účet, žádný e-mail, žádné cookie. Ukládáme jen jméno, které napíšeš, text a čas - nic dalšího. Počet odkazů je omezený a značkování se nevykresluje.