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

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

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

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

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

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

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

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

Обзор файлов 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 для создания 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")

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

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

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

Примечание

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

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

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