Экспортирование пакетов, патчей и модов¶
Случаи использования¶
Часто хотелось бы добавить функциональность в свою игру после того, как она была выпущена.
Примеры этого включают...
Загружаемый контент: возможность добавлять функции и контент в свою игру.
Патчи: возможность исправить ошибку, которая присутствует в отправленном продукте.
Моды: предоставить другим людям возможность создавать контент для своей игры.
Эти инструменты помогают разработчикам расширить свою разработку за пределы первоначального выпуска.
Обзор файлов PCK¶
Godot позволяет это с помощью функции, называемой «пакеты ресурсов» (файлы PCK, с расширением '.pck').
Преимущества:
дополнительные обновления/патчи
даёт возможность создавать DLC
даёт возможность поддержки модификаций(модов)
нет необходимости раскрывать исходный код для модов
более модульная структура проекта
пользователям не нужно заменять всю игру
Первая часть их использования предполагает экспорт и доставку проекта игрокам. Затем, когда кто-то хочет добавить функциональность или контент позже, они просто доставляют обновления через файлы PCK пользователям.
Файлы PCK обычно содержат, но не ограничиваются:
скрипты
сцены
шейдеры
модели
текстуры
звуковые эффекты
музыка
любой другой ассет, пригодный для импорта в игру
Файлы PCK могут быть даже совершенно другим проектом Godot, который оригинальная игра загружает во время выполнения.
Создание файлов PCK¶
Чтобы упаковать все ресурсы проекта в файл PCK, откройте проект, перейдите в Project/Export (проект/экспорт) и нажмите "Export PCK/Zip". Также убедитесь, что при этом выбран шаблон экспорта.

Другим методом будет экспорт из командной строки. Если выходной файл заканчивается расширением PCK или ZIP, то в процессе экспорта будет построен файл такого типа для выбранной платформы.
Примечание
Если кто-то хочет поддерживать моды для своей игры, им потребуется, чтобы их пользователи создавали файлы, экспортируемые аналогичным образом. Предполагая, что исходная игра ожидает определенной структуры ресурсов PCK и/или определенного интерфейса для своих скриптов, то либо...
Разработчик должен опубликовать документацию по этим ожидаемым структурам/интерфейсам, ожидать, что моддеры установят Godot Engine, а затем также ожидать, что эти моддеры будут соответствовать заданному в документации API при создании мод-контента для игры (чтобы он работал). Затем пользователи будут использовать встроенные инструменты экспорта Godot для создания файла PCK, как описано выше.
The developer uses Godot to build a GUI tool for adding their exact API content to a project. This Godot tool must either run on a tools-enabled build of the engine or have access to one (distributed alongside or perhaps in the original game's files). The tool can then use the Godot executable to export a PCK file from the command line with OS.execute(). The game itself shouldn't use a tool-build of the engine (for security), so it's best to keep the modding tool and game separate.
Открытие файлов PCK во время выполнения¶
Для импорта файла PCK используется синглтон ProjectSettings. В следующем примере ожидается наличие файла «mod.pck» в каталоге исполняемого файла игры. Файл PCK содержит в своем корне тестовую сцену «mod_scene.tscn».
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 должен упростить этот процесс, независимо от того, каким путём придерживается разработчик.