RE:NODE

Návody16 min čtení

Nastavení serverDZ.cfg pro DayZ řádek po řádku

Každé nastavení v serverDZ.cfg na serveru DayZ podle účelu: přístup, čas, logování, síť, fronta a persistence, plus chyby, které server rozbijí.

2 čtenáři

serverDZ.cfg je jediný soubor, který každý server DayZ čte úplně jako první: název, hesla, počet hráčů, denní dobu, přísnost anti-cheatu, logování, přihlašovací frontu a složku mise, která se má načíst. Obsahuje zhruba padesát řádků ve tvaru key = value; a blok class Missions, ale na většině serverů záleží jen na asi tuctu z nich. Zbytek jsou buď bezpečné výchozí hodnoty, nebo ladění sítě, na které bez důvodu nesahej. Tento návod projde soubor skupinu po skupině, u každého řádku uvede hodnotu, která stojí za použití, a na konci shrne syntaktické chyby, kvůli kterým server tvoje úpravy ignoruje nebo odmítne nastartovat.

Pokud zakládáš server od nuly, začni kompletním návodem k serveru DayZ, který pokrývá instalaci, porty a módy. Tento článek je reference, kterou máš otevřenou při úpravách souboru.

Kde soubor leží a jak se čte#

Soubor leží v kořenovém adresáři serveru, vedle DayZServer_x64.exe na Windows nebo DayZServer na Linuxu, a serveru se na něj ukazuje spouštěcím parametrem:

bash
$ ./DayZServer -config=serverDZ.cfg -port=2302 -profiles=profiles

Název je jen zvyk, ne podmínka. -config= může ukazovat na libovolný soubor, díky čemuž si lidé drží vedle sebe dvě konfigurace (testovací a ostrou). U panelového hostingu je parametr obvykle pevně nastavený na záložce Startup a ty upravuješ jen samotný soubor, buď v prohlížeči, nebo přes SFTP.

Tři skutečnosti o tom, jak server soubor čte, vysvětlují většinu zmatků:

  • Čte se jednou, při startu. Úprava souboru za běhu serveru nezmění nic až do dalšího restartu. Na rozdíl od některých her DayZ soubor při vypnutí nepřepisuje, takže úprava provedená na běžícím serveru se neztratí - jen ještě není aktivní.
  • Neznámé klíče se ignorují bez hlášení. Překlep v klíči nebo klíč zkopírovaný ze starého návodu, který Bohemia mezitím odstranila, nevyvolá žádnou chybu. Server prostě použije výchozí hodnotu. Pokud se zdá, že nějaké nastavení nic nedělá, zkontroluj jeho pravopis proti souboru, který Bohemia dodává s aktuálním buildem.
  • Syntaktické chyby nejsou vždy tiché. Chybějící středník nebo neuzavřená uvozovka může způsobit, že parser spolkne další řádek, nebo zastaví server při startu. Pokud nějaká chyba je, najdeš ji na začátku souboru .RPT ve složce profiles.

Nejbezpečnější postup je ten nudný: zastav server, uprav, ulož, spusť a přečti si první obrazovku logu.

Identita a přístup#

serverDZ.cfg
hostname = "EU | Chernarus | Vanilla+ | 3-hour restarts";password = "";passwordAdmin = "a-long-random-string";enableWhitelist = 0;maxPlayers = 60;
KlíčCo děláVhodná hodnota
hostnameNázev v launcheru a prohlížečiRegion, mapa, styl, rytmus restartů
passwordHeslo pro připojeníPrázdné pro veřejný server, vyplněné pro soukromý
passwordAdminPřihlásí tě ve hře jako adminaDlouhé a náhodné, nikdy nesdílené
enableWhitelistPřipojit se smějí jen hráči ze seznamu0 pro veřejný, 1 pro soukromý
maxPlayersPočet slotůKolik hráčů váš CPU skutečně utáhne

hostname je tvoje jediná reklama v seznamu tisíců serverů a hráči podle něj filtrují. Dej do něj to, podle čeho se rozhodují: region, mapu, zda je server vanilla a jak často se restartuje. Vyhni se speciálním znakům, které launcher vykresluje špatně; čisté ASCII a svislítko jsou bezpečné.

