Bevor ich darauf eingehe, möchte ich nur sagen, dass die Kommentare in der Datei CFGWeather.xml NICHT sehr hilfreich SIND,
und auf den ersten Blick macht die Datei selbst absolut keinen Sinn.
Aber nach einigem Basteln und ein bisschen Ausprobieren glaube ich, dass ich es endlich einigermaßen verstanden habe und es geschafft habe,
es so zu konfigurieren, dass es nicht nebelig, bewölkt oder es nur einmal in den letzten 72 Stunden geregnet.
Im Folgenden werde ich erklären, wie ich die Werte in dieser Datei als Bedeutung/Übersetzung interpretiert habe und welche Werte ich darin festgelegt habe, um dieses Wetterverhalten zu erreichen.
Es gibt ein paar Dinge, die ich besprechen werde, bei denen ich zugegebenermaßen nicht 100% sicher bin und am Ende entsprechend markieren und kommentieren werde wie diese Datei funktioniert, damit jeder ganz einfach seine eigenen benutzerdefinierten Wettereinstellungen auf seinen Servern festlegen kann.
Ich würde gerne diesen Beitrag als eine Art "Dokument" behandeln und ihn weiter zu aktualisieren, bis BI uns eine vollständige und verständliche Dokumentation bietet.
Zudem muss ich gestehen dass es ziemlich lange her ist, als ich aktiv am Wetter rum probiert habe, Fragen kann ich also nur spärlich beantworten.
Diese ganzen Infos hatte ich damals nach und nach zusammen getragen, wie gesagt ich bin mir nicht mehr sicher.
═══════════════════════════════════════════════════════════════════════════════════════════════════
Beginnend am Anfang der Datei, das war die erste Änderung, die ich vorgenommen habe:
<Wetter-Reset="0" enable="0">
zu
<Wetter-Reset="1" enable="1">
Das Enable-Flag teilt dem Server mit, von wo er seine Wettereinstellungen laden soll.
Wenn auf false (0) gesetzt, lädt der Server die Standardwettereinstellungen, die auf öffentlichen Hive-Servern verwendet werden.
Bei true (1) lädt der Server die in CFGWeather.xml definierten Wettereinstellungen.
Da wir diese Konfigurationen verwenden möchten, setzen wir diesen Wert auf 1.
Die Reset-Flag teilt dem Server mit, wie er mit dem Wetterzustand umgehen soll, wenn er neu gestartet oder gestoppt und erneut gestartet wird.
Wenn es auf false (0) gesetzt ist, wird der Server jedes Mal, wenn er neu gestartet oder gestoppt wird, den aktuellen Wetterzustand auf dem Server speichern.
Wenn er wieder hochfährt, wird dieser vorherige Wetterzustand wieder in das Spiel geladen.
Wenn auf true gesetzt (1), wird das Wetter beim Start jedes Mal, wenn ein Server neu gestartet oder gestoppt und erneut gestartet wird,
standardmäßig auf die weiter in der Datei definierten "Anfangsbedingungen" eingestellt.
Da das Ziel hier darin besteht, den Regen zu stoppen, deshalb werden wir diesen Wert auf 1 setzen, damit er alle bestehenden Wettereffekte auf entfernt und mit den von uns definierten "Initial Conditions" neu beginnt. [1]
Die folgenden Änderungen werden an den Elementen Bewölkt, Nebel und Regen vorgenommen:
<current actual="n" time="120" duration="240" />
zu
<current actual="0.0" time="120" duration="1" />
Das aktuelle Element ist dafür verantwortlich, die Basiswetterkonfigurationen für jeden Wetterzustand zu definieren.
Das eigentliche Attribut definiert die "Initial Conditions" (Intensität) für jeden Wetterzustand beim Neustart eines Servers, wenn das Reset-Flag auf true (1) gesetzt ist.
Durch Ersetzen der vorhandenen Werte (n) in den tatsächlichen Attributen der Bewölkungs-, Nebel- und Regenelemente durch 0.0 wird das Serverwetter bei jedem Neustart immer klar. [1][2][5]
Beim Zeit Attribut bin ich mir nicht ganz sicher.
Der Kommentar dazu ist, sich zu ändern, also vermute ich, dass dieser Wert die Zeit darstellt, die vergehen muss (in Minuten?),
bevor sich der Wettereffekt nach einem Neustart in seiner Intensität ändern kann hatte ich noch keine probleme. [1][4]
Das Attribut Dauer definiert die Zeitspanne (in Sekunden?), die ein Wetterzustand aktiv bleibt, bevor seine Intensität auf 0,0 zurückkehrt.
Ich habe diesen Wert auf 1 gesetzt, weil A) ich mir nicht sicher war, ob iv 0 als Deaktiviert oder Unendlich behandelt wird und B) ich nicht sicher war,
ob dieses Attribut eine Ganzzahl erwartet oder ob es eine Dezimalzahl / ein Doppeltes annehmen würde, also war ich auf der Seite der Vorsicht. [3][4]
Ich habe keine Änderungen an den folgenden 3 untergeordneten Elementen Overcast, Fog und Rain vorgenommen:
<limits min="0.0" max="1.0" />
<timelimits min="n" max="n" />
<changelimits min="0.0" max="1.0" />
Das Element "Grenzen" definiert die minimalen/maximalen Intensitätswerte (Intensitätsbereich), auf die jeder Wettereffekt auf einer Skala von 0,0-1,0 eingestellt werden kann. [2]
Das Element timelimits definiert die minimale und maximale Zeit (in Sekunden), die vergehen darf, bevor sich die Intensität des Wettereffekts ändert (Intensity Change). [5]
Das Element changelimits definiert den Intensitätsbereich, auf den die Intensität eines Wettereffekts eingestellt werden kann, wenn eine Intensitätsänderung ausgelöst wird. [1]
Der Grund, warum ich mich dafür entschieden habe, diese Werte unverändert zu lassen, war, dass sie aus meiner Sicht keinen Einfluss auf das Wetter haben sollten,
da die Dauer der Wettereffekte niedriger angesetzt ist als die definierten Zeitgrenzen, die eine Intensitätsänderung ermöglichen würden in erster Linie ausgelöst.
Außerdem wollte ich versuchen, so wenig Änderungen an dieser Datei wie möglich vorzunehmen, um die Anzahl der Dinge zu reduzieren, die den Server beschädigen oder zum Absturz bringen könnten.
Die letzten Änderungen, die ich vorgenommen habe, betrafen die Attribute des Schwellenelements für den Regenwettereffekt:
<thresholds min="0.5" max="1.0" end="120" />
zu
<thresholds min="0.9" max="1.0" end="1" />
Das Element Schwellen wird verwendet, um die Bedingungen für Regen zu definieren, die durch das Wetterereignis Bewölkt ausgelöst werden.
Die Min/Max-Attribute definieren die minimale/maximale Intensität (Auslöseschwelle), innerhalb der die Wettereffekte bei bedecktem Himmel liegen müssen, um Regen auszulösen.
Ich habe mich dafür entschieden, die Triggerschwelle von 50 % auf 10 % im oberen Bereich zu reduzieren, da die Wahrscheinlichkeit, dass der Wettereffekt Bewölkt diese Trigger Schwelle erreicht, unglaublich gering ist und wohl eine bessere Option ist, als zu versuchen, sie zu deaktivieren, indem man beide Werte auf 0 bis setzen. [1][2]
Das End-Attribut definiert die Dauer (in Sekunden) des Regens, der durch das bewölkte Wetterereignis ausgelöst wird.
Der mit diesem Wert verbundene Timer beginnt jedoch NICHT mit dem Herunterzählen,
bis die Intensität des Wetterereignisses Bewölkt nicht mehr innerhalb der Grenzen des gerade definierten Auslöseschwellenwerts liegt.
Ich habe mich dafür entschieden, diesen Wert auf 1 zu setzen, weil die Intensität des Wetterereignisses Bewölkt es geschafft hat, die Trigger Schwelle zu überschreiten und
Regen auszulösen, sobald der Timer für die Dauer des Wetterereignisses Bedeckt abgelaufen ist und der Wert auf 0,0 zurückgesetzt wurde, würde Regen ausgelöst und es es würde 1 Sekunde später stoppen.
═══════════════════════════════════════════════════════════════════════════════════════════════════
Anmerkungen:
[1]: Dies ist meine beste Schätzung, was dieser Wert basierend auf Versuch und Irrtum darstellt. Die Kommentare der Entwickler sind nicht sehr klar.
[2]: Der Wertebereich für dieses Feld ist 0.0-1.0.
[3]: Zitat/Bestätigung zum Datumstyp für dieses Feld.
[4]: Zitat/Bestätigung erforderlich, ob der Wert Sekunden oder Minuten darstellt.
[5]: Der Buchstabe 'n' steht für die Standardwerte für min und max.