RE:NODE

Návody11 min čtení

Wipy serveru DayZ: úplné i částečné resety

Jak funguje persistence v DayZ: složka storage, players.db, economy.xml a vlajky území, plus jak bezpečně provést úplný wipe, wipe postav nebo wipe světa.

1 čtenář

Všechno, co si svět DayZ pamatuje mezi restarty, leží v jedné složce: storage_<instanceId> uvnitř složky mise, tedy mpmissions/dayzOffline.chernarusplus/storage_1/ na výchozím serveru s Chernarusem. Postavy jsou v souboru players.db v té složce; stany, základny, schovávky, vozidla i vlastní stav ekonomiky jsou v binárních souborech pod data/. Úplný wipe znamená smazat obsah složky při zastaveném serveru. Wipe samotných postav je smazání players.db. Wipe světa, který ponechá postavy, je smazání data/ a ponechání players.db. Všechno ostatní - rozpad základen, časovače vlajek, co vůbec přežije restart - se nastavuje v hrstce XML souborů, a když je nastavíš správně, budeš potřebovat wipy méně často.

Tento článek pokrývá persistenci od začátku do konce. Samotné spawnování lootu je v návodu k types.xml pro DayZ a konfigurační klíč, který vybírá složku storage, vysvětluje serverDZ.cfg vysvětleno.

Co se ukládá a kam#

Složku s persistencí vybírá instanceId v serverDZ.cfg: instance 1 čte a zapisuje storage_1, instance 2 storage_2, vždy uvnitř složky mise pojmenované v template. Změň kteroukoli z hodnot a server založí nový svět - ten starý je pořád na disku, jen se nenačítá.

Uvnitř obvykle najdeš:

CestaCo obsahuje
players.dbPostavy: pozice, zdraví, inventář, statistiky
data/dynamic_*.binObjekty umístěné hráči a dynamické objekty: stany, schovávky, předměty na zemi
data/building.binStav budov, například otevřené a zamčené dveře
data/events.binObjekty událostí, včetně vozidel
data/types.binÚčetnictví ekonomiky pro typy předmětů
data/vehicles.binStav vozidel, na buildech, které ho oddělují

Seznam souborů .bin ber jako orientační, ne pevný. Bohemia za dobu života hry měnila, jak se persistence dělí mezi soubory, a rozhodující jsou názvy na tvém serveru. Než cokoli smažeš, vypiš si obsah složky.

players.db je databáze SQLite. Záleží na tom ze dvou důvodů: dá se otevřít libovolným prohlížečem SQLite, kdybys někdy potřeboval prohlédnout nebo odstranit jednu postavu, a nikdy se nesmí kopírovat ani upravovat za běhu serveru, protože kopie může vzniknout uprostřed zápisu.

Samotné soubory mise - types.xml, events.xml, cfgeconomycore.xml a další - jsou konfigurace, ne persistence. Jejich úprava nic nevymaže. Smazání storage_1 je neresetuje. Udržet tuhle hranici jasnou je většina práce.

Co rozhoduje o tom, co se uloží#

Které kategorie se vůbec ukládají a načítají, se nastavuje v db/economy.xml. Vanilla soubor vypadá takto:

db/economy.xml
<economy>    <dynamic init="1" load="1" respawn="1" save="1"/>    <animals init="1" load="0" respawn="1" save="0"/>    <zombies init="1" load="0" respawn="1" save="0"/>    <vehicles init="1" load="1" respawn="1" save="1"/>    <randoms init="0" load="0" respawn="1" save="0"/>    <custom init="0" load="0" respawn="0" save="0"/>    <building init="1" load="1" respawn="0" save="1"/>    <player init="1" load="1" respawn="1" save="1"/></economy>
AtributVýznam
initVytvořit tuto kategorii při prvním vytvoření světa
loadNačíst její uložený stav při startu
respawnNechat ekonomiku nahrazovat spotřebované
saveZapisovat její stav do storage

Zvířata a nakažení se neukládají: při každém startu se objeví čerství, a proto restart rozpustí zástupy zombíků. Dynamické objekty, vozidla, budovy a hráči se ukládají. Než začneš ladit persistenci, porovnej svůj soubor s tímhle - mód nebo starý návod mohl změnit příznak a load="0" u player způsobí, že každá postava po každém restartu začíná znovu, a vypadá to jako chyba.