passwordAdmin zadáváš v herním chatu za #login, abys získal hrstku vanilla admin příkazů, třeba #kick a #shutdown. Je oddělené od hesla BattlEye RCon, které je úplně v jiném souboru a popisuje ho DayZ admin nástroje a BattlEye RCon. Obě hesla by měla být dlouhá a náhodná. Krátké admin heslo na veřejném serveru DayZ někdo uhodne, ani ho nemusí louskat.

enableWhitelist = 1 zapne přístup jen pro seznam. Na standardních instalacích je seznam obyčejný textový soubor whitelist.txt s jedním SteamID64 na řádek; server ho čte při startu. Pokud whitelist zapneš s prázdným souborem, nepřipojí se nikdo, včetně tebe, takže nejdřív přidej sám sebe.

maxPlayers přijímá vysoká čísla, ale skutečným limitem je FPS serveru, ne toto pole. Vanilla server na 60 slotů je rozumný na třech jádrech; server na 60 slotů s velkým seznamem módů často není. Čísla najdeš v tabulce požadavků v hlavním návodu a obecnou úvahu rozebírá kolik hráčů se na server vejde.

Anti-cheat, buildy a omezení klientů#

serverDZ.cfg
verifySignatures = 2;forceSameBuild = 1;allowFilePatching = 0;speedhackDetection = 1;disable3rdPerson = 0;disableCrosshair = 0;disableVoN = 0;vonCodecQuality = 20;

verifySignatures = 2 kontroluje podpis každého módu proti klíčům ve složce keys na serveru. Je to jediná hodnota, kterou Bohemia podporuje, a právě její vypnutí je cesta, jak servery skončí s upravenými klientskými soubory. Pokud jsou hráči vyhazováni s chybou podpisu, řešením je zkopírovat chybějící .bikey do keys, nikdy ne snížit tuto hodnotu.

forceSameBuild = 1 odmítne klienty s jiným buildem hry. Po patchi dostanou hráči, kteří neaktualizovali, u dveří jasnou zprávu místo nejasné chyby v půlce načítání. Nech to zapnuté.

allowFilePatching = 0 blokuje klienty spuštěné s -filePatching, který klientovi dovoluje načítat volné soubory místo podepsaných PBO. Vývojáři módů, kteří testují lokálně, to potřebují zapnuté; nikdo jiný ne a je to častá cesta k příležitostnému cheatování.

speedhackDetection = 1 zapíná kontrolu speed-hacků v enginu. Je levná a málokdy dává falešné poplachy; nech výchozí hodnotu.

disable3rdPerson a disableCrosshair jsou dvě nastavení, která určují styl serveru víc než cokoli jiného. Jen pohled z první osoby (disable3rdPerson = 1) odebírá možnost nakukovat přes zdi ze třetí osoby a je normou na „hardcore“ serverech. Mění to také způsob, jak se základny dobývají a brání, takže se rozhodni před startem, ne po měsíci navrhování základen pro třetí osobu.

disableVoN = 0 nechává zapnutý proximity voice, který je velkou součástí toho, jak se DayZ hraje - přepadení, vyjednávání, obchodování. vonCodecQuality jde od 0 do 30; 20 je dodaná hodnota a rozumný kompromis mezi srozumitelností a šířkou pásma. Zvýšení na 30 stojí trochu přenosu na mluvícího hráče a málokdo si toho všimne.

Denní doba a cyklus dne a noci#

serverDZ.cfg
serverTime = "SystemTime";serverTimeAcceleration = 6;serverNightTimeAcceleration = 4;serverTimePersistent = 1;
KlíčRozsahCo dělá
serverTime"SystemTime" nebo "YYYY/MM/DD/HH/MM"Počáteční datum a čas
serverTimeAcceleration0 až 24Násobitel herních hodin
serverNightTimeAcceleration0.1 až 64Další násobitel použitý v noci
serverTimePersistent0 nebo 1Zachovat čas napříč restarty

