Компіляція для Windows

Дивись також

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

Вимоги

Для компіляції під Windows необхідно:

  • Компілятор C++. Використовуйте один із наведених нижче способів:

    • Спільнота Visual Studio, версія 2019 або новіша. Рекомендується Visual Studio 2022. Обов’язково ввімкніть C++ у списку робочих процесів для інсталяції. Якщо ви вже встановили Visual Studio без підтримки C++, запустіть інсталятор ще раз; він повинен представити вам кнопку Змінити. Підтримує x86_64, x86_32 і arm64.

    • MinGW-w64 з GCC можна використовувати як альтернативу Visual Studio. Обов’язково встановіть/налаштуйте його для використання моделі потоку posix. Важливо: При використанні MinGW для компіляції гілки master вам потрібен GCC 9 або новішої версії. Підтримує лише x86_64 і x86_32.

    • MinGW-LLVM із clang можна використовувати як альтернативу Visual Studio та MinGW-w64. Підтримує x86_64, x86_32 і arm64.

  • Python 3.8+. Обов’язково ввімкніть опцію додавання Python до PATH у програмі встановлення.

  • SCons 4.0+ система збірки. Рекомендується використовувати останній випуск, особливо для належної підтримки останніх випусків Visual Studio.

Примітка

Якщо у вас встановлено Scoop, ви можете легко встановити MinGW та інші залежності за допомогою такої команди:

scoop install python mingw

Scons все одно потрібно буде встановити через pip

Примітка

Якщо у вас встановлено MSYS2, ви можете легко встановити MinGW та інші залежності за допомогою такої команди:

pacman -S mingw-w64-x86_64-gcc mingw-w64-i686-gcc make python-pip

Для кожної підсистеми MSYS2 MinGW ви повинні запустити pip3 install scons в її оболонці.

Дивись також

Щоб отримати вихідний код Godot для компіляції, перегляньте Отримання джерела.

Для загального огляду використання SCons для Godot див. Знайомство з системою побудови.

Налаштування SCons

Щоб встановити SCons, відкрийте командний рядок і виконайте таку команду:

python -m pip install scons

Якщо вам буде запропоновано повідомлення Встановлення користувача за замовчуванням, оскільки звичайні пакети сайту неможливі для запису, можливо, вам доведеться запустити цю команду знову, використовуючи підвищені дозволи. Відкрийте новий командний рядок як адміністратор, а потім знову запустіть команду, щоб переконатися, що SCons доступний із PATH.

Щоб перевірити, чи правильно ви встановили Python і SCons, ви можете ввести python --version і scons --version у командному рядку (cmd.exe).

Якщо наведені вище команди не працюють, обов’язково додайте Python до змінної середовища PATH після встановлення, а потім перевірте ще раз. Ви можете зробити це, знову запустивши програму встановлення Python і ввімкнувши опцію додавання Python до PATH.

Якщо SCons не може виявити інсталяцію Visual Studio, можливо, ваша версія SCons застаріла. Оновіть його до останньої версії за допомогою python -m pip install --upgrade scons.

Завантаження джерела Godot

Зверніться до Отримання джерела для отримання детальних інструкцій.

Відтепер підручник передбачає, що ви розмістили вихідний код у C:\godot.

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

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

Для Windows Defender натисніть клавішу Windows, введіть «Безпека Windows», а потім натисніть Enter. Натисніть Захист від вірусів і загроз на лівій панелі. У розділі Параметри захисту від вірусів і загроз натисніть Керувати налаштуваннями та прокрутіть вниз до Виключення. Натисніть Додати або видалити виключення, а потім додайте вихідну папку Godot.

Компілювання

Вибір компілятора

SCons автоматично знайде та використає наявну інсталяцію Visual Studio. Якщо у вас не встановлено Visual Studio, вона спробує використати MinGW. Якщо у вас уже встановлено Visual Studio і ви хочете використовувати MinGW-w64, передайте use_mingw=yes у командний рядок SCons. Зауважте, що збірки MSVC не можна виконати з оболонок MSYS2 або MinGW. Натомість використовуйте cmd.exe або PowerShell. Якщо ви використовуєте MinGW-LLVM, передайте як use_mingw=yes, так і use_llvm=yes у командний рядок SCons.

Порада

Під час розробки зазвичай краще використовувати компілятор Visual Studio, оскільки він зв’язує двійковий файл Godot набагато швидше, ніж MinGW. Однак MinGW може створити більш оптимізовані двійкові файли за допомогою оптимізації часу зв’язку (див. нижче), що робить його кращим вибором для використання у виробництві. Особливо це стосується віртуальної машини GDScript, яка працює набагато краще з MinGW порівняно з MSVC. Тому рекомендується використовувати MinGW для створення збірок, які ви розповсюджуєте гравцям.