Tyhle příznaky se dají použít i k záměrnému jednorázovému resetu: nastartuj jednou s load="0" u kategorie, nech server zapsat čistý stav a pak hodnotu vrať. Funguje to, ale druhou půlku je snadné zapomenout a mazání souborů se zálohou po ruce je předvídatelnější. Nech příznaky na vanilla hodnotách, pokud nemáš konkrétní důvod.

Životnost, rozpad a vlajky území#

Perzistentní neznamená trvalé. Každý objekt má životnost a systém úklidu odstraní všechno, čeho se po tu dobu nikdo nedotkl. Tak mizí opuštěné základny bez wipu.

  • Předměty a kontejnery. lifetime každého typu v types.xml, v sekundách, říká, jak dlouho přežije bez interakce. Stany, sudy a zakopané schovávky mají ve vanilla souborech dlouhou životnost, řádově týdny. Interakce s kontejnerem - otevření, přesouvání věcí v něm - vynuluje jeho časovač.
  • Části základen a vlajky území. Vztyčená vlajka území udržuje při životě části základny v jejím okruhu. Vlajku musí hráč obnovovat: FlagRefreshFrequency a FlagRefreshMaxDuration v db/globals.xml určují, jak často je obnovení možné a jak dlouho plně zvednutá vlajka základnu chrání.
  • Globální úklid. globals.xml obsahuje také CleanupLifetimeDefault, CleanupLifetimeDeadPlayer, CleanupLifetimeDeadInfected, CleanupLifetimeRuined a podobné hodnoty pro věci bez vlastní životnosti.
db/globals.xml (excerpt)
<var name="FlagRefreshFrequency" type="0" value="432000"/><var name="FlagRefreshMaxDuration" type="0" value="3456000"/>

S těmito vanilla hodnotami lze vlajku obnovit každých pět dní a drží základnu až čtyřicet. Zvyš je a opuštěné základny se budou povalovat, zaplňovat mapu i soubory persistence; sniž je a aktivní hráči přijdou o základny, když odjedou na dovolenou. Většina serverů je nechává být. Pokud tvůj běží na měsíčním cyklu wipů, na rozpadu tolik nezáleží; pokud se nikdy newipuje, je to jediné, co brání zanášení světa.

Kdy se svět skutečně ukládá#

DayZ zapisuje persistenci periodicky za běhu a ještě jednou při čistém vypnutí. Proces, který je zabit - tvrdé zastavení, pád, výpadek proudu - ztratí vše, co se změnilo od posledního zápisu, a v nejhorším případě zanechá napůl zapsaný soubor.

Z toho plynou tři praktické důsledky:

  1. Vždy zastavuj čistě. Použij Stop nebo Restart v panelu, #shutdown přes RCon nebo zprávu o vypnutí v db/messages.xml. Na RE:NODE tlačítko Restart pošle čisté zastavení, takže se persistence zapíše dřív, než proces skončí. Kill je pro server, který už se zasekl.
  2. Nech `storageAutoFix = 1;` v serverDZ.cfg. Dovolí serveru opravit poškozený soubor při startu, místo aby ho odmítl. Bez toho může jedno špatné vypnutí zanechat server, který nenastartuje.
  3. Hlídej paměť. Když server dosáhne limitu paměti, je zastaven silou - na RE:NODE se kontejner zastaví a čistě znovu spustí, místo aby se nechal swapovat, což je správné chování, ale pořád to není čisté uložení. Server, který naráží na limit, přichází pokaždé o postup. Proč se tvůj herní server pořád restartuje popisuje, jak to poznat.

Druhy wipu#

Každý wipe sleduje stejnou bezpečnostní rutinu: oznam ho, čistě zastav server, udělej zálohu, pak maž. Liší se jen to, co mažeš.

WipeSmazatPonechat
ÚplnýVše v storage_<n>Soubory mise, konfiguraci, bany
Jen postavyplayers.dbdata/, takže základny a schovávky zůstanou
Jen světObsah data/players.db, takže postavy si nechají vybavení
Jeden hráčJednu postavu v players.dbVše ostatní
Změna mapyNic - nová mise má vlastní storageStarou složku pro případ návratu

