Konfiguracja serwera DayZ dla polskiej społeczności
Par Benjamin D. · PDG
· Mis à jour le 1 września 2026 · Lecture 8 min
Spis treści
Konfiguracja serwera DayZ sprowadza się do kilku plików tekstowych, które decydują o wszystkim: liczbie slotów, tempie cyklu dnia i nocy, gęstości lootu oraz o tym, jak płynnie gra się osobom łączącym się z Polski. Poniżej rozkładam serverDZ.cfg na czynniki pierwsze, pokazuję powiązane pliki misji i podpowiadam ustawienia sieciowe, które realnie zmniejszają opóźnienia.
Konfiguracja serwera DayZ: struktura plików i pierwsze uruchomienie
Zanim dotkniesz jakiegokolwiek parametru, warto zrozumieć, gdzie fizycznie leży co. Instancja DayZ Standalone (Linux lub Windows) ma dość przewidywalny układ katalogów:
/DayZServer
├── serverDZ.cfg # główny plik konfiguracyjny
├── DayZServer # binarka (Linux) / DayZServer_x64.exe (Windows)
├── profiles/ # logi, banlist.txt, whitelist.txt
├── mpmissions/
│ └── dayzOffline.chernarusplus/
│ ├── init.c # skrypt startowy misji
│ ├── cfgeconomycore.xml # rdzeń ekonomii (Central Economy)
│ ├── cfgspawnabletypes.xml # zawartość spawnowanych przedmiotów
│ ├── cfgplayerspawnpoints.xml
│ ├── cfggameplay.json # nadpisania rozgrywki (od 1.10)
│ ├── db/
│ │ ├── types.xml # tabela lootu
│ │ ├── globals.xml # zmienne globalne (zombie, cleanup)
│ │ ├── economy.xml
│ │ └── events.xml # pojazdy, helikoptery, zwierzęta
│ └── storage_1/ # persystencja świata
└── keys/ # klucze bikey modów
Typowa linia startowa w konsoli panelu Pterodactyl albo w skrypcie systemd wygląda tak:
./DayZServer -config=serverDZ.cfg -port=2302 -profiles=profiles \
-dologs -adminlog -netlog -freezecheck \
"-mod=@CF;@Community-Online-Tools" "-servermod=@ServerAdminOnly"
Trzy rzeczy, które psują pierwsze uruchomienie najczęściej: brak katalogu profiles (serwer nie zapisze logów), niewgrane klucze .bikey modów do keys/ (gracze dostają „Session lost”) oraz literówka w nazwie misji w sekcji class Missions. Panel z żywą konsolą i menedżerem plików skraca tę diagnozę do kilku minut, bo widzisz błąd w chwili, w której się pojawia.
Jeśli nie chcesz składać całego środowiska ręcznie i wolisz gotową instancję z anti-DDoS, dyskami NVMe i automatycznymi kopiami zapasowymi, sprawdź hosting DayZ od Fly-Serv — instalacja startuje od razu, a resztę konfiguracji robisz już w plikach opisanych niżej.
serverDZ.cfg krok po kroku: parametry, które naprawdę zmieniają rozgrywkę
Plik jest zwykłym tekstem z prostą składnią klucz = wartość;. Poniżej szkielet, od którego zaczynam każdą nową instancję dla polskiej społeczności:
hostname = "PL Chernarus | Vanilla+ | Loot 1.5x";
password = "";
passwordAdmin = "dlugie-haslo-rcon-32-znaki";
enableWhitelist = 0;
maxPlayers = 60;
verifySignatures = 2;
forceSameBuild = 1;
allowFilePatching = 0;
disableVoN = 0;
vonCodecQuality = 20;
disable3rdPerson = 0;
disableCrosshair = 1;
disablePersonalLight = 1;
lightingConfig = 0;
serverTime = "SystemTime";
serverTimeAcceleration = 6;
serverNightTimeAcceleration = 8;
serverTimePersistent = 0;
guaranteedUpdates = 1;
loginQueueConcurrentPlayers = 5;
loginQueueMaxPlayers = 500;
instanceId = 1;
storageAutoFix = 1;
respawnTime = 5;
timeStampFormat = "Short";
logAverageFps = 300;
logMemory = 300;
logPlayers = 300;
logFile = "server_console.log";
adminLogPlayerHitsOnly = 0;
adminLogPlacement = 1;
adminLogBuildActions = 1;
adminLogPlayerList = 1;
enableCfgGameplayFile = 1;
motd[] = { "Witaj na serwerze PL", "Zasady na Discordzie" };
motdInterval = 180;
class Missions
{
class DayZ
{
template = "dayzOffline.chernarusplus";
};
};
Parametry bezpieczeństwa i integralności
| Parametr | Zalecana wartość | Dlaczego |
|---|---|---|
verifySignatures | 2 | Wymusza podpisane pliki PBO — blokuje zmodyfikowane klienty. |
forceSameBuild | 1 | Dopuszcza tylko klienty w tej samej wersji gry co instancja. |
allowFilePatching | 0 | Zamyka wczytywanie niespakowanych skryptów po stronie gracza. |
passwordAdmin | 32+ znaki | To hasło RCON — krótkie ciągi są łamane słownikowo w kilka godzin. |
speedhackDetection | 10 | Rozsądny próg; niższe wartości generują fałszywe kicki przy skokach opóźnień. |
Kolejka logowania i respawn
loginQueueConcurrentPlayers określa, ilu graczy wchodzi do świata jednocześnie. Wartości powyżej 5–6 na pełnej mapie powodują mikroprzycięcia dla wszystkich, bo silnik streamuje jednocześnie kilkanaście kilometrów terenu. Na instancjach 60–100 slotów zostawiam 5 i podnoszę loginQueueMaxPlayers, żeby nikt nie dostawał odbicia w wieczornym szczycie (20:00–23:00 czasu polskiego).
Logi, bez których nie zmoderujesz społeczności
Włączony adminLogPlacement i adminLogBuildActions zapisują, kto co postawił — to jedyny sensowny dowód w sporze o zniszczoną bazę. logAverageFps = 300 co pięć minut wpisuje do server_console.log średnią wydajność symulacji; ten wpis jest później podstawą całej diagnostyki opisanej w ostatniej sekcji.
Pełny wykaz kluczy z opisem działania utrzymuje Bohemia Interactive w dokumentacji technicznej — warto sprawdzać go po każdej dużej aktualizacji: DayZ Server Configuration (Bohemia Wiki).
Loot, cykl dnia i nocy oraz ekonomia Central Economy
Jak naprawdę działa mnożnik lootu
W DayZ nie ma jednego suwaka „loot x2”. Ilością przedmiotów w świecie steruje types.xml, gdzie każdy wpis wygląda następująco:
<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="1"/>
<category name="weapons"/>
<usage name="Military"/>
</type>
Znaczenie kluczowych pól:
- nominal — docelowa liczba sztuk w świecie. To ten parametr mnożysz, jeśli chcesz „loot 1.5x”.
- min — próg, poniżej którego ekonomia zaczyna dorzucać nowe sztuki. Trzymaj go na ok. 50–60% wartości nominal.
- lifetime — czas w sekundach, po którym niepodniesiony przedmiot znika. Krótszy lifetime na śmieciach (puszki, szmaty) odciąża symulację.
- restock — opóźnienie przed uzupełnieniem po spadku poniżej min. Wartość 0 oznacza natychmiastowy respawn.
- usage / tier — strefy mapy, w których przedmiot może się pojawić (Military, Town, Farm, Tier1–Tier4).
Praktyczna zasada: podnoszenie nominal w całym pliku o 100% zwykle kończy się zapchaniem limitu obiektów i spadkiem wydajności symulacji. Lepiej pracować kategoriami — osobno amunicja, osobno jedzenie, osobno broń wojskowa. Po każdej zmianie usuń zawartość storage_1 albo pozwól ekonomii przeliczyć się przez kilka restartów.
Zombie, sprzątanie i limity w globals.xml
<var name="ZombieMaxCount" type="0" value="1000"/>
<var name="AnimalMaxCount" type="0" value="150"/>
<var name="CleanupLifetimeDeadPlayer" type="0" value="3600"/>
<var name="CleanupLifetimeRuined" type="0" value="330"/>
<var name="IdleModeCountdown" type="0" value="60"/>
<var name="TimeLogin" type="0" value="15"/>
ZombieMaxCount to najczęstsza przyczyna dławienia się symulacji na słabszym sprzęcie — każdy zainfekowany to aktywne AI z pathfindingiem. Na mapie Chernarus wartość 1000 jest wymagająca, ale grywalna na wysokotaktowanym Ryzenie; przy 2000+ spodziewaj się spadków w miastach.
Cykl dnia i nocy dopasowany do polskich godzin gry
Trzy parametry sterują czasem. serverTime ustawia moment startu ("SystemTime" albo sztywno "2025/6/15/12/0"). serverTimeAcceleration to mnożnik doby (1–64), a serverNightTimeAcceleration mnoży dodatkowo tempo nocy.
Rachunek jest prosty: przy serverTimeAcceleration = 6 pełna doba gry trwa 4 godziny realne. Jeśli dodasz serverNightTimeAcceleration = 8, noc leci w tempie 48x i skraca się do kilkunastu minut — to ustawienie dla społeczności, która nie chce biegać z chemlightem przez pół sesji.
| Profil | Acceleration | Night acceleration | Efekt |
|---|---|---|---|
| Hardcore survival | 1 | 1 | Czas 1:1, pełne noce, wymaga latarki i NVG |
| Zbalansowany PL | 6 | 8 | Doba w 4 h, noc ~15 min |
| PvP / wieczny dzień | 4 | 16 | Noc praktycznie pomijalna |
Dla społeczności grającej głównie po 19:00 często lepiej sprawdza się sztywny serverTime ustawiony na poranek gry i restart co 4 godziny — dzięki temu prime time zawsze zaczyna się przy dziennym świetle, niezależnie od kalendarza. Wymaga to jednak serverTimePersistent = 0, inaczej instancja wczyta czas zapisany przed restartem.
Redukcja opóźnień i wydajność: konfiguracja serwera DayZ pod graczy z Polski
Lokalizacja i trasa sieciowa
DayZ jest wrażliwe na jitter przy synchronizacji trafień. Instancja umieszczona w Europie Zachodniej lub Środkowej daje graczom z Polski trasę liczącą zwykle kilkanaście hopów i ping w przedziale kilkudziesięciu milisekund — to zupełnie inna jakość desync niż połączenie transatlantyckie. Zanim zaczniesz szukać winy w konfiguracji, poproś kilku graczy o wynik:
tracert 51.xxx.xxx.xxx # Windows
mtr -rwzbc 100 51.xxx.xxx.xxx # Linux, 100 pakietów, raport tekstowy
Powtarzalne straty pakietów na tym samym hopie oznaczają problem trasy u operatora, a nie w serverDZ.cfg. Warto też mieć w tyle głowy, że ataki wolumetryczne na porty 2302–2305 UDP zdarzają się nawet małym społecznościom — ochrona anti-DDoS działająca na poziomie infrastruktury załatwia to bez ingerencji administratora.
Parametry sieciowe w serverDZ.cfg
defaultVisibility = 1375;
defaultObjectViewDistance = 1375;
networkRangeClose = 20;
networkRangeNear = 150;
networkRangeFar = 1000;
networkRangeDistantEffect = 4000;
networkObjectBatchSend = 100;
networkObjectBatchCompute = 1000;
multithreadedReplication = 1;
simulatedPlayersBatch = 20;
Te wartości sterują tym, ile obiektów instancja replikuje do każdego klienta. Zbyt wysoki networkRangeFar na mapie z rozbudowanymi bazami zalewa łącze i objawia się „gumowaniem” postaci w miastach. Obniżenie go do 800–1000 przy 60+ graczach zwykle daje wyraźną poprawę płynności bez odczuwalnej straty w widoczności lootu.
Sprzęt i restarty
Silnik Enfusion mocno obciąża pojedynczy wątek, więc taktowanie procesora liczy się bardziej niż liczba rdzeni — stąd sens platform Ryzen o wysokiej częstotliwości. Persystencja świata to z kolei nieustanne zapisy do storage_1, gdzie dyski NVMe skracają czas zapisu i przyspieszają start po restarcie. Sprawdź w logu:
grep "FPS" profiles/server_console.log | tail -20
Utrzymujące się bardzo niskie wartości FPS symulacji przy pełnym obłożeniu to sygnał, że masz za dużo zombie, za dużo obiektów z events.xml albo mod, który mieli skrypty w pętli. Wyłączaj mody pojedynczo i porównuj wpisy w logu.
Harmonogram restartów co 3–4 godziny to standard w tej grze: czyści narastające zużycie pamięci i wymusza pełny zapis persystencji. W panelu Pterodactyl ustawisz to zadaniem cyklicznym z ostrzeżeniem dla graczy:
# zadanie w harmonogramie panelu, 10 minut przed restartem
say -1 Restart za 10 minut. Zejdz z drabin i pojazdow.
# po 10 minutach
restart
Kopie zapasowe zanim coś pójdzie nie tak
Katalog storage_1 plus db/ to całe życie serwera. Automatyczne kopie zapasowe wykonywane przed każdym restartem pozwalają cofnąć skutki nieudanej edycji types.xml w kilka minut. Ręcznie robisz to tak:
tar -czf backup_$(date +%F_%H%M).tar.gz \
mpmissions/dayzOffline.chernarusplus/storage_1 \
mpmissions/dayzOffline.chernarusplus/db
Więcej materiałów technicznych dla administratorów znajdziesz na Blog Fly-Serv, a listę wspieranych tytułów — w sekcji Wszystkie nasze serwery gier.
Podsumowanie
Dobrze ustawiona instancja DayZ to trzy warstwy: serverDZ.cfg odpowiada za zasady i bezpieczeństwo, pliki misji za loot i ekonomię, a parametry sieciowe wraz z mocnym pojedynczym wątkiem za płynność rozgrywki. Zmieniaj po jednej rzeczy naraz, obserwuj logi FPS i trzymaj świeże kopie danych — wtedy każda modyfikacja jest odwracalna, a społeczność nie traci postępów.
FAQ
Dlaczego zmiany w types.xml nie działają po restarcie?Central Economy wczytuje tabelę lootu przy starcie misji, ale istniejące przedmioty w świecie pozostają w persystencji. Sprawdź, czy edytowałeś plik w aktywnej misji wskazanej w sekcji class Missions, czy XML jest poprawny składniowo (błąd blokuje wczytanie całego pliku i widać go w server_console.log) oraz czy nowe wartości nominal nie są niższe niż to, co już leży na mapie. Po większych zmianach wyczyść storage_1.
Ustaw serverTime na konkretną datę i godzinę, np. "2025/6/15/9/0", ustaw serverTimePersistent = 0 i dobierz serverTimeAcceleration tak, aby doba nie zdążyła się domknąć między restartami. Przy restarcie co 4 godziny i przyspieszeniu 3 świat przejdzie tylko 12 godzin gry, więc każda sesja startuje o poranku i kończy przed nocą.
Najpierw obniż networkRangeFar do około 1000 i sprawdź ZombieMaxCount w globals.xml — nadmiar AI w skupiskach budynków obciąża symulację. Potem przejrzyj wpisy FPS w logu konsoli podczas szczytu obłożenia i wyłączaj mody pojedynczo. Jeśli spadki pokrywają się z zapisem persystencji, problem leży po stronie dysku, a nie ustawień sieciowych.