Усі офіційні двійкові файли Godot створено в спеціальних контейнерах за допомогою MinGW.

Запуск SCons

Відкривши командний рядок, перейдіть до кореневого каталогу вихідного коду двигуна (за допомогою cd) і введіть:

C:\godot> scons platform=windows

Примітка

Під час компіляції з кількома потоками процесора SCons може попередити про відсутність pywin32. Ви можете сміливо ігнорувати це попередження.

Порада

Якщо ви компілюєте Godot, щоб внести зміни або зробити внесок у механізм, ви можете використати параметри SCons dev_build=yes або dev_mode=yes. Перегляньте Псевдоніми розробки та виробництва для отримання додаткової інформації.

Якщо все піде добре, отриманий двійковий виконуваний файл буде розміщено в C:\godot\bin\ з назвою godot.windows.editor.x86_32.exe або godot.windows.editor.x86_64.exe. За замовчуванням SCons створить двійковий файл, який відповідає архітектурі вашого ЦП, але це можна змінити за допомогою arch=x86_64, arch=x86_32 або arch=arm64.

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

Порада

Якщо ви компілюєте Godot для використання у виробництві, ви можете зробити кінцевий виконуваний файл меншим і швидшим, додавши опцію SCons production=yes. Це дозволяє додатково оптимізувати компілятор і оптимізувати час зв’язку.

LTO потребує деякий час для запуску та потребує до 30 ГБ доступної оперативної пам’яті під час компіляції (залежно від інструментарію). Якщо вам не вистачає пам’яті з наведеним вище параметром, використовуйте production=yes lto=none або production=yes lto=thin (тільки LLVM) для легкої, але менш ефективної форми LTO.

Примітка

Якщо ви хочете використовувати окремі параметри редактора для власних збірок Godot та офіційних випусків, ви можете ввімкнути Автономний режим, створивши файл під назвою ._sc_ або _sc_ у bin/ папка.

Компіляція з підтримкою Direct3D 12

За замовчуванням збірки Godot не містять підтримки графічного API Direct3D 12.

Ви можете встановити необхідні залежності, запустивши python misc/scripts/install_d3d12_sdk_windows.py у сховищі вихідних кодів Godot. Після запуску цього сценарію додайте параметр d3d12=yes SCons, щоб увімкнути підтримку Direct3D 12. Буде використано шляхи за замовчуванням для різних залежностей, які збігаються з тими, що використовуються в сценарії.

Ви можете знайти докладні кроки нижче, якщо ви бажаєте налаштувати залежності вручну, але наведений вище скрипт обробляє все за вас (включаючи додаткові компоненти PIX і Agility SDK).

  • статична бібліотека godot-nir. Ми компілюємо бібліотеки Mesa, які вам знадобляться, у статичну бібліотеку. Завантажте його будь-де, розархівуйте і запам'ятайте шлях до розпакованої папки, він вам знадобиться нижче.

Примітка

За бажанням ви можете створити статичні бібліотеки godot-nir самостійно, виконавши такі дії:

  1. Встановіть пакет Python mako, який потрібен для створення деяких файлів.

  2. Клонуйте каталог godot-nir-static і перейдіть до нього.

  3. Виконайте наступне:

 git submodule update --init
 ./update_mesa.sh
 scons

If you are building with MinGW-w64, add ``use_mingw=yes`` to the ``scons``
command, you can also specify build architecture using ``arch={architecture}``.
If you are building with MinGW-LLVM, add both ``use_mingw=yes`` and
``use_llvm=yes`` to the ``scons`` command.

If you are building with MinGW and the binaries are not located in
the ``PATH``, add ``mingw_prefix="/path/to/mingw"`` to the ``scons``
command.

Mesa static library should be built using the same compiler and the
same CRT (if you are building with MinGW) you are using for building
Godot.

За бажанням ви можете скомпілювати наступне для додаткових функцій:

  • PIX — це програма для налаштування продуктивності та налагодження програм Direct3D12. Якщо ви скомпілюєте його підтримку, ви зможете отримати набагато більш детальну інформацію через PIX, яка допоможе вам оптимізувати вашу гру та усунути помилки графіки. Щоб використовувати його, завантажте пакет WinPixEventRuntime. Ви перейдете на сторінку пакета NuGet, де ви можете натиснути «Завантажити пакет», щоб отримати його. Після завантаження змініть розширення файлу на .zip і розархівуйте файл за певним шляхом.

  • Agility SDK можна використовувати для надання доступу до останніх функцій Direct3D 12, не покладаючись на оновлення драйверів. Щоб використовувати його, завантажте найновіший пакет Agility SDK. Ви перейдете на сторінку пакета NuGet, де ви можете натиснути «Завантажити пакет», щоб отримати його. Після завантаження змініть розширення файлу на .zip і розархівуйте файл за певним шляхом.