Tahle skupina vyvolává víc stížností hráčů než všechny ostatní a aritmetika je jednoduchá, když ji jednou uvidíš. serverTimeAcceleration násobí celé hodiny: při 1 trvá den 24 skutečných hodin, při 6 čtyři, při 12 dvě. serverNightTimeAcceleration se aplikuje navíc, jen v noci, takže efektivní rychlost noci je součin obou hodnot.

Příklad. Při serverTimeAcceleration = 6 a serverNightTimeAcceleration = 4 plyne den rychlostí 6x a noc 24x. Čtyřhodinová herní seance ve skutečném čase tak zažije dlouhé, hratelné dny a noci, které jsou za mnohem méně než hodinu pryč. Právě tenhle tvar - dlouhý den, krátká noc - chce většina veřejných serverů, protože noci v DayZ jsou opravdu tmavé a velká část hráčů se na ně odhlašuje.

serverTime = "SystemTime" spustí hodiny na místním čase stroje. Pevná hodnota jako "2024/6/15/8/0" začíná každou seanci v osm ráno v červnu, což také určuje délku denního světla podle ročního období. Při serverTimePersistent = 0 se tento počáteční čas použije znovu po každém restartu - proto servery se čtyřmi restarty denně a výchozí hodnotou 0 mají čtyřikrát stejné ráno. Nastav 1 a čas pokračuje tam, kde skončil.

Dva související klíče mění, jak noc vypadá, ne jak dlouho trvá. lightingConfig = 0 je jasnější noc, 1 tmavší. disablePersonalLight = 1 odebírá slabé světlo kolem každého hráče, díky kterému jsou i černočerné noci hratelné bez baterky. Když oba posuneš k tmě, noci jsou mnohem těžší; když ke světlu, jsou jen atmosférické. Na nedávných buildech jdou obě nastavit i v cfggameplay.json, o čemž píšu níže.

Persistence, respawn a poškození základen#

serverDZ.cfg
instanceId = 1;storageAutoFix = 1;respawnTime = 5;disableRespawnDialog = 0;disableBaseDamage = 0;disableContainerDamage = 0;

instanceId určuje, kterou složku s persistencí server čte a zapisuje: storage_1 pro instanci 1, storage_2 pro instanci 2, uvnitř složky mise. V té složce je každá základna, stan, vozidlo i postava. Změň číslo a server založí nový svět vedle starého - stará data tam pořád jsou, jen se nenačítají. Dva servery na jednom stroji nikdy nesmějí sdílet stejné instance id. Všechno o té složce, včetně částečných a úplných wipů, najdeš v článku DayZ wipy a persistence.

storageAutoFix = 1 dovolí serveru opravit poškozený soubor persistence při startu, místo aby ho odmítl načíst. Nech to zapnuté. Alternativou k automatické opravě není nedotčený svět, ale server, který nenastartuje, dokud někdo ručně neobnoví backup.

respawnTime je prodleva v sekundách, než může mrtvý hráč znovu nastoupit. disableRespawnDialog = 1 přeskočí volbu mezi čerstvým a náhodným spawnem a pošle hráče rovnou na náhodné místo.

disableBaseDamage = 1 udělá postavené ploty a zdi nezničitelnými a disableContainerDamage = 1 totéž pro stany, sudy a bedny. Dohromady z toho vznikne server bez raidů. To je legitimní styl pro komunity PvE nebo roleplay, ale odstraní to protiváhu hromadění a na dlouho běžícím serveru s nezničitelným úložištěm se ekonomika lootu zaplní předměty, o které nikdo nikdy nepřijde. Pokud raidy vypneš, věnuj větší pozornost příznakům počítání v types.xml, které vysvětluje návod k ekonomice lootu.

Přihlašovací fronta, ping a zprávy#

serverDZ.cfg
loginQueueConcurrentPlayers = 5;loginQueueMaxPlayers = 500;maxPing = 200;motd[] = {"Restarts every 3 hours", "Discord: example.gg/server"};motdInterval = 300;

