Экспортирование пакетов, патчей и модов
Случаи использования
Часто хотелось бы добавить функциональность в свою игру после того, как она была выпущена.
Примеры этого включают...
Загружаемый контент: возможность добавлять функции и контент в свою игру.
Патчи: возможность исправить ошибку, которая присутствует в отправленном продукте.
Моды: предоставить другим людям возможность создавать контент для своей игры.
Эти инструменты помогают разработчикам расширить свою разработку за пределы первоначального выпуска.
Обзор файлов PCK
Godot позволяет это с помощью функции, называемой «пакеты ресурсов» (файлы PCK, с расширением '.pck').
Преимущества:
дополнительные обновления/патчи
даёт возможность создавать DLC
даёт возможность поддержки модификаций(модов)
нет необходимости раскрывать исходный код для модов
более модульная структура проекта
пользователям не нужно заменять всю игру
Первая часть их использования предполагает экспорт и доставку проекта игрокам. Затем, когда кто-то хочет добавить функциональность или контент позже, они просто доставляют обновления через файлы PCK пользователям.
Файлы PCK обычно содержат, но не ограничиваются:
скрипты
сцены
шейдеры
модели
текстуры
звуковые эффекты
музыка
любой другой ассет, пригодный для импорта в игру
Файлы PCK могут быть даже совершенно другим проектом Godot, который оригинальная игра загружает во время выполнения.
Создание файлов PCK
Чтобы упаковать все ресурсы проекта в PCK-файл, откройте проект, выберите «Project/Export» и нажмите «Export PCK/Zip». Убедитесь, что выбран шаблон экспорта.
Другим методом будет экспорт из командной строки. Если выходной файл заканчивается расширением PCK или ZIP, то в процессе экспорта будет построен файл такого типа для выбранной платформы.
Примечание
Если кто-то хочет поддерживать моды для своей игры, им потребуется, чтобы их пользователи создавали файлы, экспортируемые аналогичным образом. Предполагая, что исходная игра ожидает определенной структуры ресурсов PCK и/или определенного интерфейса для своих скриптов, то либо...
Разработчик должен опубликовать документацию по этим ожидаемым структурам/интерфейсам, ожидать, что моддеры установят Godot Engine, а затем также ожидать, что эти моддеры будут соответствовать заданному в документации API при создании мод-контента для игры (чтобы он работал). Затем пользователи будут использовать встроенные инструменты экспорта Godot для создания файла PCK, как описано выше.
Разработчик использует Godot для создания GUI-инструмента для добавления в проект своего точного содержимого API. Этот инструмент Godot должен работать на сборке движка с поддержкой инструментов или иметь доступ к нему (распространяемому вместе с исходными файлами игры или, возможно, в них). Затем инструмент может использовать исполняемый файл Godot для экспорта PCK файла из командной строки с помощью OS.execute(). Сама игра не должна использовать инструментальную сборку движка (в целях безопасности), поэтому лучше держать инструмент для моддинга и игру отдельно.
Открытие файлов 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 или модов. Эту проблему можно решить, используя инструмент, который изолирует моды в определённой подпапке mods. Однако это также способ создания патчей для собственной игры. Такой PCK-файл может исправить содержимое ранее загруженного PCK-файла.
Чтобы отказаться от этого поведения, передайте false в качестве второго аргумента функции ProjectSettings.load_resource_pack().
Примечание
Для проекта C# вам необходимо сначала создать DLL и поместить его в каталог проекта. Затем перед загрузкой пакета ресурсов вам необходимо загрузить этот DLL следующим образом: Assembly.LoadFile("mod.dll")
Подведение итогов
В этом руководстве объясняется, как добавлять моды, патчи и DLC в игру. Самое важное — определить, как планируется распространять будущий контент для игры, и разработать рабочий процесс, адаптированный под эти цели. Godot должен сделать этот процесс плавным, независимо от выбранного разработчиком пути.