Beispiele
Vollständige, funktionierende Mods zum Lesen, Kopieren und Verändern. Jeder Ordner in examples/ hat eine eigene README, die erklärt, worauf du achten solltest.
Der schnellste Weg zu deiner eigenen Mission: Kopier coastal_patrol, benenne die Dateien und die Id um und ändere die Zahlen und den Text.
Die Beispiele, grob nach Anspruch sortiert
| Ordner | Was es ist |
|---|---|
coastal_patrol |
Eine Mission: eine JSON-Datei und ein kleines Skript. Fang hier an. Es ist das fertige Ergebnis von Deine erste Mission. |
raf_collection |
Fünf eigenständige Missionen, jede zeigt eine andere Mechanik. Drei tragen ihren Text im JSON und brauchen kein Skript. night_interception ist das lange ausgearbeitete Beispiel, in dem das Handler-Modell Zeile für Zeile erklärt wird. |
event_script |
Python, das auf die Basis und auf Missionen reagiert, die du nicht geschrieben hast. Keine eigene Mission. Siehe Events. |
chain_convoy |
Eine Gabelung: Eine Mission führt zu einer von zwei anderen, je nachdem, wie sie ausgegangen ist. |
chain_airfield |
Eine Kette mit vier Stufen, komplett in JSON. |
campaign_kanalkampf |
Eine Kampagne mit Gedächtnis: Bedingungen, die JSON nicht ausdrücken kann, weil dabei gezählt wird. |
script_only_scramble |
Eine Mission ganz ohne JSON, die sich selbst aus Python heraus sperrt und skaliert. |
quests |
Drei Quest-Dateien: eine einfache Einstiegsquest, eine Folgequest und eine Quest, die zu einer bestimmten Karte gehört. Siehe Quests. |
Kette oder Kampagne?
Die zwei Missionssets unten in der Liste lohnen einen Vergleich.
Kette (chain_convoy, chain_airfield) |
Kampagne (campaign_kanalkampf) |
|
|---|---|---|
| Fragt | "War Mission X erfolgreich?" | "Wie oft?", "Wer war an Bord?", "Was hat der Spieler gewählt?" |
| Gebaut mit | JSON-Voraussetzungen (CompletedMission) |
einem Skript, das entscheidet, plus einer Zustandsdatei |
| Gedächtnis | keins: spielt sich jedes Mal gleich | merkt sich Dinge über Flüge, Tage und Sitzungen hinweg |
| Übersteht Speichern und Laden | ja, von selbst | ja, weil das Skript seinen Zustand in eine Datei schreibt |
| Braucht Python | nein (die Skripte in den Ketten-Beispielen tragen nur Text) | ja |
Eine Kette stellt eine Ja-oder-Nein-Frage über die Mission davor, und das kann JSON allein. Eine Kampagne fragt nach dem ganzen Spieldurchlauf, und dafür braucht es ein Skript und einen Ort, an dem der Zustand gespeichert wird. Ketten und Kampagnen erklärt beides.
Ein Beispiel verwenden
- Kopier die Dateien des Beispielordners in den
Missions/-Ordner einer Mod:Mods/my_mod/Missions/. (Dasquests-Beispiel ist als ganze Mod aufgebaut; kopier den Ordner selbst nachMods/.) - Benenne die Ids um. Die Beispiele verwenden kurze Ids wie
coastal_patrol, weil sie Dokumentation sind. Eine echte Mod setzt ihren Namen vor jede Id (mymod_coastal_patrol) und ändert sie überall, wo sie vorkommt: in den Dateinamen, beiMISSION_IDim Skript, inCompletedMission-Werten und inCreateMission-Aufrufen. - Lass den Validator über deinen Mod-Ordner laufen (siehe Ohne KI-Agent).
- Lade einen Spielstand und prüfe das Ergebnis, siehe Testen und neu laden.
Eine Beispiel-Id, die mit einer eingebauten Mission übereinstimmt, würde diese ersetzen. Keines der Beispiele tut das, aber deine umbenannte Kopie sollte es auch nicht.
Wie weit jedes Beispiel getestet ist
Jedes Beispiel wurde vom Spiel geladen. Wie weit es jeweils getestet wurde, ist unterschiedlich:
| Beispiel | Getestet |
|---|---|
coastal_patrol |
im Spiel geladen und erstellt; noch nicht bis zum Ende geflogen |
raf_collection |
alle fünf im Spiel erstellt; night_interception bis zum Ende geflogen |
event_script |
bestätigt, dass die Handler aus dem Missions/-Ordner einer Mod feuern |
chain_convoy |
im Spiel geladen und erstellt; die Verzweigung noch nicht geflogen |
chain_airfield |
das Freischalten im Spiel bestätigt; die Flüge noch nicht der Reihe nach durchgespielt |
campaign_kanalkampf |
im Spiel geflogen; die Schwierigkeitsanpassung über mehrere Angriffe gemessen |
script_only_scramble |
noch nicht im Spiel getestet |
"Geladen" heißt, das Spiel hat die Dateien gelesen und create_mission hat die Mission mit den geschriebenen Werten erzeugt; "geflogen" heißt, eine Staffel ist gestartet und der Ausgang wurde beobachtet.