Экспортирование пакетов, патчей и модов

Случаи использования

Часто хотелось бы добавить функциональность в свою игру после того, как она была выпущена.

Примеры этого включают...

  • Загружаемый контент: возможность добавлять функции и контент в свою игру.

  • Патчи: возможность исправить ошибку, которая присутствует в отправленном продукте.

  • Моды: предоставить другим людям возможность создавать контент для своей игры.

Эти инструменты помогают разработчикам расширить свою разработку за пределы первоначального выпуска.

Обзор файлов PCK

Godot позволяет это с помощью функции, называемой «пакеты ресурсов» (файлы PCK, с расширением '.pck').

Преимущества:

  • дополнительные обновления/патчи

  • даёт возможность создавать DLC

  • даёт возможность поддержки модификаций(модов)

  • нет необходимости раскрывать исходный код для модов

  • более модульная структура проекта

  • пользователям не нужно заменять всю игру

Первая часть их использования предполагает экспорт и доставку проекта игрокам. Затем, когда кто-то хочет добавить функциональность или контент позже, они просто доставляют обновления через файлы PCK пользователям.

Файлы PCK обычно содержат, но не ограничиваются:

  • скрипты

  • сцены

  • шейдеры

  • модели

  • текстуры

  • звуковые эффекты

  • музыка

  • любой другой ассет, пригодный для импорта в игру

Файлы PCK могут быть даже совершенно другим проектом Godot, который оригинальная игра загружает во время выполнения.

Создание файлов PCK

Чтобы упаковать все ресурсы проекта в файл PCK, откройте проект, перейдите в Project/Export (проект/экспорт) и нажмите "Export PCK/Zip". Также убедитесь, что при этом выбран шаблон экспорта.

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

Другим методом будет экспорт из командной строки. Если выходной файл заканчивается расширением PCK или ZIP, то в процессе экспорта будет построен файл такого типа для выбранной платформы.

Примечание

Если кто-то хочет поддерживать моды для своей игры, им потребуется, чтобы их пользователи создавали файлы, экспортируемые аналогичным образом. Предполагая, что исходная игра ожидает определенной структуры ресурсов PCK и/или определенного интерфейса для своих скриптов, то либо...

  1. Разработчик должен опубликовать документацию по этим ожидаемым структурам/интерфейсам, ожидать, что моддеры установят Godot Engine, а затем также ожидать, что эти моддеры будут соответствовать заданному в документации API при создании мод-контента для игры (чтобы он работал). Затем пользователи будут использовать встроенные инструменты экспорта Godot для создания файла PCK, как описано выше.

  2. Разработчик использует Godot для создания инструмента с графическим интерфейсом для добавления своего точного содержимого API в проект. Этот инструмент Godot должен либо работать на сборке движка с инструментами, либо иметь доступ к нему (распространяться вместе или, возможно, в файлах исходной игры). Затем инструмент может использовать исполняемый файл Godot для экспорта файла PCK из командной строки с помощью OS.execute(). Для игры имеет смысл не использовать сборку инструментов (в целях безопасности), а для инструментов моддинга использовать сборку движка с поддержкой инструментов.

Открытие файлов PCK во время выполнения

To import a PCK file, one uses the ProjectSettings singleton. The following example expects a “mod.pck” file in the directory of the games executable. The PCK file contains a “mod_scene.tscn” test scene in its root.

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")
private void YourFunction()
{
    // This could fail if, for example, mod.pck cannot be found.
    var success = ProjectSettings.LoadResourcePack("res://mod.pck");

    if (success)
    {
        // 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");
    }
}

Предупреждение

По умолчанию, если вы импортируете файл с тем же путём/именем, что и файл, который у вас уже есть в вашем проекте, импортированный файл заменит его. Это то, на что следует обратить внимание при создании DLC или модов (легко решается с помощью инструмента, изолирующего моды в определенную подпапку модов). Однако это также способ создания патчей для собственной игры. Файл PCK такого типа может исправить содержимое ранее загруженного файла PCK.

Чтобы отказаться от этого поведения, передайте false в качестве второго аргумента функции ProjectSettings.load_resource_pack().

Примечание

Для проекта C# вам необходимо сначала создать DLL и поместить его в каталог проекта. Затем перед загрузкой пакета ресурсов вам необходимо загрузить этот DLL следующим образом: Assembly.LoadFile("mod.dll")

Подведение итогов

Это руководство должно показать, насколько легко добавлять в игру моды, патчи или DLC. Самая важная вещь - определить, как вы планируете распространять будущий контент для своей игры, и разработать рабочий процесс, настроенный для этой цели. Godot должен упростить этот процесс, независимо от того, каким путём придерживается разработчик.