Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Створення додатків

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

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

Примітка

Godot — це, перш за все, ігровий рушій. Це означає, що створення додатків за допомогою Godot є побічним продуктом його набору функцій, а не основною метою розробки.

Дивись також

Загляньте в Material Maker і Pixelorama для прикладів застосунків із відкритим кодом, зроблених за допомогою Godot.

Виконання поширених завдань

Створення кількох вікон

Це підтримується лише у Windows, macOS та Linux (лише X11/XWayland, не у рідному режимі Wayland).).

Додаткові вікна можна створювати за допомогою вузла Window. Вікна можна переміщувати, змінювати їх розмір, мінімізувати та закривати незалежно від головного вікна програми.

Однак, якщо ви закриєте головне вікно, всі інші вікна також будуть закриті, оскільки закриття головного вікна завершує процес. Ви можете уникнути цього, згорнувши головне вікно, встановивши його властивість unfocusable на true (щоб приховати його від панелі завдань та перемикача завдань), а потім створивши додаткові вузли Window одразу під час запуску. Не забудьте надати альтернативний спосіб виходу з програми в цьому випадку, наприклад tray icon.

Обмеження розміру вікна

Більшість програм можуть коректно відображати зображення лише з певного мінімального розміру вікна. Для більш специфічних випадків використання також може знадобитися встановити максимальний розмір вікна.

Обмеження розміру можна встановити за допомогою властивостей min_size та max_size вузла Window. Не забудьте помножити ці обмеження розміру відповідно до коефіцієнта масштабування програми (докладніше див. Масштабування до дисплеїв hiDPI).

Порада

Нагадуємо, що ви можете отримати кореневий вузол Window, щоб встановити для нього властивості, використовуючи get_window() на будь-якому вузлі.

Використання рідних діалогових вікон файлів

Це підтримується лише у Windows, macOS, Linux та Android.

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

Ви можете ввімкнути нативні діалогові вікна файлів, увімкнувши властивість use_native_dialog для вузла FileDialog. Це необхідно зробити для кожного вузла FileDialog, що використовується в проекті, оскільки немає налаштувань проекту, які б контролювали цю поведінку глобально.

Порівняння стандартного FileDialog (ліворуч) та рідного діалогового вікна файлів (праворуч) на macOS

Порівняння стандартного FileDialog (ліворуч) та рідного діалогового вікна файлів (праворуч) на macOS

Примітка

Див. опис властивості для отримання детальної інформації про підтримку платформи.

Крім того, у macOS вбудовані діалогові вікна файлів не підтримуються, якщо в редакторі увімкнено вбудовування гри. Щоб перевірити цю функцію під час запуску проєкту, перейдіть на екран Game, натисніть на крайню праву піктограму у верхній панелі та зніміть галочку з пункту Embed Game on Next Play.

Створення значка в системному треї

Це підтримується лише у Windows та macOS.

Ви можете створити одну або декілька значків у системному треї (також відомому як область сповіщень) за допомогою вузла StatusIndicator. Окрім підказки, цьому вузлу може бути призначено вузол PopupMenu, щоб при натисканні на значок відображався випадаючий список.

StatusIndicator також має сигнал pressed, який випромінюється при натисканні на значок. Використовуйте його для виконання дії без відображення випадаючого списку або для виконання різних дій залежно від того, яка кнопка миші була натиснута.

Після створення іконки в треї ви також можете реалізувати поведінку "згортання при закритті". Це означає, що коли користувач намагається закрити програму за допомогою кнопки X віконного менеджера, вона згортатиметься в трей. Для цього приєднайте цей скрипт до сцени Autoload з кореневим вузлом StatusIndicator:

extends StatusIndicator

# Disable this behavior when running from the editor with game embedding,
# as it doesn't cooperate well.
var tray_icon_supported = (
        DisplayServer.has_feature(DisplayServer.FEATURE_STATUS_INDICATOR)
        and not Engine.is_embedded_in_editor()
    )