Примітка

Якщо ви використовуєте попередній перегляд Agility SDK, не забудьте ввімкнути режим розробника в Windows; інакше він не буде використаний.

Примітка

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

# For x86-64:
gendef ./bin/x64/WinPixEventRuntime.dll
dlltool --machine i386:x86-64 --no-leading-underscore -d WinPixEventRuntime.def -D WinPixEventRuntime.dll -l ./bin/x64/libWinPixEventRuntime.a

# For ARM64:
gendef ./bin/ARM64/WinPixEventRuntime.dll
dlltool --machine arm64 --no-leading-underscore -d WinPixEventRuntime.def -D WinPixEventRuntime.dll -l ./bin/ARM64/libWinPixEventRuntime.a

Під час створення Godot вам потрібно буде сказати SCons використовувати Direct3D 12 і де шукати додаткові бібліотеки:

C:\godot> scons platform=windows d3d12=yes mesa_libs=<...>

Або з увімкненими всіма параметрами:

C:\godot> scons platform=windows d3d12=yes mesa_libs=<...> agility_sdk_path=<...> pix_path=<...>

Примітка

Для бібліотек DLL Agility SDK вам потрібно явно вибрати тип робочого процесу. За замовчуванням є одна арка (DLL-файли скопійовані до bin/). Якщо ви передасте agility_sdk_multi_arch=yes для SCons, ви підключитесь до кількох архівів. DLL-файли будуть скопійовані до відповідних підкаталогів bin/<arch>/, а під час виконання буде завантажено правильний.

Компіляція з підтримкою ANGLE

ANGLE забезпечує рівень перекладу з OpenGL ES 3.x на Direct3D 11 і може використовуватися для покращення підтримки рендерера сумісності на деяких старіших графічних процесорах із застарілими драйверами OpenGL і в Windows для ARM.

За замовчуванням Godot створено з динамічно пов’язаним ANGLE, ви можете використовувати його, розмістивши libEGL.dll і libGLESv2.dll поруч із виконуваним файлом.

Примітка

Ви також можете використовувати динамічно зв’язаний ANGLE із шаблонами експорту, перейменувати вищезазначені DLL на libEGL.{architecture}.dll і libGLESv2.{architecture}.dll і розмістити їх поруч із виконуваними файлами шаблонів експорту, і бібліотеки будуть автоматично копіювати під час процесу експорту.

Щоб скомпілювати Godot зі статично пов’язаним ANGLE:

  • Завантажте попередньо зібрані статичні бібліотеки з godot-angle-static library та розпакуйте їх.

  • Під час збірки Godot додайте angle_libs={path}, щоб вказати SCons, де шукати бібліотеки ANGLE:

    scons platform=windows angle_libs=<...>
    

Примітка

За бажанням ви можете самостійно створити бібліотеки godot-angle-static, виконавши наступні дії:

  1. Склонуйте каталог godot-angle-static і перейдіть до нього.

  2. Виконайте таку команду:

 git submodule update --init
 ./update_angle.sh
 scons

If you are buildng with MinGW, add ``use_mingw=yes`` to the command,
you can also specify build architecture using ``arch={architecture}``.
If you are building with MinGW-LLVM, add both ``use_mingw=yes`` and
``use_llvm=yes`` to the ``scons`` command.

If you are building with MinGW and the binaries are not located in
the ``PATH``, add ``mingw_prefix="/path/to/mingw"`` to the ``scons``
command.

ANGLE static library should be built using the same compiler and the
same CRT (if you are building with MinGW) you are using for building
Godot.

Розробка в Visual Studio

Для компіляції Godot не потрібно використовувати IDE, оскільки SCons подбає про все. Але якщо ви маєте намір займатися розробкою двигуна або налагодженням коду двигуна C++, вас може зацікавити налаштування редактора коду або IDE.

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

Ви можете створити рішення Visual Studio за допомогою SCons, запустивши SCons з параметром vsproj=yes, ось так:

scons platform=windows vsproj=yes

Тепер ви зможете відкрити вихідний код Godot у рішенні Visual Studio, а також зможете створити Godot за допомогою кнопки Build у Visual Studio.

Дивись також

Перегляньте visual Studio для отримання додаткової інформації.

Вирішення проблем

Якщо під час використання MSVC виникає помилка компіляції, обов’язково встановіть останні оновлення. Ви можете зробити це, запустивши середовище розробки Visual Studio та виконавши Continue without code, тоді Help > Check for Updates у рядку меню угорі. Встановіть усі оновлення, а потім спробуйте скомпілювати ще раз.

