Exportieren von Packs, Patches und Mods

Anwendungsfälle

Oft möchte man seinem Spiel nach dem deploy noch Funktionalität hinzufügen.

Beispiele hierfür sind ...

  • Herunterladbare Inhalte: die Möglichkeit, Funktionen und Inhalte zu seinem Spiel hinzuzufügen.

  • Patches: die Fähigkeit, einen Fehler zu beheben, der in einem ausgelieferten Produkt vorhanden ist.

  • Mods: anderen Personen die Möglichkeit geben, Inhalte für das eigene Spiel zu erstellen.

Diese Tools helfen Entwicklern, ihre Entwicklung über die ursprüngliche Version hinaus zu erweitern.

Übersicht der PCK-Dateien

Godot ermöglicht dies über eine Funktion namens Resource Packs (PCK-Dateien, mit der Erweiterung .pck).

Vorteile:

  • Inkrementelle Aktualisierungen/Patches

  • DLCs anbieten

  • Mod-Unterstützung anbieten

  • Keine Quellcode-Offenlegung für Mods erforderlich

  • modularere Projektstruktur

  • Benutzer müssen nicht das gesamte Spiel ersetzen

Der erste Teil ihrer Verwendung besteht darin, das Projekt zu exportieren und den Akteuren zu übergeben. Wenn man dann später Funktionen oder Inhalte hinzufügen möchte, liefern sie die Updates einfach über PCK-Dateien an die Benutzer.

PCK-Dateien enthalten in der Regel, sind aber nicht darauf beschränkt:

  • Skripte

  • Szenen

  • Shader

  • Modelle

  • Texturen

  • Sound-Effekte

  • Musik

  • jedes andere Nutzerinhalt (Asset), der für den Import in das Spiel geeignet ist

Die PCK-Dateien können sogar ein völlig anderes Godot-Projekt sein, welches das Originalspiel zur Laufzeit lädt.

Erzeugen von PCK-Dateien

Um alle Ressourcen eines Projekts in eine PCK-Datei zu packen, öffnen Sie das Projekt, gehen Sie zu Projekt/Export und klicken Sie auf „PCK/Zip exportieren“. Stellen Sie außerdem sicher, dass Sie dabei eine Exportvorlage ausgewählt haben.

../../../_images/export_pck.png

Eine andere Methode wäre: exportieren von der Kommandozeile. Wenn die Ausgabedatei mit einer PCK- oder ZIP-Dateierweiterung endet, dann wird der Exportprozess diesen Dateityp für die gewählte Plattform erstellen.

Bemerkung

Wenn das eigene Spiel eine Mod-Unterstützung erhalten soll, müssen die Nutzer ähnlich exportierte Dateien erstellen. Angenommen, das ursprüngliche Spiel erwartet eine bestimmte Struktur für die Ressourcen des PCK und/oder eine bestimmte Schnittstelle für seine Skripte, dann muss entweder...

  1. Der Entwickler muss die Dokumentation dieser erwarteten Strukturen/Schnittstellen veröffentlichen, von den Moddern erwarten, dass sie die Godot Engine installieren, und dann auch erwarten, dass diese Modder sich an die in der Dokumentation definierte API halten, wenn sie Mod-Inhalte für das Spiel erstellen (damit es funktioniert). Die Benutzer würden dann die in Godot eingebauten Export-Tools verwenden, um eine PCK-Datei zu erstellen, wie oben beschrieben.

  2. Der Entwickler verwendet Godot, um ein GUI-Tool zum Hinzufügen des genauen API-Inhalts zu einem Projekt zu erstellen. Dieses Godot-Tool muss entweder auf einem werkzeugfähigen Build der Engine ausgeführt werden oder Zugriff auf eines haben (das neben oder möglicherweise in den Dateien des Originalspiels verteilt ist). Das Tool kann dann die ausführbare Godot-Datei verwenden, um eine PCK-Datei von der Befehlszeile mit folgender Adresse zu exportieren: ref: OS.execute () <class_OS_method_execute>. Es ist am sinnvollsten, wenn das Spiel keinen Tool-Build verwendet (aus Sicherheitsgründen) und wenn die Modding-Tools einen Tool-fähigen Engine-Build verwenden.

Öffnen von PCK-Dateien zur Laufzeit

Um eine PCK-Datei zu importieren, verwendet man einen Einzeiler. Beachten Sie, dass es keinen Fehler oder eine Ausnahme gibt, wenn der Import fehlschlägt. Stattdessen müssen Sie möglicherweise einen Validierungscode als Ebene darüber erstellen. Das folgende Beispiel erwartet eine "mod.pck"-Datei im Verzeichnis der ausführbaren Datei des Spiels. Die PCK-Datei enthält in ihrem Stammverzeichnis eine "mod_scene.tscn"-Testszene.

func _your_function():
    ProjectSettings.load_resource_pack("res://mod.pck")
    # Now one can use the assets as if they had them in the project from the start
    var imported_scene = load("res://mod_scene.tscn")
private void YourFunction()
{
    ProjectSettings.LoadResourcePack("res://mod.pck");
    // Now one can use the assets as if they had them in the project from the start
    var importedScene = (PackedScene)ResourceLoader.Load("res://mod_scene.tscn");
}

Warnung

Wenn Sie eine Datei mit dem gleichen Dateipfad/-namen importieren, wie Sie sie bereits in Ihrem Projekt haben, wird sie standardmäßig durch die importierte Datei ersetzt. Dies ist etwas, worauf Sie achten sollten, wenn Sie DLC oder Mods erstellen (einfach gelöst mit einem Werkzeug, das Mods in einen bestimmten Mods-Unterordner isoliert). Es ist jedoch auch eine Möglichkeit, Patches für das eigene Spiel zu erstellen. Eine solche PCK-Datei kann den Inhalt eines zuvor geladenen PCKs reparieren.

Um dieses Verhalten zu deaktivieren, nutzen Sie false als zweites Argument für ProjectSettings.load_resource_pack().

Bemerkung

Für ein C# Project müssen Sie zuerst die DLL bauen und dann in den Projekt Ordner geben. Dann, bevor Sie das Ressourcen Paket laden, müssen Sie die DLL laden und dies geht mit diesem Command: Assembly.LoadFile("mod.dll")

Zusammenfassung

Dieses Tutorial soll dir Zeigen, wie einfach es ist Modifikationen, Patches oder DLC zu einem Spiel hinzuzufügen.