loginQueueConcurrentPlayers říká, kolik hráčů smí být v procesu načítání najednou, a loginQueueMaxPlayers, jak dlouhá smí fronta být. Výchozí hodnoty mají svůj důvod: dvacet hráčů načítajících se současně po restartu je velký nápor na disk a CPU a když je pouštíš po pěti, FPS serveru zůstane stabilní pro ty, kdo už jsou uvnitř. Zvýšení první hodnoty zrychlí nával po restartu a zhorší prvních pár minut.

maxPing vyhazuje hráče, jejichž ping zůstává nad zadanou hodnotou v milisekundách. Pro server v Německu 200 pustí dovnitř většinu Evropy, Blízkého východu a východ Spojených států a vyloučí hráče, jejichž pohyb by se desynchronizoval všem okolo. Snižuj ji jen tehdy, když si jsi jistý svým publikem. Latence, jitter a ztráta paketů vysvětluje, proč vysoký ping škodí i ostatním, nejen hráči, který ho má.

motd[] je pole řetězců zobrazovaných střídavě; motdInterval je odstup mezi nimi v sekundách. Všimni si hranatých závorek za názvem a složených závorek kolem seznamu: je to jediné místo v souboru, kde se mění syntaxe, a právě odtud pochází většina chyb parseru.

Logování a debug monitor#

serverDZ.cfg
timeStampFormat = "Short";logAverageFps = 300;logMemory = 300;logPlayers = 300;logFile = "server_console.log";adminLogPlayerHitsOnly = 0;adminLogPlacement = 1;adminLogBuildActions = 1;adminLogPlayerList = 1;enableDebugMonitor = 0;

Tři hodnoty log* jsou intervaly v sekundách. logAverageFps = 300 zapisuje FPS serveru do logu každých pět minut a je to jediné nejužitečnější číslo pro posouzení, zda je server přetížený. Zdravé je nad zhruba 30; pod 15 hráči poznají rubber-banding a dveře, které chtějí dva pokusy. logMemory a logPlayers dělají totéž pro využití paměti a počet hráčů, takže můžeš zpomalení srovnat s tím, kolik lidí bylo online.

logFile pojmenovává konzolový log zapisovaný do složky profiles. timeStampFormat je "Short" (jen čas) nebo "Full" (datum a čas); použij Full, pokud někdy budeš muset porovnávat logy napříč dny.

Klíče adminLog* rozhodují, co se zapisuje do souboru .ADM, záznamu připojení, zabití, zásahů a pozic:

  • adminLogPlayerHitsOnly = 1 omezí logování zásahů na zásahy hráčů, což zmenší soubor na serverech s mnoha nakaženými.
  • adminLogPlacement = 1 zaznamenává každý umístěný objekt - stany, pasti, ploty. Nezbytné pro řešení sporů, kdo co kde postavil.
  • adminLogBuildActions = 1 zaznamenává stavění, rozebírání a ničení částí základen. Zapni to, pokud se tvá pravidla starají o raidování.
  • adminLogPlayerList = 1 zapisuje každých pět minut úplný seznam hráčů s pozicemi.

To všechno stojí disk, ne CPU. Vytížený server se všemi volbami zapnutými zapíše za den několik desítek megabajtů .ADM, což je levné pojištění; jen staré logy pravidelně mazej podle rozvrhu. Logy, které stojí za to uchovat obsahuje rozumnou politiku uchovávání.

enableDebugMonitor = 1 ukáže každému hráči malý overlay s jeho zdravím, krví a pozicí. Na testovacím serveru je užitečný a na ostrém je darem pro každého, kdo loví jiné hráče. Na veřejném serveru ho nech vypnutý.

Síť, query a replikace#

serverDZ.cfg
steamQueryPort = 2305;guaranteedUpdates = 1;multithreadedReplication = 1;simulatedPlayersBatch = 20;networkRangeClose = 20;networkRangeNear = 150;networkRangeFar = 1000;networkRangeDistantEffect = 4000;defaultVisibility = 1375;defaultObjectViewDistance = 1375;

