← Blog

Jak skonfigurować serwer DayZ w trybie PvE

Par Benjamin D. · PDG

· Mis à jour le 3 września 2026 · Lecture 8 min

Spis treści

Konfiguracja pod serwer DayZ PvE to przede wszystkim praca w pliku serverDZ.cfg, plus dopięcie ekonomii zombie i lootu oraz kilku modów, które zdejmują z rozgrywki element strzelania do siebie nawzajem. Poniżej znajdziesz konkretne parametry, przykłady plików i zasady utrzymania takiej instancji w stabilnej formie przez wiele tygodni.



Serwer DayZ PvE: co realnie zmienia konfiguracja administratora

Warto zacząć od twardego faktu technicznego: DayZ nie ma natywnego przełącznika „PvE=1". Silnik nie rozróżnia obrażeń zadanych przez gracza od tych zadanych przez zarażonego. Wszystko, co robimy w warstwie waniliowej, to ograniczanie skutków konfliktu między graczami: brak niszczenia baz, brak otwierania cudzych skrzyń, dłuższe cykle dnia, hojniejszy loot. Pełna blokada obrażeń między graczami wymaga moda serwerowego.

Z perspektywy administratora tryb bez PvP dzieli się więc na cztery warstwy:

  1. serverDZ.cfg — parametry misji, czasu, logów, ochrony konstrukcji i pojemników.
  2. cfggameplay.json — reguły budowania, strefy z ograniczeniem dostępu, zachowanie gracza.
  3. mission/dbglobals.xml, types.xml, events.xml, czyli respawn zombie i loot.
  4. Mody — blokada obrażeń PvP, strefy handlu, mapa, quest system.

Każda z tych warstw ładuje się w innym momencie startu instancji, dlatego kolejność wprowadzania zmian ma znaczenie. Najpierw stabilizujesz konfigurację bazową, dopiero potem dokładasz mody. Odwrotna kolejność kończy się zwykle diagnozą typu „nie wiadomo, co zepsuło ekonomię".

Jeżeli chcesz od razu pracować na środowisku z panelem Pterodactyl, dyskami NVMe i ochroną anty-DDoS w standardzie, zerknij na hosting DayZ — reszta artykułu zakłada dostęp do konsoli i menedżera plików takiego panelu.



serverDZ.cfg: parametry kluczowe dla rozgrywki bez PvP

Plik serverDZ.cfg leży w katalogu głównym instancji. Edytujesz go przez menedżer plików panelu albo lokalnie i wysyłasz przez FTP. Po każdej zmianie konieczny jest pełny restart — DayZ nie przeładowuje konfiguracji na gorąco.

Minimalna baza konfiguracji

hostname = "Chernarus PvE | Trader | Loot+";
password = "";
passwordAdmin = "ZmienToNaDlugiCiag_48znakow";
maxPlayers = 60;

verifySignatures = 2;
forceSameBuild = 1;
allowFilePatching = 0;

disableVoN = 0;
vonCodecQuality = 20;

disable3rdPerson = 0;
disableCrosshair = 0;
disablePersonalLight = 0;

serverTime = "SystemTime";
serverTimeAcceleration = 6;
serverNightTimeAcceleration = 8;
serverTimePersistent = 1;

guaranteedUpdates = 1;
loginQueueConcurrentPlayers = 5;
loginQueueMaxPlayers = 500;

instanceId = 1;
storageAutoFix = 1;

disableBaseDamage = 1;
disableContainerDamage = 1;
disableRespawnDialog = 0;

respawnTime = 5;
timeStampFormat = "Short";
logAverageFps = 60;
logMemory = 60;
logPlayers = 60;
logFile = "server_console.log";

adminLogPlayerHitsOnly = 0;
adminLogPlacement = 1;
adminLogBuildActions = 1;
adminLogPlayerList = 1;

motd[] = { "Serwer bez PvP.", "Strefa handlu jest chroniona." };
motdInterval = 300;

class Missions
{
    class DayZ
    {
        template = "dayzOffline.chernarusplus";
    };
};

Parametry, które w trybie bez PvP zachowują się inaczej

ParametrWartość zalecanaDlaczego
disableBaseDamage1Blokuje niszczenie ścian, bram i wież. Bez tego gracze rozbiją cudze bazy nawet bez strzelania do siebie.
disableContainerDamage1Beczki, namioty i skrzynie stają się nieniszczalne. Kluczowe, gdy społeczność opiera się na długim zbieractwie.
serverTimeAcceleration4–8Wolniejszy cykl niż na serwerach PvP; gracze budują i eksplorują, nie polują na siebie w nocy.
serverNightTimeAcceleration6–12Skraca noc bez usuwania jej całkowicie. Wartość 1 przy przyspieszeniu 6 daje bardzo długie noce.
disable3rdPerson0Widok TPP nie daje przewagi taktycznej tam, gdzie nie ma walki między graczami.
respawnTime5Krótki czas oczekiwania po śmierci od zarażonego lub upadku.
verifySignatures2Wymusza podpisane klucze modów. Zostaw włączone i wgrywaj pliki .bikey do katalogu keys.
allowFilePatching0 lub 1Niektóre mody klienckie wymagają 1. Jeżeli nie musisz, trzymaj 0.
storageAutoFix1Naprawia uszkodzoną bazę persistence po twardym wyłączeniu instancji.

Parametry startowe procesu

W panelu Pterodactyl parametry startowe ustawiasz w zakładce Startup. Typowa linia dla instancji z modami wygląda tak:

./DayZServer -config=serverDZ.cfg -port=2302 -profiles=profiles \
  -BEpath=battleye -cpuCount=4 -dologs -adminlog -netlog -freezecheck \
  -mod=@CF;@VanillaPlusPlusMap;@Trader \
  -servermod=@AdminTools

-cpuCount ustawiaj zgodnie z liczbą przydzielonych wątków; DayZ i tak obciąża głównie jeden rdzeń, dlatego wysoka częstotliwość Ryzen daje więcej niż duża liczba rdzeni. -freezecheck pozwala wykryć zawieszenie pętli symulacji zanim gracze zaczną zgłaszać rozłączenia.



Strefy bezpieczne, respawn zombie i loot w trybie PvE

Strefy z ograniczeniem dostępu w cfggameplay.json

Od wersji 1.15 wanilia udostępnia mechanizm player restricted areas. Nie jest to klasyczna „safezone" znana z modów handlowych — służy raczej do wypychania graczy z obszarów, w których nie powinni przebywać (np. strefa skażona, obszar wokół spawnu misji). Włączasz go w mpmissions/dayzOffline.chernarusplus/cfggameplay.json:

{
  "GameplayConfigVersion": 128,
  "WorldsData": {
    "lightingConfig": 0,
    "objectSpawnersArr": ["mapgrouppos_custom.json"],
    "playerRestrictedAreaFiles": ["cfgPlayerRestrictedArea.json"]
  },
  "BaseBuildingData": {
    "HologramData": {
      "disableIsCollidingBBoxCheck": 0,
      "disableIsCollidingPlayerCheck": 0,
      "disableIsClippingRoofCheck": 0,
      "disableIsBaseViableCheck": 0
    },
    "ConstructionData": {
      "publicBuildAllowed": 1
    }
  },
  "PlayerData": {
    "disableRespawnDialog": 0,
    "StaminaData": {
      "sprintStaminaModifierErc": 1.0,
      "staminaWeightLimitThreshold": 6000
    }
  }
}

Jeżeli chcesz prawdziwej strefy bez obrażeń wokół handlarza, potrzebujesz moda z własnym systemem safezone. Popularne rozwiązania handlowe mają w konfiguracji tablicę stref z pozycją XYZ i promieniem, np.:

"SafeZones": [
  { "Position": [11827.0, 0.0, 12432.0], "Radius": 120.0, "Name": "Green Mountain Trader" },
  { "Position": [4967.0, 0.0, 2447.0], "Radius": 90.0, "Name": "Baltic Port" }
]

Zasada praktyczna: promień powinien obejmować cały parking i wejścia, ale nie sąsiednie budynki z lootem — inaczej gracze zaczną kempingować w strefie bezkarnie. Zawsze sprawdzaj współrzędne w edytorze mapy, a nie „na oko" z minimapy.

Wyciszenie okolic handlarza z zarażonych

Zombie potrafią wejść do strefy handlu i psuć klimat. Rozwiązanie waniliowe to modyfikacja mapgroupproto.xml lub usunięcie punktów spawnu w cfgeventspawns.xml dla wybranego obszaru. Prościej i bezpieczniej jest jednak ograniczyć globalny limit i pilnować rozkładu przez eventy.

globals.xml — sterowanie liczbą zarażonych i sprzątaniem

<var name="ZombieMaxCount" type="0" value="900"/>
<var name="AnimalMaxCount" type="0" value="200"/>
<var name="IdleModeStartup" type="0" value="1"/>
<var name="IdleModeCountdown" type="0" value="60"/>
<var name="CleanupLifetimeDeadInfected" type="0" value="120"/>
<var name="CleanupLifetimeDeadPlayer" type="0" value="1800"/>
<var name="CleanupLifetimeRuined" type="0" value="300"/>
<var name="TimeLogin" type="0" value="15"/>
ZmiennaEfekt w praktyce
ZombieMaxCountGlobalny sufit zarażonych. Wartość 900–1200 daje wyraźne PvE bez zabijania wydajności; powyżej 1500 rośnie obciążenie wątku symulacji.
AnimalMaxCountZwierzyna łowna. W trybie bez PvP polowanie staje się głównym źródłem mięsa — 200 to sensowny punkt wyjścia.
IdleModeStartupSerwer nie symuluje pełnej ekonomii, gdy nikt nie gra. Oszczędza zasoby między sesjami.
CleanupLifetimeDeadInfectedKrótszy czas leżenia zwłok zmniejsza liczbę encji na mapie.

types.xml — loot dopasowany do rozgrywki kooperacyjnej

Bez PvP gracze nie tracą sprzętu w walce, więc ekonomia szybko się „zapycha": wszystko, co wyspawnowało, trafia do baz i nigdy nie wraca do puli. Dwa parametry ratują sytuację — nominal i lifetime.

<type name="M4A1">
    <nominal>12</nominal>
    <lifetime>7200</lifetime>
    <restock>1800</restock>
    <min>6</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"/>
    <value name="Tier3"/>
    <value name="Tier4"/>
</type>

Najważniejszy trik: count_in_hoarder="0" i count_in_cargo="0" sprawiają, że przedmiot schowany w namiocie nie liczy się do limitu nominal, więc świat dalej generuje nowe egzemplarze. Odwrotnie — ustawienie tych flag na 1 przy rzadkich przedmiotach zapobiega gromadzeniu setek sztuk w jednej bazie.

  • nominal — docelowa liczba sztuk w świecie. Podnoś stopniowo, o 20–30% na iterację.
  • min — próg, poniżej którego uruchamia się restock.
  • lifetime — czas w sekundach do despawnu porzuconego przedmiotu. Dłuższy lifetime w PvE bywa wygodny, ale zwiększa liczbę obiektów w bazie persistence.
  • cost — waga losowania w obrębie tej samej kategorii i tieru.

events.xml — kontrolowane fale zarażonych i loot dynamiczny

<event name="InfectedArmy">
    <nominal>80</nominal>
    <min>0</min>
    <max>0</max>
    <lifetime>300</lifetime>
    <restock>0</restock>
    <saferadius>50</saferadius>
    <distanceradius>30</distanceradius>
    <cleanupradius>100</cleanupradius>
    <flags deletable="0" init_random="0" remove_damaged="1"/>
    <position>fixed</position>
    <limit>custom</limit>
    <active>1</active>
</event>

Zwiększanie nominal w eventach infekcji wojskowej to najczystszy sposób na podniesienie trudności PvE bez ruszania globalnego ZombieMaxCount. Analogicznie, eventy typu StaticHeliCrash czy StaticContaminatedArea dostarczają celu wypraw, gdy nie ma polowania na graczy. Pełny opis pól znajdziesz w dokumentacji Bohemia Interactive.



Mody, wydajność i utrzymanie instancji PvE