func _ready():
    visible = false

    if tray_icon_supported:
        get_tree().auto_accept_quit = false
        get_window().focus_entered.connect(
                func():
                    # Hide the tray icon when the window gains focus,
                    # which means it was restored from its minimized state.
                    visible = false
            )
        pressed.connect(
                func(_mouse_button, _position):
                    # Restore the application when the tray icon is clicked.
                    get_window().mode = Window.MODE_WINDOWED
            )


func _notification(what):
    if not tray_icon_supported:
        return

    match what:
        NOTIFICATION_WM_CLOSE_REQUEST:
            get_window().mode = Window.MODE_MINIMIZED
            # Show the tray icon.
            visible = true

Див. Обробка запитів на вихід для отримання детальної інформації про зміну поведінки, коли користувач намагається закрити програму. Це важливо врахувати, коли у користувача є незбережені зміни, щоб уникнути втрати даних.

Примітка

Коли присутні кілька вузлів StatusIndicator, їхній порядок у системному треї визначається порядком, у якому вони додані до дерева сцен.

Використання глобального меню

Це підтримується лише на macOS.

У macOS програми можуть використовувати глобальний рядок меню системи замість відображення рядка меню всередині вікна програми. Це також називається власним меню у Godot.

Порівняння стандартного меню (ліворуч), меню з нативними спливаючими вікнами (посередині) та нативного меню (праворуч) на macOS

Порівняння стандартного меню (ліворуч), меню з нативними спливаючими вікнами (посередині) та нативного меню (праворуч) на macOS

Godot підтримує створення меню через вузол MenuBar, який відображає свої дочірні елементи PopupMenu як меню. Ви можете ввімкнути підтримку глобального меню для певного вузла MenuBar, увімкнувши його властивість prefer_global_menu в інспекторі. У macOS це призведе до того, що вузол MenuBar зникне і не займатиме місця, а його меню відображатимуться в глобальному рядку меню системи. Якщо цю властивість вимкнено, вузол MenuBar відображатиме свої меню у вікні програми, як завжди, але власні спливаючі вікна все одно використовуються, якщо це підтримується операційною системою.

Примітка

Меню програми (з назвою проекту, виділеною жирним шрифтом), а також меню Window та Help завжди присутні в macOS. Не слід додавати їх до глобального меню вручну.

У Godot 4.6 та пізніших версіях ви можете додавати нові елементи в ці меню, змінюючи властивість system_menu_id вузла PopupMenu. Ви можете вибрати між Меню програми (перше меню з назвою програми, виділеною жирним шрифтом), Меню вікна, Меню довідки та Док (відображається при клацанні правою кнопкою миші на значку в Доку). Стандартні елементи меню, які вже присутні в цих меню, будуть збережені:

Додано користувацькі параметри до системного меню Window у macOS

Додано користувацькі параметри до системного меню Window у macOS

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

Для більш складних випадків використання ви також можете використовувати синглтон NativeMenu безпосередньо, без використання вузла MenuBar.

Примітка

Інтеграція глобального меню не підтримується, якщо в редакторі увімкнено вбудовування гри. Щоб перевірити цю функцію під час запуску проєкту, перейдіть на екран Game, натисніть на крайню праву піктограму у верхній панелі та зніміть галочку з пункту Embed Game on Next Play.

Використання декорацій на стороні клієнта

Це підтримується лише на macOS.

Багато сучасних програм використовують клієнтські декорації (CSD) замість того, щоб покладатися на менеджер вікон операційної системи для малювання рядка заголовка та меж вікна (серверні декорації). Це дозволяє створити більш настроюваний зовнішній вигляд та краще інтегруватися з інтерфейсом програми.

Наразі Godot підтримує лише клієнтське оформлення на macOS. Це можна зробити, увімкнувши параметр проекту display/window/size/extend_to_title.

Порівняння стандартних декорацій вікон (зверху) та декорацій на стороні клієнта (знизу) на macOS

Порівняння стандартних декорацій вікон (зверху) та декорацій на стороні клієнта (знизу) на macOS

