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

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

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

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

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

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

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

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

Обзор файлов 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. 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")

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

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

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

Примечание

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

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

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