Крос-компіляція для Windows з інших операційних систем

Якщо ви користуєтеся Linux або macOS, вам потрібно інсталювати MinGW-w64, який зазвичай доступний у 32-розрядному та 64-розрядному варіантах, або MinGW-LLVM, який постачається як єдиний архів для всіх цільових архітектури. Назви пакетів можуть відрізнятися залежно від вашого дистрибутива, ось деякі з них:

arch Linux

pacman -S mingw-w64

Debian / Ubuntu

apt install mingw-w64

Fedora

dnf install mingw64-gcc-c++ mingw64-winpthreads-static \
            mingw32-gcc-c++ mingw32-winpthreads-static

macOS

brew install mingw-w64

Маґей

urpmi mingw64-gcc-c++ mingw64-winpthreads-static \
      mingw32-gcc-c++ mingw32-winpthreads-static

Перед спробою компіляції, SCons перевірить наявність наступних бінарних файлів у вашій змінній середовища PATH:

# for MinGW-w64
i686-w64-mingw32-gcc
x86_64-w64-mingw32-gcc

# for MinGW-LLVM
aarch64-w64-mingw32-clang
i686-w64-mingw32-clang
x86_64-w64-mingw32-clang

Якщо бінарні файли не знаходяться в PATH (наприклад, /usr/bin), ви можете визначити наступну змінну середовища, щоб дати підказку системі збірки:

export MINGW_PREFIX="/path/to/mingw"

Де /path/to/mingw це шлях, що містить каталог bin, де розташовані i686-w64-mingw32-gcc і x86_64-w64-mingw32-gcc (наприклад, /opt/mingw-w64, якщо двійкові файли знаходяться в /opt/mingw-w64/bin).

Щоб переконатися, що ви все робите правильно, виконання наступного в оболонці має призвести до робочого компілятора (версія виводу може відрізнятися залежно від вашої системи):

${MINGW_PREFIX}/bin/x86_64-w64-mingw32-gcc --version
# x86_64-w64-mingw32-gcc (GCC) 13.2.0

Примітка

Якщо ви створюєте за допомогою MinGW-LLVM, додайте use_llvm=yes до команди scons.

Примітка

Під час крос-компіляції для Windows із використанням MinGW-w64 пам’ятайте, що підтримуються лише архітектури x86_64 і x86_32. MinGW-LLVM також підтримує arm64. Обов’язково вкажіть правильний параметр arch= під час виклику SCons, якщо будуєте з іншої архітектури.

Вирішення проблем

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

Ви можете змінити цю конфігурацію, дотримуючись цих інструкцій для 64-розрядної версії:

sudo update-alternatives --config x86_64-w64-mingw32-gcc
<choose x86_64-w64-mingw32-gcc-posix from the list>
sudo update-alternatives --config x86_64-w64-mingw32-g++
<choose x86_64-w64-mingw32-g++-posix from the list>

А для 32-бітної версії:

sudo update-alternatives --config i686-w64-mingw32-gcc
<choose i686-w64-mingw32-gcc-posix from the list>
sudo update-alternatives --config i686-w64-mingw32-g++
<choose i686-w64-mingw32-g++-posix from the list>

Створення шаблонів експорту Windows

Шаблони експорту Windows створюються шляхом компіляції Godot без редактора з такими прапорцями:

C:\godot> scons platform=windows target=template_debug arch=x86_32
C:\godot> scons platform=windows target=template_release arch=x86_32
C:\godot> scons platform=windows target=template_debug arch=x86_64
C:\godot> scons platform=windows target=template_release arch=x86_64
C:\godot> scons platform=windows target=template_debug arch=arm64
C:\godot> scons platform=windows target=template_release arch=arm64

Якщо ви плануєте замінити стандартні шаблони експорту, скопіюйте їх у таке розташування, замінивши <version> на ідентифікатор версії (наприклад, 4.2.1.stable або 4.3.dev) :

%APPDATA%\Godot\export_templates\<version>\

З такими назвами:

windows_debug_x86_32_console.exe
windows_debug_x86_32.exe
windows_debug_x86_64_console.exe
windows_debug_x86_64.exe
windows_debug_arm64_console.exe
windows_debug_arm64.exe
windows_release_x86_32_console.exe
windows_release_x86_32.exe
windows_release_x86_64_console.exe
windows_release_x86_64.exe
windows_release_arm64_console.exe
windows_release_arm64.exe

Однак, якщо ви використовуєте власні модулі або власний код двигуна, ви можете налаштувати свої бінарні файли як власні шаблони експорту в меню експорту проекту. Щоб налаштувати це, потрібно ввімкнути Додаткові параметри.

../../../_images/wintemplates.webp

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