Після ввімкнення декорування на стороні клієнта рамка вікна більше не відображатиметься, а кнопки згортання/розгортання/закриття відображатимуться як накладання в програмі. Вам потрібно переконатися, що програма забезпечує достатній відступ зверху для зручного відображення кнопок, а також відображає заголовок вікна за допомогою вузла Label або подібного.

Щоб умовно адаптувати ваш інтерфейс користувача відповідно до того, чи ввімкнено декорації на стороні клієнта, використовуйте DisplayServer.has_feature, а також перевірте поточне значення Window.extend_to_title (саме це змінюється в налаштуваннях проекту):

func _ready():
    if DisplayServer.has_feature(FEATURE_EXTEND_TO_TITLE) and get_window().extend_to_title:
        # Adjust UI for client-side decorations (a MarginContainer node
        # can be useful here). Also set the window title to be displayed
        # according to the native window title.
        $WindowTitle.visible = true
        $WindowTitle.text = get_window().title
        if OS.is_debug_build():
            $WindowTitle.text += " (DEBUG)"

Щоб правильно розташувати заголовок вікна, спробуйте використати DisplayServer.window_get_safe_title_margins(), який повертає Vector3, де x – ліве поле, y – праве поле (збільшиться, коли система використовуватиме набір тексту справа наліво), а z – висота. Крім того, ви можете викликати DisplayServer.window_set_window_buttons_offset(), щоб налаштувати положення кнопок закриття/згортання/розгортання (зазвичай для їх вертикального центрування).

Безпечні поля заголовка під час використання клієнтських декорацій у macOS

Безпечні поля заголовка під час використання клієнтських декорацій у macOS

Примітка

У macOS клієнтські декорації не підтримуються, якщо в редакторі увімкнено вбудовування гри. Щоб перевірити цю функцію під час запуску проєкту, перейдіть на екран Game, натисніть на крайню праву піктограму у верхній панелі та зніміть галочку з пункту Embed Game on Next Play.

Відображення стану виконання на панелі завдань/в Dock

Це підтримується лише у Windows та macOS.

Програми можуть повідомляти операційній системі про стан виконання, який відображається на панелі завдань або на піктограмі в Dock. Цей стан складається з типу стану (активний, призупинено, помилка) та відсотка виконання. Це дозволяє показувати хід виконання, навіть коли користувач не працює з програмою.

Відображення прогресу в панелі Dock у macOS

Відображення прогресу в панелі Dock у macOS

Зазвичай це досягається шляхом синхронізації прогресу вузла ProgressBar із прогресом, що передається операційній системі:

func set_progress(value, indeterminate = false):
    $ProgressBar.value = value
    $ProgressBar.indeterminate = indeterminate

    if $ProgressBar.indeterminate:
        get_window().set_taskbar_progress_state(DisplayServer.PROGRESS_STATE_INDETERMINATE)
    else:
        get_window().set_taskbar_progress_state(DisplayServer.PROGRESS_STATE_NORMAL)

    # The taskbar progress value must be between `0.0` and `1.0`
    # (values outside this range are clamped).
    # ProgressBar provides a `ratio` property that represents its current progress
    # as a value between `0.0` and `1.0`.
    get_window().set_taskbar_progress_value($ProgressBar.ratio)

Доступні такі стани прогресу: відсутність прогресу (приховує індикатор прогресу), невизначений, нормальний, призупинено, помилка. Детальнішу інформацію дивіться в довідці по класу.

Ви також можете скористатися функцією Window.request_attention(), щоб вікно почало блимати на панелі завдань (або підстрибувати в Dock у macOS). Наприклад, це можна використовувати для привернення уваги користувача після завершення тривалої операції.

Примітка

Функція звітування про прогрес не працює, якщо в редакторі увімкнено вбудовування гри. Щоб перевірити цю функцію під час запуску проєкту, перейдіть на екран Game, натисніть на крайню праву піктограму у верхній панелі та зніміть галочку з пункту Embed Game on Next Play.

Надсилання сповіщень на робочому столі

