Einige Tipps, die bei der Entwicklung komplexerer S:AD-Mods helfen würden.
Verwenden Sie die Versionskontrolle
Mit dem Versionskontrollsystem können Sie alle jemals an Ihrer Arbeit vorgenommenen Änderungen nachverfolgen, bei Problemen auf frühere stabile Versionen zurückgreifen und, was am wichtigsten ist, es mehreren Entwicklern ermöglichen, problemlos an demselben Projekt zu arbeiten.
Eine sehr beliebte Versionskontrolllösung ist GitHub. Es bietet Online-Hosting für Projekte und ermöglicht so mehreren Moddern die Entwicklung eines einzigen komplexen Mods.
Eine andere Lösung ist TortoiseSVN, ein GUI-Subversion-Wrapper, der zum Hosten des Projekts auf Ihrem eigenen Computer oder Ihrem Server verwendet werden kann. Das geht ganz einfach, die Dokumentation ist online verfügbar.
Beide Lösungsvorschläge sind selbstverständlich kostenlos (bzw. gibt es in einer kostenlosen Version).
Sobald die Versionskontrolle funktioniert, können Sie alle an Ihrem Mod vorgenommenen Änderungen verfolgen. Beispielsweise könnten kurz vor dem Hochladen der neuen Version Ihres Mods nach dem Speichern des Mods alle Änderungen überprüft werden. Dies ist ein unbedingter Schritt, da es sehr oft im letzten Moment zu Problemen kommt. Es wird berichtet, dass der Mod-Editor selbst Fehler aufweist.
Nach dem Hochladen auf Steam müssen die lokalen Änderungen auch in das Versionskontroll-Repository „übertragen“ werden.
Die Mod-Ordner, die unter Versionskontrolle stehen müssen, befinden sich in:
%appdata%\Stranded - Alien Dawn\Mods
Überwachung von Laufzeitfehlern
Das Spielausgabeprotokoll, in dem eventuelle Fehler zu finden sind, wird in einer Datei gespeichert, die sich unter folgendem Verzeichnis befindet:
%appdata%\Stranded - Alien Dawn\logs
Das Problem besteht darin, dass das Spiel beendet werden muss, um das generierte Spielprotokoll zu löschen. Dies ist für das Debuggen nicht praktikabel, da es schwierig ist, die Fehler im Protokoll mit bestimmten Ereignissen im Spiel in Verbindung zu bringen. Es gibt eine einfache Möglichkeit, das Spielprotokoll außerhalb der Modding-Map in Echtzeit zu überwachen. Sie benötigen lediglich die Visual Studio-IDE. Wenn es über das Menü „Debuggen – An Prozess anhängen“ (oder die Tastenkombination Strg-Alt-P) an den Spielprozess angehängt wird, werden alle Spielprotokolle, einschließlich Fehler, in Echtzeit im „Ausgabe“-Fenster angezeigt. Der beim Anhängen zu suchende Spielprozess sollte „StrandedSteam.exe“ heißen. Für diejenigen unter Ihnen, die mit Visual Studio nicht vertraut sind, gibt es eine kostenlose Version namens „Community“, die von der Visualstudio-Website heruntergeladen werden kann.
Moduscode schreiben
Die S:AD-Game-Engine verwendet Lua als Spiellogiksprache, allerdings handelt es sich nicht um die Vanilla-Version, sondern um eine modifizierte – es gibt viele zusätzliche, geänderte oder entfernte Funktionalitäten in den Standardbibliotheken. Der Modding-Code „item“ ist ebenfalls in Lua enthalten, obwohl die Mod-Version nicht das Original verwendet, sondern eine eingeschränkte Umgebung, in der bestimmte Funktionen auf der schwarzen Liste stehen. Die Lua-Sprache selbst ist sehr einfach, jeder, der mit JavaScript oder Python vertraut ist, könnte sie verwenden ohne Probleme. Es gibt viele IDE, die zum Bearbeiten von Lua-Dateien verwendet werden können. Sehr beliebt sind Visual Studio Code und Sublime, beide sind kostenlos. Beachten Sie, dass Steam davon ausgehen könnte, dass das Spiel nach dem Schließen noch läuft, wenn die Lua-IDE aus der Modding-Umgebung gestartet wurde. Wenn das der Fall ist, schließen Sie einfach die IDE.
Benutze die In-Game-Konsole
Wenn beispielsweise ein Objekt ausgewählt wird, hat eine globale Variable namens SelectedObj das ausgewählte Objekt als Wert. Wenn Sie dies in die Konsole eingeben, wird der Inhalt des Objekts gedruckt, bei dem es sich um einen sehr großen Text handeln kann. Daher ist es gut, im Objekt nach bestimmten Informationen zu suchen. Wenn nach SelectedObj ein Punkt (.) eingegeben wird (da auf diese Weise in Lua auf Elemente zugegriffen wird), wird durch Drücken der TAB-Taste der Inhalt des Objekts in einer Liste angezeigt, aus der ausgewählt werden kann.
Eine weitere wichtige globale Variable, die beim Debuggen helfen könnte, ist UIPlayer. Dies ist ein Namensraum für viele wichtige Spielwerte. Beispielsweise enthält UIPlayer.labels.Buildings eine Liste mit allen platzierten Gebäuden, während UIPlayer.labels.Survivors eine Liste mit allen erzeugten Überlebenden ist. Wenn Sie diese in die Konsole eingeben, wird jedoch eine sehr große Textmenge protokolliert, was nicht sehr praktisch ist. Es gibt eine Hilfsfunktion namens ValueToStr, die verwendet werden könnte, um besser lesbaren Text anzuzeigen. Beispiele: ValueToStr(SelectedObj), ValueToStr(UIPlayer.labels).
Die Konsole unterstützt auch die automatische Vervollständigung über die TAB-Taste. Auf diese Weise ist es nicht erforderlich, den genauen Namen einer bestimmten globalen Variablen oder eines Objektmitglieds zu kennen.
Um den Bildschirm vom gedruckten Text zu befreien, verwenden Sie die Taste F9.
Arbeiten mit Spieldaten
Auf jeden Fall ist es nützlich, die Spieldaten irgendwie überprüfen zu können. Eine Möglichkeit besteht darin, die Spielekonsole zu verwenden, um den Inhalt der globalen Var-Voreinstellungen zu überprüfen. Es enthält fast alle Spieldaten, gruppiert nach voreingestellten Klassen. Wie im vorherigen Abschnitt beschrieben, wird durch Eingabe eines Punkts (.) nach jedem Namen in der Konsole eine Liste mit den Inhalten des aktuellen Kontexts angezeigt. Dabei konnten Ebene für Ebene sämtliche Inhalte analysiert werden.
Die Verwendung der Konsole hat jedoch ihre Grenzen, da der Dateninhalt zu komplex ist, um als großer Textblock untersucht zu werden. Es ist vielmehr erforderlich zu verstehen, welche voreingestellten Klassen im Spiel registriert sind, um für jede von ihnen ein explizites Tool aufzurufen. Es gibt einen Konsolenbefehl, der die voreingestellte Klasse akzeptiert und eine UI-Datenschnittstelle öffnet:
OpenPresetEditor("<PresetClass>")
Wo muss durch die spezifische Klasse ersetzt werden, die überprüft werden soll. Wenn Sie beispielsweise OpenPresetEditor („FXPreset“) in die Konsole eingeben, wird der FX-Editor geöffnet, der eines der geheimnisvollsten Datenelemente enthält – die visuellen und akustischen Effekte.
By injto4ka