Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

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

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

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

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

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

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

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

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

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

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

Переваги:

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

  • пропонує DLC

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

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

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

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

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

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

  • скрипти

  • сцени

  • шейдери

  • моделі

  • текстури

  • звукові ефекти

  • музику

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

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

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

In order to pack all resources of a project into a PCK file open the project and go to Project/Export and click on "Export PCK/Zip". Also make sure to have an export template selected while doing so.

../../_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")

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

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. You can solve this problem by using a tool that isolates 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.

Щоб відмовитися від цієї поведінки передайте false в якості другого аргумента в ProjectSettings.load_resource_pack().

Примітка

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

Підсумок

This tutorial explains how to add mods, patches, or DLC to a game. The most important thing is to identify how one plans to distribute future content for their game and develop a workflow that is customized for that purpose. Godot should make that process smooth regardless of which route a developer pursues.