Godot наразі не має вбудованої підтримки для надсилання сповіщень на робочий стіл.

Однак, у macOS та Linux ви можете використовувати утиліти командного рядка osascript та notify-send відповідно для надсилання сповіщень на робочий стіл:

func send_notification(title, message):
    var app_name = ProjectSettings.get_setting("application/config/name")
    if app_name.is_empty():
        app_name = "Unnamed Project"

    if OS.has_feature("macos") and not OS.is_sandboxed():
        # Note that this will not work if the project is exported in sandbox mode
        # (e.g. for the Mac App Store).
        OS.execute("osascript", [
                "-e",
                'display notification \\"%s\\" with title \\"%s\\" subtitle \\"%s\\"' % [
                    message,
                    app_name,
                    title,
                ]
            ])
    elif OS.has_feature("linuxbsd"):
        OS.execute("notify-send", ["--app-name", app_name, title, message])

func _ready():
    send_notification("Success", "Operation completed successfully.")

На жаль, у Windows немає еквівалента, який би був готовий до використання.

Запам'ятовування положення та розміру вікна протягом сеансів

Godot не має вбудованої підтримки запам'ятовування положення та розміру вікна протягом сеансів, але це можна реалізувати вручну за допомогою скрипта. Базовим прикладом, який підтримує налаштування з кількома моніторами, буде Autoload з таким скриптом:

extends Node

# Use a dedicated configuration file for the window state.
# This way, the application's other configuration files are left
# untouched and can be put in version control without unnecessary diffs
# being produced.
const CONFIG_WINDOW_PATH = "user://window.ini"

var config_file = ConfigFile.new()


func _enter_tree():
    config_file.load(CONFIG_WINDOW_PATH)

    # Do not restore previous window state if running from the editor
    # with game embedding enabled.
    if not Engine.is_embedded_in_editor():
        var window_screen = config_file.get_value("main", "screen", -1)
        if window_screen is int:
            get_window().current_screen = window_screen

        var window_mode = config_file.get_value("main", "mode", -1)
        if window_mode is Window.Mode:
            get_window().mode = window_mode

        var window_position = config_file.get_value("main", "position", -1)
        if window_position is Vector2i:
            get_window().position = window_position

        var window_size = config_file.get_value("main", "size", -1)
        if window_size is Vector2i:
            get_window().size = window_size


func _exit_tree():
    # Save the current window state when the application is quit normally.
    # In a real world scenario, it's recommended to also save this information
    # regularly (e.g. with a Timer node), so that the window state can be
    # restored after a crash or when terminated externally.
    config_file.set_value("main", "screen", get_window().current_screen)
    config_file.set_value("main", "mode", get_window().mode)
    config_file.set_value("main", "position", get_window().position)
    config_file.set_value("main", "size", get_window().size)
    config_file.save(CONFIG_WINDOW_PATH)

Примітка

У наведеному вище прикладі відстежується лише положення головного вікна. У програмах, які створюють кілька вікон, вам потрібно буде окремо зберігати та завантажувати положення та розмір кожного вікна.

Приховування вікна під час заставки

Для деяких програм може бути кращим приховати заставку, щоб натомість відобразити власну заставку з індикатором виконання (або навіть взагалі без заставки, якщо програма завантажується швидко).

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

Для цього параметри проекту слід налаштувати наступним чином:

Цей скрипт можна використовувати як Autoload для відновлення початкових налаштувань після завершення відображення заставного екрана:

extends Node


func _enter_tree():
    # Wait a frame to be rendered before restoring the window properties.
    # Otherwise, properties will be restored too early and the window border
    # will show up around a transparent window.
    await get_tree().process_frame

    get_viewport().transparent_bg = false
    get_window().transparent = false
    get_window().borderless = false
    get_window().size = Vector2i(1152, 648)

Відображення програми як оверлея

Вікно програми можна відображати як накладання, яке залишається поверх інших вікон. Це може бути корисним для таких програм, як віджети або системні монітори.

Для цього увімкніть всі наступні налаштування проекту:

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