steamQueryPort je UDP port, na který se launcher a prohlížeč ptají na název serveru, mapu a počet hráčů. Pokud se na server dá připojit přes IP, ale v seznamu chybí, je tento port první podezřelý: musí odpovídat portu, který je serveru skutečně přidělen, a nesmí ho používat nic jiného. Porty herních serverů vysvětleny popisuje, proč hry oddělují query port od herního portu.

guaranteedUpdates = 1 vybírá síťový protokol; 1 je jediná zdokumentovaná hodnota. multithreadedReplication = 1 dovolí enginu rozložit síťovou replikaci do více vláken a mělo by zůstat zapnuté. simulatedPlayersBatch omezuje, kolik hráčů server simuluje během jednoho snímku.

Hodnoty networkRange* jsou vzdálenosti v metrech, ve kterých se objekty replikují klientovi s různou prioritou, a dvě hodnoty viditelnosti omezují dohled a dohled objektů. Jsou to přesně ta nastavení, která hostingová fóra doporučují zvyšovat pro „lepší vizuál“. Nedělej to. Každé zvýšení znamená víc objektů replikovaných každému hráči v každém snímku a cena dopadne na hlavní vlákno, které už rozhoduje o FPS tvého serveru. Dodané hodnoty jsou vyladěné pro dodané mapy. Jediný dobrý důvod je změnit je kvůli konkrétnímu problému, který jsi změřil, a nejdřív na testovací instanci.

Blok mise a cfggameplay.json#

Soubor končí blokem, který vybírá mapu a ekonomiku:

serverDZ.cfg
enableCfgGameplayFile = 1;class Missions{    class DayZ    {        template = "dayzOffline.chernarusplus";    };};

template je název složky v mpmissions, napsaný přesně, včetně velkých písmen. Chernarus je dayzOffline.chernarusplus a Livonia dayzOffline.enoch; komunitní mapy dodávají vlastní složky misí, jak popisuje provoz Deer Isle nebo Namalsk. Špatný název se nevrátí k Chernarusu - server misi nenačte.

enableCfgGameplayFile = 1 říká serveru, aby ze složky mise četl cfggameplay.json. Bohemia přidala tento soubor pro nastavení hratelnosti, která dřív vyžadovala skriptový mód: výdrž, pohyb, omezení stavění základen, předvolby vybavení při spawnu, teplotu a osvětlení. Několik hodnot existuje na obou místech - disablePersonalLight, lightingConfig, disableBaseDamage, disableContainerDamage, disableRespawnDialog - a při zapnutém jsonu dokumentace Bohemie považuje za místo jejich nastavení právě json. Pokud ho zapneš, nastav tyto hodnoty tam a kopie v .cfg nech ve výchozím stavu, aby na otázku „kde se tohle nastavuje“ existovala jen jedna odpověď.

Ukázka jako ilustrace tvaru, ne kompletní soubor:

cfggameplay.json
{  "GeneralData": {    "disableBaseDamage": false,    "disableContainerDamage": false,    "disableRespawnDialog": false  },  "PlayerData": {    "disablePersonalLight": false  },  "WorldsData": {    "lightingConfig": 1  }}

Začni od cfggameplay.json, který je dodán ve tvé složce mise, místo abys psal vlastní: soubor má pole s verzí a mnohem víc klíčů a struktura se mezi aktualizacemi hry mění. Před restartem json zvaliduj - jedna čárka navíc a server soubor buď ignoruje, nebo se zastaví.

Čistá výchozí konfigurace#

Dohromady vypadá rozumný veřejný server takto. Kopíruj tvar, ne řetězce:

serverDZ.cfg
hostname = "EU | Chernarus | Vanilla+ | Restarts 00 03 06 09 12 15 18 21 CET";password = "";passwordAdmin = "replace-with-32-random-characters";enableWhitelist = 0;maxPlayers = 50;verifySignatures = 2;forceSameBuild = 1;allowFilePatching = 0;disableVoN = 0;vonCodecQuality = 20;disable3rdPerson = 0;disableCrosshair = 0;serverTime = "SystemTime";serverTimeAcceleration = 6;serverNightTimeAcceleration = 4;serverTimePersistent = 1;loginQueueConcurrentPlayers = 5;loginQueueMaxPlayers = 500;instanceId = 1;storageAutoFix = 1;respawnTime = 5;maxPing = 200;timeStampFormat = "Full";logAverageFps = 300;logMemory = 300;logPlayers = 300;logFile = "server_console.log";adminLogPlacement = 1;adminLogBuildActions = 1;enableDebugMonitor = 0;steamQueryPort = 2305;enableCfgGameplayFile = 1;class Missions{    class DayZ    {        template = "dayzOffline.chernarusplus";    };};