Kolejność ładowania modów

Mody w DayZ ładują się dokładnie w kolejności podanej w -mod=. Biblioteki zależnościowe (framework typu CF) muszą stać jako pierwsze, inaczej pozostałe rozszerzenia wywalą się na starcie z błędem klasy. Praktyczna kolejność:

  1. frameworki i biblioteki wspólne,
  2. mody mapy i UI,
  3. mody rozgrywki (handel, questy, blokada PvP),
  4. mody przedmiotów i broni,
  5. narzędzia administracyjne — najlepiej w -servermod=, żeby nie wymuszać pobierania po stronie gracza.

Po dodaniu moda z nowymi przedmiotami skopiuj jego pliki types.xml do katalogu misji i zarejestruj je w cfgeconomycore.xml:

<ce folder="custom_types">
    <file name="trader_types.xml" type="types"/>
    <file name="weapons_extra.xml" type="types"/>
</ce>

Brak tego wpisu to najczęstsza przyczyna sytuacji „mod jest, ale przedmioty nigdzie nie spawnują".

Blokada obrażeń między graczami

Mody realizujące PvE działają zwykle na jednej z trzech zasad: przechwycenie EEHitBy i wyzerowanie obrażeń, globalna flaga w konfiguracji moda, albo strefowe wyłączenie damage. Pierwsze podejście jest najpewniejsze, bo obejmuje też obrażenia pośrednie (granaty, pojazdy). Zawsze przetestuj scenariusze brzegowe: potrącenie samochodem, wybuch, upadek ze zniszczonej konstrukcji, obrażenia od ognia w bazie.

Kopie zapasowe i persistence

Baza persistence w DayZ to katalog mpmissions/<misja>/storage_1. Uszkodzenie tego katalogu oznacza utratę wszystkich baz graczy — a w rozgrywce bez PvP bazy to główna wartość, jaką gracze budują tygodniami.

  • Włącz automatyczne kopie zapasowe w panelu i trzymaj co najmniej 7 punktów przywracania.
  • Pobieraj lokalnie snapshot przed każdą większą zmianą modów lub aktualizacją gry.
  • Restartuj instancję co 4–6 godzin: DayZ zapisuje persistence przy zamknięciu i przy tickach ekonomii, a regularny cykl ogranicza narastanie wycieków pamięci.
  • Trzymaj storageAutoFix = 1 jako siatkę bezpieczeństwa po nieczystym wyłączeniu.

Wydajność i limity

Wątek symulacji DayZ jest jednordzeniowy, więc liczy się częstotliwość CPU, a nie liczba rdzeni. Dyski NVMe skracają czas ładowania persistence przy starcie — przy dużej liczbie baz różnica jest odczuwalna. Obserwuj w logach:

grep "Average server FPS" profiles/server_console.log | tail -20
grep -i "error\|warning" profiles/script*.log | tail -40

Spadki poniżej 20 średnich FPS serwera zwykle oznaczają zbyt wysoki ZombieMaxCount, nadmiar encji z niekontrolowanego lifetime albo mod generujący ciężkie pętle skryptowe. Redukuj po jednym czynniku naraz i porównuj logi z tego samego okna godzinowego.

Bezpieczeństwo administracyjne

  • passwordAdmin minimum 32 znaki, unikalne, zmieniane po każdej rotacji ekipy.
  • RCON przez BattlEye wyłącznie z BEServer_x64.cfg z restrykcyjnym RConIP.
  • Konta pomocnicze w panelu jako subużytkownicy z ograniczonymi uprawnieniami — moderator nie potrzebuje dostępu do plików konfiguracyjnych.
  • Whitelist w formie kolejki logowania lub moda, jeśli społeczność jest zamknięta.
  • Ochrona wolumetryczna anty-DDoS działa po stronie infrastruktury, więc Twoim zadaniem zostaje higiena haseł i logów.

Podobne zasady dotyczą innych tytułów survivalowych z ekonomią plikową — jeśli prowadzisz kilka światów jednocześnie, sprawdź Wszystkie nasze serwery gier oraz materiały techniczne na Blog Fly-Serv</