Щоб дозволити введення миші проходити до фонової програми, встановіть властивість mouse_passthrough у значення true для вікна, яке малюється як накладання. Ви також можете визначити полігон у mouse_passthrough_polygon, щоб певні області все ще могли перехоплювати введення миші на накладенні.

Крім того, ви можете встановити властивість exclude_from_capture у значення true, щоб запобігти появі накладання на скріншотах або записах. Ця підказка реалізована лише у Windows та macOS і діє на основі найкращих зусиль, тому її не слід використовувати як абсолютний захід безпеки або DRM.

Примітка

Відображення у вигляді накладення не підтримується, якщо в редакторі увімкнено вбудовування гри. Щоб перевірити цю функцію під час запуску проєкту, перейдіть на екран Game, натисніть на крайню праву піктограму у верхній панелі та зніміть галочку з пункту Embed Game on Next Play.

Крім того, пам’ятайте, що накладання не можна відображати поверх іншої програми, якщо відповідна програма використовує ексклюзивний повноекранний режим. Щоб накладання були видимими, потрібно використовувати повноекранний режим без рамок.

Також існують відомі проблеми з прозорим відображенням вікон у Windows з гібридними налаштуваннями графічного процесора (наприклад, NVIDIA Optimus). Перемикання рендерерів може допомогти вирішити цю проблему.

У Linux з X11 прозорість не працюватиме, якщо користувач вимкнув композитинг у налаштуваннях менеджера вікон.

Масштабування до дисплеїв hiDPI

Сучасні дисплеї дуже різняться за щільністю пікселів, а це означає, що часто потрібен різний коефіцієнт масштабування, щоб забезпечити читабельність елементів інтерфейсу користувача. Коефіцієнт масштабування також може бути налаштований користувачем вручну, щоб користування застосунком залишалося комфортним.

Підтримка кількох роздільних здатностей Godot добре підходить для масштабування програм за умови правильного налаштування. Дотримуйтесь інструкцій у non-game application section of the Multiple resolutions documentation.

Примітка

Наразі Godot підтримує зчитування коефіцієнта масштабування екрана лише з налаштувань ОС на macOS, Android та Linux (лише Wayland). У Linux (X11) та Windows вам потрібно буде надати користувачеві опцію ручного масштабування, щоб він міг налаштувати масштаб інтерфейсу за потреби.

Інтеграція зчитувача з екрана

Програми зчитування з екрана дозволяють людям з вадами зору використовувати програму, зчитуючи елементи інтерфейсу користувача та надаючи елементи керування навігацією. Дисплеї Брайля – це ще один підхід, який також залежить від інформації про доступність для належного функціонування.

Godot автоматично вмикає підтримку зчитувачів з екрана, якщо виявлено, що зчитувач з екрана запущено. Це можна налаштувати в налаштуваннях проекту за допомогою accessibility/general/accessibility_support, щоб вимкнути її в ситуаціях, коли вона небажана. Її також можна примусово ввімкнути, що корисно під час використання інструментів налагодження доступності, які Godot не розпізнає як зчитувачі з екрана.

Godot використовує бібліотеку AccessKit для інтеграції зчитувачів з екрана.

Порада

Оскільки підтримка програми зчитування з екрана використовує саму програму зчитування з екрана для відтворення аудіо (а не проєкт Godot), вона працюватиме, навіть якщо аудіодрайвер встановлено на Dummy у налаштуваннях проєкту, як описано нижче.

Наполегливо рекомендується протестувати вашу програму за допомогою популярних програм зчитування з екрана на цільових платформах, щоб забезпечити належний користувацький досвід для користувачів із вадами зору. Приклади включають NVDA у Windows, VoiceOver у macOS та Orca у Linux.

Щоб підтримка програм зчитування з екрана досягла належного рівня зручності використання, потрібна значна робота. Вам потрібно визначити мітки доступності за допомогою властивостей Control.accessibility_name та Control.accessibility_description, а також забезпечити логічне відображення інтерфейсу користувача під час читання програмою зчитування з екрана.

