При экспорте своей первой простой аркадной игры в Godot 4.1 я столкнулся с проблемой. Не смотря на простоту проекта и присутствие лишь небольшого количества содержимого: несколько спрайтов и небольшого разрешения фонов, игра весила 67мб. Я полез гуглить в чем проблема и как можно ужать итоговый exe файл.
![Результаты поиска способов по уменьшению итогового файла Результаты поиска способов по уменьшению итогового файла](https://habrastorage.org/getpro/habr/upload_files/922/4a1/ce9/9224a1ce91462a0922371589105eea0a.png)
На моё удивление быстрый поиск ответа, на такой, как мне казалось, очевидный вопрос не привёл почти ни к чему. Погуглив тоже самое на английском, информации нашлось больше, однако её пришлось собирать по кускам, т.к. она не давала общего представления, для человека недавно открывшего для себя как этот движок, так и создание игр в целом.
В Godot для экспорта проекта используются шаблоны экспорта. При первом экспорте файлов движок предлагает скачать уже скомпилированные файлы для разных систем разом. Они весят достаточно много.
![Размер скачанных шаблонов экспорта под Windows Размер скачанных шаблонов экспорта под Windows](https://habrastorage.org/getpro/habr/upload_files/b1c/123/e77/b1c123e77e778d29c1ce8354510f0f60.png)
![Предложение скачать файлы вылазит здесь - в меню экспорта файлов (но поскольку я уже качал их, то у меня оно уже не отображается) Предложение скачать файлы вылазит здесь - в меню экспорта файлов (но поскольку я уже качал их, то у меня оно уже не отображается)](https://habrastorage.org/getpro/habr/upload_files/784/645/c3a/784645c3ab8d3597ee2e0ef2257c90cf.png)
К сожалению настройка
Короче говоря, в официальной документации описана "Optimizing a build for size" - оптимизация билда по размеру. Поскольку я использую качал уже скомпилированный экзешник Godot, я не сразу понял, про какие исходные файлы там говориться. В итоге спустя просмотр роликов на ютубе и попытки чтения официальной документации я разобрался что делать для получения необходимых уменьшенных шаблонов экспорта. Исходники Godot используются как для компиляции самого движка (с возможность вырезать ненужные функции), так и компиляции шаблонов экспорта. Для этого необходимо иметь:
Компилятор C++ (я использовал GNU)
Интерпретатор Python
Библиотеку scons для Python
Сами исходные файлы
Компилятор GNU для Windows можно установить через MSYS2. То, как это сделать подробно описано в мануале Microsoft Visual Studio Code.
Интерпретатор Python можно скачать с официального сайта. Не забудьте добавить путь (в PATH) к интерпретатору при установке (можете посмотреть какие нибудь видео по установке интерпретатора, там всё проще чем с MSYS2). Для установки библиотеки scons нужно прописать в командную строку pip install scons.
Для получения файлов идём на официальный Github Godot engine, выбираем версию, которую вы использовали для своей игры (у меня это Godot 4.1).
![Нажимаем на выбор ветки (master) и выбираем нужную версию Нажимаем на выбор ветки (master) и выбираем нужную версию](https://habrastorage.org/getpro/habr/upload_files/803/eaf/a01/803eafa01bfb46273114aa0be22f612b.png)
После этого нажимаем на Code и либо клонируем репозиторий Git (если умеете), либо просто качаем архив zip архив (кнопка Download ZIP).
![Я выбрал скачать zip архив Я выбрал скачать zip архив](https://habrastorage.org/getpro/habr/upload_files/8ce/b2d/36e/8ceb2d36ed0c523b93002dd86d2c182e.png)
![Сжатая папка должна выглядеть как то так Сжатая папка должна выглядеть как то так](https://habrastorage.org/getpro/habr/upload_files/480/727/a2b/480727a2b76abe345bdf5d56b9f537a8.png)
Распаковываем архив и переносим файлы в удобное место (я создал папку Godot 4.1 на диске C и переместил файлы туда)
Далее открываем командную строку (win + R, вводим cmd). Прописываем путь к папке: cd C:\Godot 4.1 (вставьте путь к той папке, в которую вы закинули файлы). Идём в документацию Godot и выбираем те флаги компиляции, которые не нужны в вашем проекте (например, если вы не используете 3d движок, можете отключить его). При этом вы должны быть уверены, что эти функции не используются в вашей игре. Я выбрал следующие:
scons platform=windows target=template_release module_text_server_adv_enabled=no module_text_server_fb_enabled=yes disable_3d=yes disable_advanced_gui=yes module_basis_universal_enabled=no module_bmp_enabled=no module_camera_enabled=no module_csg_enabled=no module_dds_enabled=no module_enet_enabled=no module_gridmap_enabled=no module_hdr_enabled=no module_jsonrpc_enabled=no module_ktx_enabled=no module_mbedtls_enabled=no module_meshoptimizer_enabled=no module_minimp3_enabled=no module_mobile_vr_enabled=no module_msdfgen_enabled=no module_multiplayer_enabled=no module_noise_enabled=no module_navigation_enabled=no module_ogg_enabled=no module_openxr_enabled=no module_raycast_enabled=no module_regex_enabled=no module_squish_enabled=no module_svg_enabled=no module_tga_enabled=no module_theora_enabled=no module_tinyexr_enabled=no module_upnp_enabled=no module_vhacd_enabled=no module_vorbis_enabled=no module_webrtc_enabled=no module_websocket_enabled=no module_webxr_enabled=no module_zip_enabled=no optimize=size tools=no -j12
platform=windows означает, что мы создаём шаблон экспорта под Windows (exe файлы). Остальные флаги можете посмотреть в той же документации и выбрать те, что вам точно не нужны.
Через флаг -j8 устанавливаем количество процессов, которые могут быть одновременно (если я правильно понял, зависит от количества потоков процессора).
После этого запускается нудный процесс компиляции, который может продлиться достаточно долго (при значении -j4 она заняла 17 минут, при значение -j14 заняла 9 минут), в зависимости от вашего устройства и флага -j, которого вы поставили.
В итоге создаётся папка bin, в которой вы найдёте exe файл шаблона экспорта, который будет весить значительно меньше установленного через меню экспорта в Godot.
![В этой папке находятся exe файлы шаблона экспорта В этой папке находятся exe файлы шаблона экспорта](https://habrastorage.org/getpro/habr/upload_files/379/40f/21a/37940f21ab3734f34507289bab5917d6.png)
![Нам нужен этот Нам нужен этот](https://habrastorage.org/getpro/habr/upload_files/7a5/cf2/519/7a5cf2519e51c5217ba586c0f60483e9.png)
Чтобы использовать для компиляции именно его, я переместил файл в папку с шаблонами экспорта (обычно она должна быть в папке AppData\Roaming\Godot\export_templates\версия вашего движка. Далее при экспорте проекта в пользовательском шаблоне указал ссылку на скомпилированный exe файл:
![](https://habrastorage.org/getpro/habr/upload_files/198/ed2/cdf/198ed2cdfe3ebee683a51f4415d92d6b.png)
Возможно в будущем добавят функциональность кнопке Проекты --> Настроить конфигурацию сборки движка (Project --> Customize Engine Build Configuration), но пока, согласно посту одного из разработчиков движка, эта функция не работает должным образом, поэтому приходится обходиться этими костылями.
Комментарии (9)
MrBuzzy
16.12.2023 11:30Разве в документации нет статьи по этому поводу, точно видел. Или она не дала достаточно информации?
Simplast Автор
16.12.2023 11:30Я написал в начале, что как новичку мне было сложно разобраться со всеми шагами в начале. В документации есть флаги компиляции, про них написано понятно и подробно и я ссылаюсь на документацию ближе к концу, но разъяснения про то, как сделать все это пошагово нет, статьи разделены и неинтуитивно связаны друг с другом (по крайней мере мне так кажется). Плюсом я качал уже готовый движок Godot, не компилировав его (а сам движок можно скомпилировать из исходных файлов также, как и шаблоны экспорта, указав другие флаги компиляции), что помогло бы мне сообразить быстрее, поэтому я не понимал что конкретно нужно компилировать
PrinceKorwin
Не нашел а статье так в итоге на сколько удалось уменьшить размер файла?
Arendentum
Так в предпоследнем скрине видно - 35 867 Кб
PrinceKorwin
С телефона не особо там видно. А каждый открывать и искать не стал. Спасибо за информацию.
furior
Как я понял из текста, это файл кастомного компилятора, а не игры. Возможно не прав.
Simplast Автор
Это не компилятор, файл экспорта по сути содержит сам движок. При экспорте файлы игры (ваши спрайты, звуки, музыка и тд) как бы совмещаются с ним в итоговый исполняемый файл и игра работает за счёт этого. Те файлы экспорта, которые Godot предлагает скачать автоматически, содержат движок со всеми функциями (3d движок, все виды нод и тд). Скомпилировав файл экспорта самому, можно выключить те части движка, которые не нужны вашей игре (условно 3d движок в 2d игре) и снизить за счёт этого размер итогового файла с игрой