Úplný wipe

Standardní měsíční nebo sezónní reset. Zastav server, zálohuj, smaž obsah storage_1 (nebo složku přejmenuj, což zároveň slouží jako rychlá lokální záloha) a spusť. Server vytvoří nové storage, ekonomika od nuly osídlí mapu lootem a každý hráč začíná jako čerstvý spawn. Soubory mise, serverDZ.cfg, bany BattlEye i konfigurace admin módů leží jinde a zůstanou nedotčeny.

První start po úplném wipu trvá déle než obvykle, protože ekonomika spawnuje loot po celé mapě. Dej tomu čas, než začneš posuzovat, zda loot vypadá správně.

Wipe samotných postav

Smazání players.db vrátí každou postavu na čerstvý spawn, zatímco každý stan, základna a vozidlo zůstanou, kde jsou. Tohle používají admini po exploitu s duplikací, který zaplavil inventáře, nebo na začátku nové sezóny na serveru, kde jsou základny dlouhodobou investicí. Počítej s tím, že základny rychle vyrabují čerství hráči, kteří vědí, kde jsou - oznam to.

Wipe světa, postavy zůstanou

Smaž obsah data/ a ponech players.db. Svět se resetuje - základny, schovávky, vozidla, stav ekonomiky - zatímco postavy si nechají to, co nesly. Hodí se, když rozbitý mód zanechal svět plný neplatných objektů nebo když chceš resetovat základny, aniž bys hráče trestal za jejich vybavení. Postavy se načtou na uložených pozicích, což je na stejné mapě v pořádku.

Odstranění jednoho hráče

Existují dvě cesty. Pokud tvé admin nástroje umějí postavu smazat nebo resetovat, použij je, když je hráč offline. Jinak zastav server, zálohuj a otevři players.db v prohlížeči SQLite; postavy jsou uložené s identifikátorem hráče a odstranění toho řádku je resetuje. Dělej to jen se zálohou po ruce a jen při zastaveném serveru.

Jen vozidla

Podporovaný wipe „jen vozidel“ neexistuje. Na buildech, které drží vozidla v samostatném souboru, jeho smazání při zastaveném serveru vrátí vozidla na čerstvé spawny. Na buildech, kde vozidla žijí společně s ostatními objekty událostí, resetuješ i místa havárií a další události. Nejdřív to vyzkoušej na kopii složky, jako u každého částečného wipu, který závisí na názvech souborů.

Kdy je wipe nutný#

Většina změn ho nepotřebuje. Změna nominals, životností, denní doby nebo téměř čehokoli v serverDZ.cfg se projeví při příštím restartu a svět zůstane celý.

Změny, které wipe vyžadují, nebo alespoň opatrný postup:

  • Jiná mapa nebo mise. Nová mise má vlastní storage tak jako tak - viz provoz komunitní mapy.
  • Odebrání módu, který přidává perzistentní objekty. Módy na stavění základen, úložiště a vozidla zanechávají v persistenci objekty, které už nemají třídu. Server může hlásit chyby, objekty smazat, nebo odmítnout nastartovat. Takový mód odeber při wipu.
  • Velké změny frameworku. Přidání nebo odebrání něčeho jako DayZ Expansion mění, co svět obsahuje; jeho vlastní doporučení je začít na čistém storage. Viz návod k DayZ Expansion.
  • Poškození, které `storageAutoFix` nespraví. Pokud server nenastartuje a logy ukazují na persistenci, volba je záloha, nebo wipe.

Aktualizace hry sama o sobě wipe vyžaduje jen zřídka, i když Bohemia občas po velkých změnách jeden doporučila. Než se rozhodneš, přečti si poznámky k patchi.

Zálohy a rozvrh wipů#

Wipe maže data, takže záloha před ním není volitelná - je to tlačítko zpět pro den, kdy objevíš chybu v novém nastavení, nebo kdy hráč dokáže, že jeho základna zmizela kvůli tvé chybě.

Co zálohovat:

  • Celou složku storage_<n> spolu se složkou mise, ke které patří. Obnova jedné bez druhé ti dá persistenci, která si odporuje s ekonomikou.
  • serverDZ.cfg, složku BattlEye s bans.txt a konfiguraci admin módů ve složce profiles.
  • Ne binárky serveru ani módy z Workshopu - ty se dají stáhnout znovu.

Zálohuj při zastaveném serveru, nebo aspoň hned po čistém restartu; kopie players.db pořízená uprostřed zápisu se nemusí otevřít. Na RE:NODE jsou backup sloty součástí každého tarifu DayZ, ukládají se mimo stroj, který chrání, a obnovují se tlačítkem, a záložka Schedules umí podle výrazu cron zřetězit varování, čistý restart a zálohu - vzory najdeš v naplánované úlohy, které stojí za to mít. A čas od času nějakou obnov, abys ověřil, že funguje: vyzkoušej obnovu dřív, než ji potřebuješ vysvětluje jak.

Pro samotný rozvrh se komunity ustálily na jednom ze tří rytmů:

RytmusHodí se proKompromis
Měsíční úplný wipeVytížené PvP serveryČerstvá soutěž; dlouhodobí stavitelé odcházejí
Sezónní, každé 2-4 měsíceSmíšené komunityČas na stavění; mapa se zaplňuje
Nikdy, jen rozpadPvE a roleplayKontinuita; spoléhá na dobré životnosti

Ať zvolíš cokoli, zveřejni to a drž se toho. Wipe oznámený týden předem je nový začátek; neohlášený je způsob, jak komunity ztrácejí stálé hráče. Stejné zásady z jiné hry najdeš v wipy v Rustu bez ztráty hráčů.

Řešení problémů#

Svět se po aktualizaci sám resetoval. Změnil se instanceId nebo template, takže server čte jinou složku storage. Ta stará tam pořád je; vrať hodnotu zpět.

Postavy se resetují při každém restartu. load nebo save je 0 u player v economy.xml, nebo se do players.db nedá zapisovat. Zkontroluj příznaky, pak log.

Server po pádu nenastartuje. Poškozený soubor persistence. Ověř storageAutoFix = 1;, v logu .RPT si přečti, který soubor jmenuje, a pokud oprava selže, obnov tu složku storage ze zálohy.

Zmizely základny, které měly přežít. Vlajka území nebyla obnovena v rámci FlagRefreshMaxDuration, nebo měly předměty krátkou životnost. Zkontroluj globals.xml a lifetime příslušných typů.

Start trvá několik minut. Velmi rozsáhlá persistence. Sniž životnosti u haraburdí, nech fungovat rozpad a naplánuj wipe.

Částečný wipe něco rozbil. Obnov zálohu, kterou jsi udělal před ním - a příště smazání nejdřív vyzkoušej na kopii.

FAQ#

Smaže úprava types.xml můj server DayZ?

Ne. Soubory ekonomiky jsou konfigurace. Persistence je ve složce storage a resetuje se jen jejím smazáním, změnou instanceId nebo přepnutím mise.

Jak vymažu postavy, ale ponechám základny?

Zastav server, udělej zálohu a smaž players.db ze storage_<instanceId>. Každá postava bude čerstvý spawn a svět zůstane, jaký byl.

Jak resetuji svět, ale nechám hráčům vybavení?

Zastav server, zálohuj a smaž obsah data/ ve složce storage, přičemž players.db ponech. Základny, schovávky a vozidla se resetují; postavy se načtou s inventářem.

Jak dlouho vydrží základny bez wipu?

Dokud se obnovuje jejich vlajka území. Ve vanilla globals.xml plně zvednutá vlajka chrání základnu až čtyřicet dní a obnovit ji lze každých pět. Nechráněné objekty se řídí vlastními hodnotami lifetime.

Můžu wipe vzít zpět?

Jen ze zálohy pořízené před ním. Proto je záloha součástí rutiny wipu, ne volitelný doplněk.

Proč první start po wipu trvá tak dlouho?

Ekonomika spawnuje loot, vozidla a události po celé mapě od nuly. Pozdější starty načítají uložený stav a jsou rychlejší.


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