Дивись також

Див. також Перетворення тексту на мовлення щодо функції перетворення тексту в мовлення, окремої від програм зчитування з екрана.

Додавання модульних тестів

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

GDScript не має інтегрованого фреймворку для модульного тестування, але існує кілька плагінів для модульного тестування, що підтримуються спільнотою:

З C# та GDExtension (C++, Rust тощо) ви можете використовувати стандартні фреймворки для тестування, такі як NUnit або doctest.

Оптимізація розміру дистрибутива

Оскільки неігрові програми зазвичай уникають використання великих частин движка, таких як аудіо чи 3D-функціональність, ви можете скомпілювати оптимізований шаблон експорту, щоб зменшити розмір файлу. Це також покращить час запуску, особливо на веб-платформі, де розмір двійкового файлу безпосередньо пов'язаний зі швидкістю ініціалізації.

Зменшення розміру часто є значним (порівняно з розміром проєкту), оскільки програми містять менше великих ресурсів порівняно з іграми. Див. Оптимізація збірки за розміром для отримання додаткової інформації про те, як це зробити.

Створення дистрибутива з одним виконуваним файлом

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

Щоб зробити програму повністю автономною та об'єднати її в один виконуваний файл, у налаштуваннях пресета експорту можна увімкнути опцію Вбудувати PCK. Це дозволить вбудувати дані PCK у виконуваний файл, завдяки чому програму можна буде переміщувати без втрати працездатності. Крім того, це дає змогу запускати програму безпосередньо з архіву ZIP без попереднього розпакування.

Примітка

Вбудовування PCK має обмеження за розміром, що залежить від платформи. Дуже великі програми (розміром у кілька ГБ) можуть не підтримувати цю функцію на всіх платформах. Детальнішу інформацію дивіться в документації щодо експорту для цільової платформи.

Створення портативних програм

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

Власний режим self-contained mode редактора Godot наразі не можна використовувати в рамках проектів. Проте ви все одно можете зберегти власні файли конфігурації у папці, що містить виконуваний файл, таким чином:

var config_path = OS.get_executable_path().get_base_dir().path_join("config.ini")
# Then use `config_path` to save/load configuration files using ConfigFile or similar.

Можливо, вам варто зробити портативний режим опціональним, оскільки він не завжди є бажаним. Зазвичай це робиться шляхом виявлення наявності певного файлу в папці з виконуваним файлом (наприклад, файлу з назвою portable.txt) і використання папки з виконуваним файлом для налаштування лише за умови наявності цього файлу.

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

Пам’ятайте, що це працюватиме лише в тому випадку, якщо програму розпаковано в папку з правами на запис. Якщо запускати виконуваний файл із папки, доступної лише для читання, наприклад C:\Program Files у Windows, виникнуть помилки, пов’язані з правами доступу.

Створення інсталяторів

Хоча ігри зазвичай встановлюються через лаунчери, такі як Steam, або завантажуються у вигляді ZIP-архіву, програми часто розповсюджуються як інсталятори для кращої інтеграції з робочим столом. Інсталятор може виконувати такі дії, як додавання ярликів до меню «Пуск» або на робочий стіл, налаштування асоціацій файлів тощо. Інсталятори також можуть запускатися автоматично через командний рядок, що робить їх більш бажаними для корпоративних середовищ.

Godot не має вбудованої підтримки для створення інсталяторів для експортованих проектів. Однак, все ще можна створювати власні інсталятори за допомогою сторонніх інструментів.

Ось неповний список інструментів, які можна використовувати для створення інсталяторів:

  • Windows: Inno Setup, NSIS

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

  • macOS: create-dmg

  • Linux: Flatpak

    • Існує Godot BaseApp, який можна використовувати як основу для створення пакетів Flatpak для проектів Godot. Дивіться Pixelorama Flatpak для прикладу Flatpak, який використовує цей BaseApp.

Ресурси

Ці сторінки охоплюють завдання, які зазвичай виконуються в неігрових програмах: