← Blog

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

ParametrZalecana wartośćDlaczego
verifySignatures2Wymusza podpisane pliki PBO — blokuje zmodyfikowane klienty.
forceSameBuild1Dopuszcza tylko klienty w tej samej wersji gry co instancja.
allowFilePatching0Zamyka wczytywanie niespakowanych skryptów po stronie gracza.
passwordAdmin32+ znakiTo hasło RCON — krótkie ciągi są łamane słownikowo w kilka godzin.
speedhackDetection10Rozsą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.

ProfilAccelerationNight accelerationEfekt
Hardcore survival11Czas 1:1, pełne noce, wymaga latarki i NVG
Zbalansowany PL68Doba w 4 h, noc ~15 min
PvP / wieczny dzień416Noc 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.

Jak ustawić stałą porę dnia bez wyłączania cyklu?

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ą.

Gracze skarżą się na desync w miastach — od czego zacząć?

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.