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

Випадки використання

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

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

  • Зміст, який можна завантажити: можливість додавати функції та вміст у гру.

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

  • Моди: надайте іншим людям можливість створювати контент для своєї гри.

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

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

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

Переваги:

  • покрокові оновлення / виправлення

  • пропонує DLC

  • пропонує підтримку модів

  • не потрібне розкриття вихідного коду для модів

  • більш модульна структура проєкту

  • користувачі не повинні замінювати всю гру

Перша частина їх використання включає експорт та доставку проєкту до гравців. Потім, коли хтось хоче додати функціональність, або вміст, пізніше, вони просто доставлять оновлення через файли 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(). Сама гра не повинна використовувати інструментальну збірку рушія (з міркувань безпеки), тому краще тримати інструмент для модифікації окремо від гри.

Відкриття файлів 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 повинен зробити цей процес гладким незалежно від того, який шлях обере розробник.