Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Exportieren von Packs, Patches und Mods

Anwendungsfälle

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

Beispiele hierfür sind...

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

  • Patches: die Fähigkeit, einen Bug 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 das ursprüngliche Release hinaus zu erweitern.

Übersicht der PCK-Dateien

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

Vorteile:

  • inkrementelle Aktualisierungen/Patches

  • Anbieten von DLCs

  • Anbieten von Mod-Unterstützung

  • 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 Spielern zu übergeben. Wenn man dann später Funktionen oder Inhalte hinzufügen möchte, liefert man die Updates einfach über PCK-Dateien an die Benutzer.

PCK-Dateien enthalten in der Regel, aber nicht ausschließlich:

  • Skripte

  • Szenen

  • Shader

  • Modelle

  • Texturen

  • Sound-Effekte

  • Musik

  • jedes andere Asset, das sich für den Import in das Spiel eignet

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 und gehen Sie zu Projekt/Export und klicken Sie auf "PCK/Zip Exportieren". Stellen Sie dabei sicher, dass Sie 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...

  1. muss der Entwickler 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 wie oben beschrieben eine PCK-Datei zu erstellen.

  2. verwendet der Entwickler Godot und erstellt ein GUI-Tool zum Hinzufügen des genauen API-Inhalts zu einem Projekt. Dieses Godot-Tool muss entweder auf einem für Tools konfigurierten Build der Engine ausgeführt werden oder Zugriff auf eines haben (das neben oder möglicherweise in den Originaldateien des Spiels veröffentlicht ist). Das Tool kann dann die ausführbare Godot-Datei verwenden, um eine PCK-Datei von der Kommandozeile zu exportieren, etwa mit OS.execute (). Da das Spiel (aus Sicherheitsgründen) keinen Tool-Build der Engine benutzen sollte, ist es am besten, das Modding-Tool und das Spiel seperat zu halten.

Öffnen von PCK-Dateien zur Laufzeit

Um eine PCK-Datei zu importieren, verwendet man das ProjectSettings-Singleton. 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():
    # This could fail if, for example, mod.pck cannot be found.
    var success = ProjectSettings.load_resource_pack("res://mod.pck")

    if success:
        # 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")

Warnung

Wenn Sie eine Datei mit demselben Dateipfad/Namen importieren wie eine Datei, die Sie bereits in Ihrem Projekt haben, wird sie standardmäßig durch die importierte Datei ersetzt. Dies ist etwas, worauf Sie achten müssen, wenn Sie DLC oder Mods erstellen. Sie können dieses Problem lösen, indem Sie ein Tool verwenden, das Mods in einem bestimmten Mods-Unterordner isoliert. Es ist aber auch eine Möglichkeit, Patches für das eigene Spiel zu erstellen. Eine solche PCK-Datei kann den Inhalt eines zuvor geladenen PCKs korrigieren.

Um dieses Verhalten auszuschalten, übergeben Sie als zweites Argument false an ProjectSettings.load_resource_pack().

Bemerkung

Für ein C#-Projekt müssen Sie zuerst eine DLL erstellen und sie in den Projektordner legen. Vor dem Laden des Ressourcenpaketes muss die DLL dann wie folgt geladen werden: Assembly.LoadFile(mod.dll)

Zusammenfassung

Dieses Tutorial erklärt, wie man Mods, Patches oder DLC zu einem Spiel hinzufügt. Das Wichtigste ist, herauszufinden, wie man zukünftige Inhalte für sein Spiel verteilen will, und einen Workflow zu entwickeln, der auf diesen Zweck zugeschnitten ist. Godot sollte diesen Prozess reibungslos gestalten, unabhängig davon, welchen Weg ein Entwickler wählt.