Alles, was Sie wissen müssen, bevor Sie mit dem Modifizieren des Spiels beginnen. Wollten Sie schon immer diese Müllpistole nützlicher machen? Scheint Ihnen etwas zu übertrieben zu sein? Möchten Sie eine unverwundbare Meme-Maschine erstellen? Oder einen globalen ernsthaften Rebalancing-Mod machen? Dieser Leitfaden soll Ihnen dabei helfen.
Haftungsausschluss: Der Leitfaden ist immer noch nicht vollständig und einige Abschnitte sind nicht fertig/richtig beschrieben. Die Fertigstellungsfrist ist unbefristet.
.seria-Struktur
Das Spiel hält die meisten seiner Sachen in .seria-Dateien – sei es eine Sicherungsdatei, eine Schiffsdatei oder eine Konfiguration. Es ist nützlich, es zu verstehen, bevor man sich anderen Dingen zuwendet.
.seria besteht aus Knoten, die durch Klammern getrennt sind. Klammern stehen immer in einer neuen Zeile und es gibt keine anderen Dinge in derselben Zeile. Alle Knoten außer dem Stamm haben auch einen Header – irgendein Attribut-Wert-Paar, wobei ein Wert typischerweise ein Int ist. Der Header-Wert sollte nicht eindeutig sein. Beispiel für einen Nicht-Root-Knoten (Inhalt durch „…“ ersetzt):
m_stats=2051 { ... }
Knoteninhalte können eine Kombination aus Folgendem sein:
- Ein Attribut-Wert-Paar
m_children=15 { ... m_classname=Körper ... }
- Ein verschachtelter Knoten
m_children=15 { ... m_mesh=1073741827 { ... } }
- (Nur für Mesh-Knoten) eine Folge von Floats
{ m_classname=Mesh m_size=4 -3.53553 5.32097 -3.53553 -5.32097 3.53553 -5.32097 3.53553 5.32098 }
Wir werden später über Maschen sprechen.
Attribut-Wert-Paare können sich wiederholen:
m_children=15 { ... m_sectors=1 m_sectors=1 m_sectors=1 m_sectors=1 m_sectors=1 m_sectors=1 #360 "m_sectors" Einträge insgesamt ... }
So geht das Spiel mit Arrays um. Beispielsweise bezeichnen 360 „m_sectors“-Einträge einen Schuss oder einen Sensorbogen in einer Schiffsdatei, einen für jeden Grad.
Wenn Sie .seria parsen/bearbeiten wollen, rücken Sie NIEMALS EIN. Das wird die Datei brechen.
Das ist im Grunde alles, was Sie wissen müssen, bevor Sie eine .seria-Datei parsen; Teilkonfigurationsdateien und sogar Speicherungen folgen dieser Struktur, sodass Sie möglicherweise mit diesem Wissen Speicherungen ändern können.
Bibliotheken/OL.seria
OL.seria enthält einen ersten Teil der Parameter der Module. Die meisten von ihnen (wenn nicht alle) müssen ihren Status nicht in einer Speicherdatei speichern, dh Sie können sie ändern und Änderungen im Spiel sofort nach dem Booten + Laden einer Speicher-/Versanddatei sehen. Es enthält auch die Parameter, die Sie höchstwahrscheinlich optimieren werden – Waffenclipgröße, Nachladegeschwindigkeit, Kosten, Kraftstoffmenge, Triebwerksschub/-verbrauch und vieles mehr.
Dies ist eine einfache zweistufige .seria-Datei, in der jeder Teil eine hat
m_stats=2051 { ... }
Eintrag ohne verschachtelte Knoten. Die potenziell interessantesten Einträge sind:
- m_oid ist einer der internen Modulnamen, unter dem es in anderen Dateien referenziert wird. Es ist gut, sie für Module zu lernen, die Sie optimieren werden.
- m_Preis ist ein Preis in Gold. Während Schiffskosten in eine Schiffsdatei geschrieben werden, berechnet das Spiel diese nach dem Start automatisch neu (zumindest für Schiffswerke; nicht für Kampagnenmodus bestätigt).
- m_repair_cost ist eine Gesamtreparaturzeit, Einheiten unbekannt
- m_icon_name ist ein Thumbnail-Name. Miniaturansichten werden in Media/Tex/Static*.res-Dateien registriert.
- m_mdl_crew_need sind Besatzungsanforderungen
- m_mdl_ammobox_need sind Munitionsanforderungen. Amüsanterweise kann es auf einen Float-Wert wie 0.5 eingestellt werden und es wird funktionieren.
- m_mdl_power_need sind Leistungsbedarf, kW
- m_weapon_load_amount ist ein Munitionsclip für Waffen
- m_weapon_load_time ist eine Büroklammer Nachladezeit in Einheiten. Einheit = 4/7 (~0.571) Sekunden. Bei Luftfahrzeugen ist dies eine Wartungszeit in Stunden.
- m_weapon_rate ist eine Clip-Entladegeschwindigkeit, Runden pro Minute
- m_weapon_caliber ist ein Waffenkaliberindex. Der Hauptwaffenstatus – ein verwendeter Granatentyp.
- m_missile_explosive ist eine Sprengladung für taktische/Arcade-Raketen.
- m_missile_ap definiert, wie Schaden durch die Rüstung geht. Leider nur für Raketen.
- m_launched_health ist ein Raketenzustand nach dem Start.
- m_launched_range ist eine Reihe für Flugzeug-/taktische/Arcade-Raketen. Bei strategischen Vermögenswerten wird sie in km gemessen.
- m_launched_speed ist eine globale Kartengeschwindigkeit für Flugzeuge/taktische/Arcade-Raketen (ja) in m/s.
- m_launched_speed2 ist eine Arcade-Geschwindigkeit für Flugzeuge/taktische/Arcade-Raketen (scheint km/h zu sein?)
- m_mdl_rotation eine Revolverdrehgeschwindigkeit ist. Klingt nicht so interessant, aber Werte wie 1.5 und niedriger können sich wirklich darauf auswirken, wie bequem die Waffe zu verwenden ist. Die Einheiten scheinen rad/s zu sein.
- m_resources ist ein stapelbares Attribut, das definiert, wie viele „Ressourcen“ benötigt werden, um ein Teil (Rumpf/Deck/Panzerung) zu bauen.
Die Liste ist unvollständig, enthält aber das Wichtigste.
Bibliotheken/Teileserien
Diese Datei enthält einen weiteren (größeren und technischeren) Bruchteil der Modulstatistiken. Diese werden in eine Ship/Save-Datei geschrieben – technisch gesehen wird ein parts.seria-Eintrag mit einigen geringfügigen Änderungen/zusätzlichen Attributen geklont. Das bedeutet, dass alles, was Sie in der parts.seria ändern, nicht in bereits vorhandene Schiffsdateien und -speicherungen übertragen wird. Nur Teile, die frisch aus den Schiffswerken gepflückt wurden, haben neue Werte.
Es gibt eine Möglichkeit, Schiffsdateien (teilweise) zu aktualisieren – siehe den entsprechenden Abschnitt.
Die Dateistruktur ist komplexer:
{ ... #Root Node Technikkram m_children=15 #Ein Beispieleintrag; Es gibt viele Einträge wie diesen { attribute_one=value_one attribute_two=value_two ... m_mesh=1073741827 #Einträge enthalten einen einzigen Mesh-Knoten... { ... } attribute_three=value_three ... m_sprites=536870915 #...und einen /mehrere Sprite-Knoten... { ... } m_sprites=536870915 { ... } m_sprites=536870915 { ... } m_slots=2147483651 #...und null/eins/mehrere Slot-Knoten { ... } m_slots= 2147483651 { ... } opt_attr_one=value_four opt_attr_two=value_five ... } ... #Andere Moduleinträge }
Es kann nicht nur Attr=Wert-Paare haben, sondern auch eine zusätzliche Ebene verschachtelter Knoten. Die untergeordneten Knotentypen sind m_mesh (einzeln), m_sprites (mehrere) und m_slots (optional, mehrere).
Potenziell interessante Attribute:
- m_id ist eine Knoten-ID. Bedeutet an sich nichts, ist aber wichtig zu verfolgen, wenn Ihr Spiel immer wieder abstürzt.
- m_master_id ist eine übergeordnete Knoten-ID. Wenn es falsch ist, wird Ihr Spiel nicht geladen / friert bei Schiffswerken ein.
- m_oid ist das gleiche m_oid wie in OL.seria.
- m_dichte beeinflusst eine Modulmasse. Mehr dazu weiter unten.
- m_masse stat IST KEINE MODULMASSE, sondern eine Zahl, die für GUI-Massenberechnungen und -anzeigen verwendet wird.
- m_burn_hp. Ich nehme an, dass es beeinflusst, wie viel Zeit Sie haben, um das Teil im Absturzstellen-Minispiel zu plündern.
- m_Gesundheit und m_health_max sind Modul HP. Beachten Sie, dass m_health der aktuelle Modulstatus ist, der nur in einer Schiffsdatei sinnvoll ist -> kann ein anfänglicher Modulstatus sein.
- m_explosiv ist ein Baumschaden, sobald dieses Modul zerstört wird.
- m_rescue_explosive ist, ob dieses Modul eine weitere Beute zerstört, wenn es nicht im Absturzstellen-Minispiel geplündert wird.
- m_floor_type ist eine Modulhöhe entlang der Z-Achse. Bei großen Tanks ist er beispielsweise auf 3 eingestellt.
- m_count ist, wie viele Module in einem Geschäft vorhanden sind. Es macht in parts.seria keinen Sinn (wird in den meisten Fällen 999 sein), aber sobald ein Eintrag in eine Speicherdatei geklont wurde, hat er einen Wert, der dem Modulbestand in einer bestimmten Stadt entspricht.
- m_spasmcode ist ein sich wiederholendes Attribut am Ende eines Eintrags. Ich weiß nicht, was es genau macht (ich denke, etwas mit Bögen / Hindernissen), aber es ist gut zu überlegen, ob Sie eine Datei richtig analysieren möchten.
Meshes
Eine Netzstruktur ist festgelegt:
m_mesh=1073741827 { m_classname=Mesh #Gemeinsames Attribut für (fast) alle Knoten m_size=4 #Wie viele Punkte gibt es in einem Mesh 3.13553 #Jedes Zahlenpaar ist ein Punkt X- und Y-Koordinaten -3.13553 3.13553 3.13553 -3.13553 3.13553 -3.13553 -3.13553 }
Hinweis: Die X/Y-Achsen sind jeweils nach rechts/unten gerichtet. Wenn Sie ein Netz im Spiel visualisieren möchten, wählen Sie einfach einen Teil aus und seine weiße Kontur wird sein Netz sein.
Das Spiel hat keinen bestimmten Massenwert, sondern berechnet die Masse mit der Formel „Mesh Volume * m_density“. Das Maschenvolumen ist min(Maschenweite, Maschenhöhe) * Maschenfläche, wobei die Maschenfläche mit der Gauß-Formel für Polygone berechnet werden kann. Wenn wir also eine Seite eines quadratischen Netzes ändern (das Quadrat beibehalten), wird die Masse kubisch; Wenn wir die längere Seite eines rechteckigen Netzes verlängern, wächst die Masse linear.
Sprites
Die Sprite-Struktur ist ein einstufiger Knoten mit einer variablen Anzahl von Attributen (technisch gesehen mit denselben, aber einige haben implizite Werte gesetzt).
m_sprites=536870915 { m_classname=Sprite m_code=536870915 #Sollte gleich einem Header-Wert sein m_animation_name=ap_07 m_position.y=-7 m_stage=-2 m_mask=0 m_animation_mode=4 m_scale.x=1.4 m_scale.y=1.4 }
Die Sprite-Attribute sind noch nicht gut untersucht; hier sind einige, die ich bereits kenne:
- m_animation_name ist ein Sprite-Name, der in der Datei Media/Tex/Ships1.res registriert ist. Hier ein Eintrag aus der Datei:
Animation ap_07 { texture = Ships1 rect = 3,3,140,140 hotspot = 70,70 zorder = 0.000000 resgroup = 0 frames = 40 }
Eine Animation kann entweder eine Frame-für-Frame-Animation oder ein einzelnes Sprite sein.
- m_position.x und m_position.y sind Sprite-Offsets relativ zu den Teil Null Punkte.
- m_scale.x und m_scale.y sind Sprite-Skalierungsfaktoren. Es wird nicht empfohlen, Sprites stark zu dehnen/stauchen, da sie zu niedrig aufgelöst/zu scharf sind. Dithering kann jedoch Sprite-Probleme überdecken.
- Mangel ist eine Sprite-Rotation in rad.
- m_stage scheint eine Sprite-Ebene zu sein ODER eine Bedingung, unter der ein Sprite gezeichnet wird (beim Schweben der Maus, beim Platzieren, …)
Spielautomaten
Steckplätze sind Modulbefestigungen. Sie können entweder seitliche Befestigungen oder interne Befestigungen sein (wie diejenigen, die vom Rumpf bereitgestellt werden).
m_slots=2147483651 { m_classname=Slot m_code=2147483651 #Sollte gleich einem Header-Wert sein m_master.id=7246492521041933693 #Sollte gleich einer Teil-ID sein m_type=5 m_position.x=1.78571 m_position.y=5.4888 }
- m_position – Sie wissen, was das ist. Kann basierend auf der Netzkontur eingerichtet werden. Beachten Sie, dass es nicht funktioniert, wenn Sie einen externen Steckplatz in einem Netz platzieren.
- m_typ ist ein Schlitztyp – extern, intern, intern groß, … . Es gibt mehrere, aber ich habe sie noch nicht studiert.
- is_slave. Scheint für interne Slots auf false gesetzt zu sein.
Dateien versenden
Schiffsdateien enthalten:
- Moduleinträge denen in parts.seria sehr ähnlich
- Gemeinsame Einträge, die Verbindungen zwischen Teilen definieren
- Spezieller Kreatureneintrag mit globalen Schiffsstatistiken
Ein Beispiel (Archangel-Datei):
{ m_classname=Node m_code=7 m_id=-492343618703753414 m_name=Archangel m_children=31 {...} m_children=15 {...} m_children=15 {...} ... m_children=15 {...} m_joints=8589934595 {...} m_joints=8589934595 {...} ... m_joints=8589934595 {...} }
- m_children=15 sind Teilknoten
- m_joints=8589934595 sind gemeinsame Knoten
Die Liste der Teile auf der ersten verschachtelten Ebene ist nicht vollständig – dies sind Kanonen, Beine, kardanische Motoren und Dummy-Knoten ohne Masse und Dichte. Die restlichen Module sind Kinder des Knotens m_children=31:
{ m_classname=Frame m_code=31 m_id=1883400248470934012 m_state=2 m_master_id=-492343618703753414 m_owner_id=-9178736643823363944 m_children=15 {...} m_children=15 {...} ... m_children=15 {...} m_center.x=0.000152588 m_center.y=18.7003 m_mass=7826850.0 m_mesh=1073741827 { m_classname=Mesh m_size=0 } }
Der erste untergeordnete m_children=15-Knoten dort ist eindeutig – das ist eine Brücke:
{ m_classname=Body m_code=15 m_id=481579170968876493 m_name=COMBRIDGE ... m_children=47 {...} ... m_mesh=1073741827 {...} ... m_oid=MDL_COMBRIDGE_01 ... m_sprites=536870915 {...} ... m_sprites=536870915 {...} m_slots=2147483651 {...} ... m_slots=2147483651 {...} }
Und schließlich – der Knoten m_children=47, der die globalen Statistiken des Schiffs transportiert:
{ m_classname=Creature m_code=47 ... m_mesh=1073741827 {...} m_layer=0 m_health=10 m_health_lock=true m_ship_name=Archangel m_playable=true m_alignment=1 m_card_caption={align=2}{font=courier_28}ÀÐÕÀÍÃÅË@{font=myriad_10}ÓÄÀÐ. ËÅÃÊÈÉ ÊÐÅÉÑÅÐ m_card_main={align=0}{font=flash_large}ÒßÃÀ/ÂÅÑ: 4@ÑÊÎÐÎÑÒÜ: 190 êì/÷@ÄÀËÜÍÎÑÒÜ: 820 êì@ m_card_arma={align=0}{font=flash_large}ÂÎÎÐÓÆÅÍÈÅ:@004X CANNON 2x57mm@002X CANNON 2x180mm@002X MISSILE m_card_modules=MDL_CANNON_57_2=4,MDL_ENGINE_04=8,MDL_ENGINE_05=2,MDL_CANNON_180_2=2,MDL_MISSILE_01=2, m_bio_caption={align=2}{color=2281701376}{font=courier_28}PROFILE@¹981 m_bio_snapshot=no_photo ... creatureId=2 m_damageCounter=8360 versionCompatibility=Ñîâìåñòèì ñ âåðñèåé 1.15 }
(Die Abrakadabras sind kyrillische Dekodierungsprobleme; im Spiel sieht alles in Ordnung aus.)
Dieser Knoten enthält viele globale Schiffsstatistiken, die definieren, wie weit/schnell/lang es fliegen/sehen/gesehen werden kann. Es ist wichtig zu wissen, dass es keinen Sinn macht, sie zu ändern, wenn Sie die Geschwindigkeit, Reichweite oder Sensorstärke des Schiffs ändern möchten. Diese werden hauptsächlich für Spawn-Berechnungen oder GUI-Visualisierungen verwendet. Was wirklich wichtig ist, ist das Flag m_flagship, das Sie auf „true“ setzen können, wenn Sie möchten, dass das Schiff als Flaggschiff erkannt wird.
Wenn Sie mit Schiffsstatistiken herumspielen wollen, ist es besser, die Schiffsmodulstatistiken zu ändern und dann das Spiel zu zwingen, die globalen Statistiken neu zu berechnen. Moduleinträge sind denen in parts.seria sehr ähnlich, mit einigen Unterschieden:
- Waffen, Sensoren, Störsender, Raketen, … (alles mit einem Bogen) erhält ein m_sectors-Wiederholungsattribut, 360 Einträge pro Teil. Eins/Null für Geschütze/Raketen, ELINT-Leistungswert für ELINT (Null, Voll oder Halb bei Behinderung) und Radarreichweite in km für Radargeräte (Null/Voll/Halb).
- Die Attribute m_position.*, m_scale.* und m_angle machen jetzt Sinn und definieren, wo sich das Modul auf einem Schiff befindet. m_scale wird verwendet, um symmetrische Teile wie Beine/Motoren wiederzugeben.
- Vielleicht ein paar andere Dinge, die ich verpasst habe, da ich es vermeide, die technischen Attribute anzufassen
Lesen Sie den entsprechenden Anleitungsabschnitt zur Schiffsaktualisierung, nachdem Sie die Modulwerte geändert haben.
Dateien speichern
Dieser Abschnitt befindet sich im Aufbau, da ich gerade daran arbeite. Aber mit einer gespeicherten Bearbeitung können Sie möglicherweise Folgendes tun:
- Erschaffen Sie zusätzliche feindliche Gruppen, ändern Sie eine Zusammensetzung bereits bestehender
- Ladenbestände ändern
- Ändere die Menge an Informationen in Städten
- Viel mehr
Sie können dort auch Ihren Bargeldbonus ändern („m_scores“-Root-Node-Attribut, zB m_scores=76886) und Schiffe (einschließlich versteckter/unbenutzter/nur KI) freischalten, indem Sie eine entsprechende Flagge umlegen.
Lokalisierungsdateien
Es gibt zwei Hauptgründe für die Bearbeitung von Lokalisierungsdateien:
- Beschreibungseinträge für neue Teile/Schiffe vornehmen
- Die Ergebnisse von Ereignissen ändern
Schiffseinträge
Es gibt zwei Einträge, die Sie bearbeiten möchten, wenn Sie eine Schiffsbeschreibung hinzufügen möchten:
#SHIP_NAME_Nomad Nomade
Ein „SHIP_NAME_*“-Eintrag wird hauptsächlich für die russische Version benötigt, wo es möglich ist, einen kyrillischen Schiffsnamen hinzuzufügen. Das „*“ sollte durch einen „m_name“-Root-Node-Attributwert des Schiffs ersetzt werden (oder ein „m_ship_name“ in den globalen Schiffsstatistiken? Sie sind meistens gleich).
#SHIP_DESC_NOMAD Schwere strategische Kreuzer der Roma, die seit Jahrzehnten als Kern von Kommandogruppen dienen. Trotz ihres Alters wurden sie umfassend aufgerüstet und nahmen an Feldtests der hochmodernen AEW-Systeme teil, die später auf den neuesten im Bau befindlichen Kreuzern der Sewastopol-Klasse installiert werden sollten.
„SHIP_DESC_*“ ist das, wonach Sie suchen, wenn Sie eine Beschreibung hinzufügen möchten, die bei einem Kampagnenstart sichtbar ist. Beachten Sie, dass ein in „*“ eingesteckter Schiffsname dort großgeschrieben wird. Beachten Sie auch, dass ein Tag und ein Text durch Tabulatoren getrennt werden und keine Zeilenumbrüche haben.
Teileinträge
#MDL_CANNON_220 M-22 #MDL_CANNON_220_SDESC CANNON #MDL_CANNON_220_DESC Eine großkalibrige 180-mm-Kanone mit erhöhter Feuerrate.
Wenn Sie dort einen Moduleintrag hinzufügen möchten, benötigen Sie einen Eintrag für Name, Typ und Beschreibung (MDL_*, MDL_*_SDESC, MDL_*_DESC, wobei * ein Modul m_oid ist).
Events
Dialogdateien enthalten auch einige Belohnungen/Strafen, die Sie von Ereignissen erhalten. Während einige Ergebnisse hartcodiert sind (wie neue Schiffe, erzwungene Aufenthalte, keine Reparaturen/Auftanken in einer Stadt, …), können Cash/Rep/Moral dort geändert werden.
#INTERCOM_FASIL_1 Ja, Herzog? #INTERCOM_FASIL_0 Krieg ist ein teures Unterfangen, nicht wahr, mein Herzog? #INTERCOM_FASIL_1 Sehr gut. Ich bringe das Geld zusammen. #INTERCOM_FASIL_SHORT Sehr gut. Ich bringe das Geld zusammen.
Sie können auch die „Richtung“ eines Dialogs in Bezug auf Sprites/Fade-Effekte optimieren.
Herstellung neuer Teile
Bevor wir mit der Herstellung neuer Teile fortfahren, lassen Sie uns angeben, was wir nicht tun können:
- Wir können Schiffswerken keine neuen Teile hinzufügen, ohne etwas bereits Vorhandenes zu ersetzen
- Wir können keine neuen Teile in Stores hinzufügen (* ohne Bearbeitung zu speichern)
Die Pipeline ist folgende:
- Wählen Sie ein Vanilla-Modul, das dem, was Sie erstellen möchten, am nächsten kommt
- Duplizieren Sie seinen Eintrag in OL.seria, ändern Sie seine m_oid und Statistiken
- Gehen Sie zu Libraries/constructor.seria (erstellen Sie eine Sicherungskopie) und entfernen Sie die
m_children=15 { ... m_oid=ITEM_EMERGENCY ... }
Knoten, um Speicherplatz freizugeben.
- Gehen Sie zu parts.seria, wählen Sie einen Vanilla-Moduleintrag aus und fügen Sie ihn anstelle eines gelöschten Knotens in constructor.seria ein.
- Setzen Sie m_oid, m_master_id (!!!wichtig!!!!, der Wert ist der „m_id“-Wert des constructor.seria-Wurzelknotens)
- Ändere die Dinge, die du willst – HP, Dichte, Masse, …
- Vergessen Sie nicht die Module Mesh, Sprites, Slots.
- Starten Sie das Spiel und gehen Sie ins Schiffswerk
Nun wird die letzte Modulkategorie durch das gerade erstellte Modul ersetzt. Beachten Sie, dass Sie keinen Eintrag in parts.seria benötigen – sobald Sie ein Teil auf einem Schiff installieren, wird es in eine Schiffsdatei geschrieben und verweist nur auf OL.seria.
Das Spiel hat einige unbenutzte Sprites, aber es gibt nicht viel. OTOH, Sie können immer noch neue Visuals erstellen, wenn Sie mit den Sprites, die Sie bereits haben, kreativ sind. Beispielsweise wurde die 22-mm-Kanone M-180 basierend auf einem Mk-1-180-Sprite mit einem neuen Lauf aus Sprint+flare und einer Mündungsbremse aus einem Rumpfblock entwickelt.
Vergessen Sie nicht, entsprechende Einträge in Dialogdateien anzulegen, da sonst Name und Beschreibung leer bleiben.
Schiffsersatz und Aktualisierung
Ein weiterer möglicher Mod, den Sie vielleicht entwickeln möchten, ist Vanilla Ship Replacements. Vanilla-Schiffe werden separat behandelt und im Ordner Objects/Designs aufbewahrt. Sie können weder im Spiel gelöscht noch in den Schiffswerken überschrieben werden.
Ersatzteile
Wenn Sie ein Vanilla-Schiff durch Ihr eigenes ersetzen, sieht die Pipeline wie folgt aus:
- Öffnen Sie sowohl Vanilla- als auch benutzerdefinierte Schiffe im Editor
- Ändern Sie den „m_name“ (Stammknotenattr) des benutzerdefinierten Schiffs auf den Vanilla-Schiffswert
- Ändern Sie den Namen in „m_card_caption“ (Abschnitt für globale Statistiken) in den Vanilla-Namen
- Ändern Sie die Statistik „m_ship_name“ (Abschnitt „Globale Statistik“) in den Vanilla-Namen
- (Optional) Ändere den „m_combatvalue“-Stat, der beeinflusst, wie viele Instanzen des Schiffes in Schiffswerkstests (und vielleicht in Garnisonen) spawnen.
- (Optional, alte Versionen) ändern Sie den „m_card_snapshot“-Pfad (globaler Statistikabschnitt) in den Vanilla-Snapshot-Pfad (den Sie ebenfalls ersetzen müssen).
Beachten Sie, dass das Spiel ab Version 1.151 keine Schnappschüsse generiert und sie von Schiffsstatistiken ableitet, sodass der letzte Schritt überflüssig ist und „m_card_snapshot“ nicht vorhanden ist.
Schiffsaktualisierung
Möglicherweise möchten Sie alle Schiffe (einschließlich Vanilla) aktualisieren, nachdem Sie parts.seria oder Schiffsmodule optimiert haben. Es gibt 79 Vanilla-Schiffe, also wähle einen Urlaub und starte von Archa …
JK, lol, es sind einige Mechanismen implementiert, die dir dabei helfen sollen:
- Das Spiel kann einige Statistiken selbst aktualisieren
- DIY-Skripte können geschrieben werden, um Schiffsdateien zu aktualisieren
Wenn Sie die neue Version des Spiels zum ersten Mal starten, wird alles im Ships-Ordner aktualisiert und die alten Kopien werden in Ships_backup abgelegt. Was es neu berechnet:
- Waffenfeuerbögen
- Sensorbögen (kann dort ausfallen)
- Alle globalen Statistiken
- Dichte/Masse (wahrscheinlich, nicht bestätigt)
- Höhe (wahrscheinlich, nicht bestätigt)
Um das Spiel dazu zu zwingen, öffne die Config.ini und ändere den Wert „CORE_LAST_LOADED_VERSION=1.15“ auf einen älteren Wert, wie 1.14 oder 1.1.
Es wird jedoch nicht alle Daten von parts.seria selbst abrufen. Wenn Sie die parts.seria geändert haben und möchten, dass ein Schiff neue Werte erhält, bevor Sie den obigen Schritt ausführen Sie müssen zuerst Teileeinträge in einer Schiffsdatei ändern. Ich habe selbst einige Python-Skripte dafür geschrieben und werde sie bald veröffentlichen.
Die Schiffsaktualisierungspipeline sieht also wie folgt aus:
- Wählen Sie eine Schiffsdatei aus
- Ändere dort selbst/aktualisiere mit einem Skriptmodul die Einträge
- Legen Sie es in den Ships-Ordner (machen Sie für alle Fälle ein Ordner-Backup)
- Ändere die Spielversion in der Config.ini auf eine ältere
- Führen Sie das Spiel aus
Zusammenfassung
HF ist ein faszinierendes Spiel, und wie bei jedem faszinierenden Spiel wird eine Mod-Unterstützung wesentlich zu seinem Lebenszyklus beitragen. Unter der Annahme, dass es sich um ein Zwei-Personen-Haustierprojekt handelt, würde ich dafür stimmen, das Spiel mit Inhalten von Spielern zu füllen und sich auf eine umfassende Mod-Unterstützung durch Entwickler zu konzentrieren, wie es viele andere großartige Spiele (z. B. Rimworld) tun.
Das ist alles, was wir heute dafür teilen HighFlotte führen. Dieses Handbuch wurde ursprünglich erstellt und geschrieben von Strahlender Morgen. Falls wir dieses Handbuch nicht aktualisieren, finden Sie das neueste Update, indem Sie diesen folgen Link.
Können Modulparameter nur für Geräte verwendet werden, die über ein Gerät verfügen?
Und das sind die Gründe, warum ich mit diesen Programmen keine Dateien löschen kann?