Než si to zkopíruješ, udělej zálohu původního souboru. Na RE:NODE editor v prohlížeči zvýrazňuje syntaxi, takže zachytí neuzavřené uvozovky ještě před restartem, a backup sloty na každém tarifu DayZ ti dovolí celý server jedním tlačítkem vrátit, kdyby se úprava nepovedla. Query a herní porty se přidělují automaticky a zobrazují se na záložce Network, takže steamQueryPort by měl odpovídat tomu, který je tam uvedený.

Chyby, které soubor rozbijí#

  • Chytré uvozovky. Kopírování z webové stránky nebo textového procesoru změní " na zakulacené uvozovky, které parser nepřijme. Upravuj v obyčejném textovém editoru nebo v editoru panelu.
  • Klíče ze starých návodů. Návody z roku 2018 uvádějí klíče, které byly odstraněny nebo přejmenovány. Neznámé klíče se ignorují, takže server běží a nastavení nedělá nic. Porovnej se souborem dodaným s tvým buildem.
  • Název šablony. Na Linuxu záleží na velikosti písmen. dayzoffline.chernarusplus a dayzOffline.chernarusplus jsou tam různé složky.
  • Dvě kopie jednoho nastavení. Hodnota nastavená v serverDZ.cfg i v cfggameplay.json vede ke sporům, která z nich vyhrává. Nastav ji na jednom místě.
  • Úprava špatného souboru. Pokud spouštěcí řádek říká -config=serverDZ_live.cfg, úprava serverDZ.cfg nezmění nic. Nejdřív zkontroluj záložku Startup nebo spouštěcí řádek.
  • Nechtěná změna `instanceId`. Svět vypadá jako vymazaný. Není - stará složka storage tam pořád je. Vrať číslo zpět.

FAQ#

Musím po úpravě serverDZ.cfg restartovat?

Ano. Soubor se čte jednou při startu serveru. Změny se projeví při dalším startu a server při vypnutí tvoje úpravy nepřepisuje, takže je bezpečné soubor upravovat za běhu, pokud potom restartuješ.

Jak udělám noci na svém serveru DayZ kratší?

Zvyš serverNightTimeAcceleration. Násobí normální zrychlení jen v noci, takže serverTimeAcceleration = 6 a noční hodnotou 4 dává dlouhé dny a noci, které ubíhají čtyřikrát rychleji než dny.

Proč můj server ignoruje nastavení, které jsem přidal?

Obvykle je to překlep nebo zastaralý klíč, které DayZ ignoruje bez chyby, nebo chybějící středník na řádku před ním. Porovnej klíč s dodaným souborem a v logu .RPT hledej zprávy parseru.

Jaký je rozdíl mezi passwordAdmin a heslem RCon?

passwordAdmin se používá ve hře s #login a dává pár chatových příkazů. Heslo BattlEye RCon je v BEServer_x64.cfg a používají ho vzdálené nástroje k připojení. Jsou nezávislá a obě by měla být dlouhá a náhodná.

Mám zvyšovat hodnoty síťového dosahu a dohledu?

Ne, pokud jsi nezměřil konkrétní problém. Vyšší hodnoty replikují každému hráči víc objektů a stojí FPS serveru. Dodané hodnoty jsou vyladěné pro dodané mapy.

Můžu provozovat dva servery se stejným serverDZ.cfg?

Tak jak je, ne. Každý potřebuje vlastní porty, vlastní steamQueryPort a vlastní instanceId, jinak se druhý nepodaří navázat na port, nebo bude sdílet a poškodí persistenci prvního.


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.

0/2000