Експорт пакетів, патчів та модів

Use cases

Часто хотілося б додати функціональності до своєї гри після її розгортання.

Наприклад...

  • Зміст, який можна завантажити: можливість додавати функції та вміст у гру.
  • Патчі: можливість виправити помилку, яка присутня у створеному продукті.
  • Моди: надайте іншим людям можливість створювати контент для своєї гри.

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

Огляд файлів PCK

Godot дозволяє це через функцію, що називається пакетами ресурсів (файли PCK, з розширенням .pck).

Переваги:

  • покрокові оновлення / виправлення
  • пропонує DLC
  • пропонує підтримку модів
  • не потрібне розкриття вихідного коду для модів
  • більш модульна структура проекту
  • users don't have to replace the entire game

Перша частина їх використання включає експорт та доставку проекту до гравців. Потім, коли хтось хоче додати функціональність, або вміст, пізніше, вони просто доставлять оновлення через файли PCK користувачам.

Файли PCK зазвичай містять, але не обмежуються:

  • скрипти
  • сцени
  • шейдери
  • моделі
  • текстури
  • звукові ефекти
  • музику
  • будь-який інший актив, придатний для імпорту в гру

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

Генерування файлів PCK

Для того, щоб упакувати всі ресурси проекту у файл PCK, відкрийте проект та перейдіть до Проект/Експорт і натисніть на "Export PCK / Zip". Також переконайтесь, що під час цього вибрано шаблон експорту.

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

Іншим методом буде експорт із командного рядка. Якщо вихідний файл закінчується розширенням файлу PCK, або ZIP, то процес експорту створить тип файлу для обраної платформи.

Примітка

Якщо хтось хоче включити підтримку модів для своєї гри, то він може потребувати від своїх користувачів створення аналогічних експортованих файлів. Якщо припустити, що оригінальна гра очікує певної структури ресурсів PCK та/або певного інтерфейсу для її скриптів, то будь-який…

  1. Розробник повинен оприлюднити документацію цих очікуваних структур/інтерфейсів, розраховувати, що модери встановлять Godot Engine, а потім також очікувати, що ці модери будуть відповідати визначеній документацією API при створенні модів для гри (щоб він працював). Потім користувачі будуть використовувати компілятор Godot для експорту інструментів для створення файлу PCK, як детально описано вище.
  2. Розробник використовує Godot для створення інструменту графічного інтерфейсу для додавання їх точного вмісту API до проекту. Цей інструмент Godot повинен, або працювати на вбудованому механізмі з підтримкою інструментів, або мати доступ до нього (розповсюджуватися разом, або, можливо, у файлах оригінальної гри). Потім інструмент може використовувати виконуваний файл Godot для експорту файлу PCK з командного рядка за допомогою OS.execute (). It makes the most sense for the game to not use a tool-build though (for security) and for the modding tools to do use a tool-enabled engine build.

Відкриття файлів PCK під час виконання

Щоб імпортувати файл PCK, використовується один-вкладиш (one-liner). Пам'ятайте, що помилки, чи винятку, якщо імпорт не вдається, немає. Натомість, можливо, доведеться створити якийсь код перевірки. Наступний приклад очікує на файл “mod.pck” в каталозі виконуваних ігор. Файл PCK містить у своєму корені тестову сцену “mod_scene.tscn”.

func _your_function():
    ProjectSettings.load_resource_pack("res://mod.pck")
    # 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()
{
    ProjectSettings.LoadResourcePack("res://mod.pck");
    // 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");
}

Попередження

By default, if you import a file with the same file path/name as one you already have in your project, the imported one will replace it. This is something to watch out for when creating DLC or mods (solved easily with a tool isolating mods to a specific mods subfolder). However, it is also a way of creating patches for one's own game. A PCK file of this kind can fix the content of a previously loaded PCK.

To opt out of this behavior, pass false as the second argument to ProjectSettings.load_resource_pack().

Примітка

Для проекту C# вам потрібно створити DLL і розмістити його спочатку в каталозі проектів. Потім перед завантаженням пакета ресурсів потрібно завантажити його DLL наступним чином: Assembly.LoadFile("mod.dll")

Підсумок

Цей підручник повинен проілюструвати, наскільки легко додавати моди, патчі та DLC до гри. Найголовніше - визначити, як розповсюджувати майбутній контент для своєї гри, і розробити робочий процес, налаштований для цієї мети. Godot повинен зробити цей процес гладким незалежно від того, який шлях обере розробник.