Konfigurationsmechanismen für Zombie Spawning (v1.07)

  • Hallo zusammen,


    ich möchte meine Erfahrungen mit euch teilen, die ich über die letzten 3 Tage gesammelt habe. Die Motivation stammt aus der äußerst irreführenden und widersprüchlichen Generierung von Zombies entgegen der Konfiguration. Daraus ergab sich mein Ziel alle Konfigurationsmöglichkeiten die mit dem Zombie Spawnen zusammenhängen zu beleuchten.


    Mein test setup ist ein lokaler Server mit einem einzigen mod "zomberry admin tools". Da ich sehr viele restarts von Server und Client erwartet habe, musste ich den Iterations -Zeitaufwand minimieren. Client im Fenstermodus starten und automatisch beim starten auf den Server connecten. Den Server So konfigurieren das keine künstliche Wartezeit beim Connecten und Disconnecten entstehen (global.xml TimeLogin Timelogout).


    Jetzt folgen Beschreibungen zu allen Konfigurationsfiles die ich finden konnte die damit im Zusammenhang stehen.



    1. cfgeconomycore.xml (Ordner: DayZServer\mpmissions\dayzOffline.chernarusplus\)


    In diesem File werden unter anderem grundsätzliche Default Werte gesetzt. Für mich war entscheidend hier das Zombie Logging auf "true" zu setzen. Leider werden nur "Zombie created" und nicht auch "Zombie despawned" gelogged, was geholfen hätte.


    So sieht ein Zombie aus der erzeugt wurde im log:


    13:01:44 !!! [CE][Spawn] Character "ZmbM_VillagerOld_White" at 7992.048340, 14651.787109


    2. zombie_territories.xml (Ordner: DayZServer\mpmissions\dayzOffline.chernarusplus\env\

    In diesem File werden Zonen definiert der Name innerhalb einer Zone referenziert einem Event Namen (event.xml dazu später). smin und smax sind die Zombieanzahl, wie viele Zombies in dieser Zone nach einem Server start immer erzeugt werden sollen, unabhängig davon wo sich Spieler befinden. Seltsamerweise verhalten sich die beiden Werte nicht wie min und max. Stattdessen ergeben sich Folgende Zombie Mengen min+max. 2 und 4 = 6 und nicht 2-4.


    dmin und dmax sind die dynamisch erzeugten Zombies in Spielerumgebungen. Diese Werte sind tatsächlich min-max Werte. Bei 5 und 10 können es 5-10 werden. Allerdings können es aber auch viel weniger werden und das hängt von weitaus mehr Umständen ab. Dazu später. x und y sind praktisch x/y koordinaten. r der Radius in denen Zombies spawnen können.

    Hier erstmal ein Beispiel.



    Während meiner Tests habe ich oft nur eine Zone definiert, um den Bereich genauestens zu inspizieren, um keine ablenkenden und potentielll anderen störenden Spawns durch das CE (Central Economy System) zu haben.


    Man könnte erwarten das jetzt 20 Zombies an diesem ort spawnen. Wenn überhaupt tun sie das nur durch ein bestimmtes event "InfectedVillage".


    3. events.xml


    Unser Event "InfectedVillage" ist hier also aus der Zone heraus verknüpft. Äußerst Interessant ist hier der saferadius. Er verhindert das das Event ausgelöst wird, wenn sich ein Spieler in der Distanz von 200 befindet. Damit kann verhindert werden das Zombies im sichtbaren Bereich eines Spielers spawnen. Der Cleanupradius bestimmt, wann die dynamischen Zombies wieder abgeräumt werden. Genauer: Wenn sich kein Spieler mehr in einer Distanz zu 1200 befindet. Zusätzlich könnte hier die lifetime noch eine Rolle spielen. Selbst wenn kein Spieler mehr in der Distanz zu 1200 sich befindet, sichert die lifetime noch eine mindestens Lebenszeit. Allerdings bin ich mir da nicht 100% sicher. Nominal, min und max scheinen keinen einfluss zu haben oder werden durch die zombie_territories.xml überschrieben. Der children Bereich kann nochmal unterschiedliche Zombie Arten mischen. Auch diese darin enthaltenen Werte scheinen keine Effekte zu haben. Vor allem Lootmax geht überhaupt nicht. Auch mit "0" haben Zombies Rucksäcke auf dem Rücken. Einfachshalber und für die Reproduzierbarkeit habe ich mich auf eine Zombie Art beschränkt "ZmbM_VillagerOld_White".


    4. types.xml


    Hier ist Zombie Typ definiert. Wieder gibt es Werte die entweder etwas anderes bedeuten oder redundant sind und überschrieben werden.


    4. globals.xml


    Sehr wichtig ZoneSpawnDist. Ist dafür verantwortlich wann Dynamische-Zombie-Events ausgelöst werden. Sobald jemand die Barriere von 1200 durchbricht und keine Spieler den saferadius verletzt, wird das Event gespawned. Und ZombieMaxCount: Dieser Wert ist eine Obergrenze an Zombies, aber wird auch gleichzeitig als Ausgangsberechnung für Prozentuale Verteilungen verwendet. Mein Verständnis ist das z.B. ungefähr 65% für statische Zombie spawns und 20% dynamische und die letzten 15% für sekundäre Zombie Spawn Events wie Helicopter Absturzstellen reserviert werden. Mal angenommen ZombieMaxCount = 1000 und mal angenommen es gibt als einzigen aktiven Spawnmechamisus smin=100. Dann werden alle 100 Zombies gespawned. Weil die 65% also 650 nicht überschritten werden. Wenn ich aber smin=700 einstelle werden nur 650 Zombies gespawned. Ggf. gibt es hier auch eine Prozentuale Abnahme in steigender Menge.


    5. Statische Zombie spawns

    Sind in größeren praktisch nutzlos, weil diese permanent leben und Performance Probleme verursachen und auch nicht respawnen ohne server neustart.


    6. Dynamische Zombie spawns


    In kleineren Mengen funktioniert das durchaus zuverlässig. Mein Ziel waren aber dmin=50 dmax=50 und den Server so zu konfigurieren das tatsächlich zuverlässig 50 Zombies spawnen. Ich habe alles versucht störende auffindbare Einstellungen auszuschließen, einschließlich Radius und blockierende Zielbereiche, retry counts usw.. Leider habe ich festgestellt das ab 20 Zombies einfach die definierte Anzahl nicht erreicht wird. Manchmal werden so 15-20 Zombies gespawned. Manchmal kommen kurz danach nochmal ein paar mehr. Aber weit entfernt von zuverlässiger Reproduzierbarkeit.


    Leider sind die Variablen Namen so unspezifisch das man sehr viel Reverse engineeren muss, um zu verstehen was wie gemeint ist. Leider gibt es keine offizielle vollständige Dokumentation.



    Wenn jemand mehr know-how hat und mir weiterhelfen könnte wäre das echt nice...

    Wenn jemand von euch weiß wie man entweder das Logging für Zombie despawns anschalten kann, falls es das gibt oder wie man das ggf. Scripten kann die Aktuelle lebenden Zombie Anzahl auf der gesamten Map zu errechnen, wäre ich sehr dankbar.

    Einmal editiert, zuletzt von Nelyo ()