Добавить в корзинуПозвонить
Найти в Дзене

№2. Настройка проекта. Основа.

В этой статье покажу, как я настраивал основные моменты в проекте, а также расскажу о некоторых особенностях тех или иных настроек. Внимание: если вы сами разрабатываете на игровом движке Godot ваши проекты, я не призываю делать так же, как и не агитирую. Все настройки — чисто мой личный опыт, исследование, а также некоторые рекомендации самих разработчиков Godot. Начал я с этого, так как на момент написания статьи я уже работал с ресурсами и посчитал, что их нужно сразу адаптировать, чтобы уйти от подводных камней. Почему я не буду использовать форматы .fbx и .blender? Разработчики сами рекомендуют формат .glTF 2.0. glTF 2.0 (рекомендуется). Godot поддерживает как текстовый (.gltf), так и двоичный (.glb) форматы. .blend (Blender). Это работает путём вызова Blender для прозрачного экспорта в glTF (требуется установленный Blender). DAE (COLLADA) — старый поддерживаемый формат. Формат OBJ (Wavefront) + файлы материалов MTL. Он также поддерживается, но довольно ограниченно, учитывая огра
Оглавление

В этой статье покажу, как я настраивал основные моменты в проекте, а также расскажу о некоторых особенностях тех или иных настроек.

Внимание: если вы сами разрабатываете на игровом движке Godot ваши проекты, я не призываю делать так же, как и не агитирую. Все настройки — чисто мой личный опыт, исследование, а также некоторые рекомендации самих разработчиков Godot.

Шаблоны импорта

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

Если галки не снять, дополнительные опции выйдут в шаблон импорта, что является лишним делом — их придется убирать уже оттуда. Лучше сразу движку сказать, что я не собираюсь работать с этими форматами (.blender и .fbx), и он тогда под меня оптимизирует задачу.
Если галки не снять, дополнительные опции выйдут в шаблон импорта, что является лишним делом — их придется убирать уже оттуда. Лучше сразу движку сказать, что я не собираюсь работать с этими форматами (.blender и .fbx), и он тогда под меня оптимизирует задачу.

Почему я не буду использовать форматы .fbx и .blender? Разработчики сами рекомендуют формат .glTF 2.0.

glTF 2.0 (рекомендуется). Godot поддерживает как текстовый (.gltf), так и двоичный (.glb) форматы.
.blend (Blender). Это работает путём вызова Blender для прозрачного экспорта в glTF (требуется установленный Blender).
DAE (COLLADA) — старый поддерживаемый формат.
Формат OBJ (Wavefront) + файлы материалов MTL. Он также поддерживается, но довольно ограниченно, учитывая ограничения формата (нет поддержки опорных точек, скелетов, анимации, материалов UV2, PBR и т. д.).
FBX, поддерживается через библиотеку ufbx. Предыдущий рабочий процесс импорта использовал интеграцию FBX2glTF. Для этого требуется установка внешней программы, которая подключается к фирменному FBX SDK, поэтому мы рекомендуем использовать метод ufbx по умолчанию или другие форматы, перечисленные выше (если они подходят для вашего рабочего процесса).

Для себя я понял:

  • Формат glTF — отличный вариант. Я ни разу не видел, чтобы он что-то ломал при экспорте, а я импортирую напрямую из игрового формата. Также я использую двоичный формат со сжатием, без текстур и материалов; ниже я расскажу об этом.
  • Формат OBJ / DAE — мне буквально не подходит. Судя по их описанию, это устаревшие форматы, но в некоторые проекты они подойдут из-за своей простоты.
  • Формат FBX — все через костыльные методы, да и Blender, через который я в основном работаю, не особо дружит с FBX, что при импорте, что при экспорте.
  • Формат Blender — хоть и имеет чуть ли не самую дружественную связку Godot + Blender, сами файлы не обходятся нормальным сжатием (тем более без потерь). Внутренняя загрузка занимает много времени даже для 16-поточного процессора, а сами файлы могут весить слишком много. У меня при экспорте анимации из Stalker — stalker_animation.omf (9 МБ) — на деле выходило 100 МБ, тогда как в том же glTF собиралось всё до 40 МБ без сжатия.

В Godot есть ещё свой внутренний формат ресурсов (.res) — он хранить может почти всё, что угодно, в себе. В данном случае я буду хранить там модели вместо формата glTF.

Самое главное, так как я работаю с glTF (параллельно с FBX я сделаю идентично), я отключаю доступ работать с текстурами — "Discard All Textures". Текстуры я собираюсь всё равно хранить отдельно, иначе Godot при каждом импорте будет стараться их прочитать. Действия отключения я делаю как для Scene, так и для Animation Library.

Scene (Сцена)

Опция "Принудительно отключить сжатие" у меня включена. Эта опция очень щепетильная: если её не включить, особенно если вы работаете с детализированными или крупными объектами, крупные полигоны будут сжиматься, что может сломать вашу модельку. Эту опцию можно отключать (по факту, она стандартно отключена), если у вас Low-Poly геометрия или если дистанция камеры относительно велика от геометрии (пример стратегии или игры от третьего лица).

Банальный пример:

Animation Library (Библиотека анимации)

Далее тут две опции: "удалить неизменяемые дорожки" и "добавить ресурс с именем RESET, содержащий преобразование покоя".
Далее тут две опции: "удалить неизменяемые дорожки" и "добавить ресурс с именем RESET, содержащий преобразование покоя".


Первое считается оптимизацией анимации, но эта оптимизация плохо сказывается на анимации, которую вы загружаете "как есть". У вас будут аналогичные проблемы с артефактами в уже существующих кадрах, а не в геометрии, как выше.

Второе будет в дальнейшем помогать для работы с анимацией и костями, но это уже отдельная тема.

Основное

C# .NET

Основное / Dotnet / Проект - Имя сборки
Основное / Dotnet / Проект - Имя сборки

А вот тут самое геморройное оказалось для меня. Хочу лишь предупредить, что данная штука для уже C#; это имя используется в качестве имени файлов .csproj и .sln для сборки .NET.


Имя
очень чувствительное, не как оказалось, к регистру букв или там цифр, а как к расширению файлов, а именно к точке ".". При попытке создать такой файл у вас может либо всё пройти нормально, либо нет.

Пример: Изначально я дал проекту название "S.T.A.L.K.E.R.". Всё было ничего, но Godot решил выдать это же название в имя сборки для C#. После компиляции создался не просто файл S.T.A.L.K.E.R..sln и S.T.A.L.K.E.R..csproj, как предполагалось, а один файл S.T.A.L.K.E.R. (получается, файл S с расширениями T, A, L, K, E, R). Причем файл получается, нельзя не просто удалить, но и работать с ним. Он есть в системе, но его как бы и нет: система его не может определить. Стандартными средствами его тоже не снести, пришлось писать собственный батник, чтобы файл автоматически слетел с системы. Так что тут надо быть внимательным.

Желательно название давать краткое и по рекомендации платформы .NET.

DirectX 12 vs Vulkan

Основное / Рендеринг / Устройство рендера - Драйвер.windows - Vulkan.
Основное / Рендеринг / Устройство рендера - Драйвер.windows - Vulkan.

Разработчики прямо говорят, что начиная с версии 4.6, "Godot по умолчанию включает DirectX 12". Не знаю, как у других, но у меня на трёх компьютерах (GPU — RX 580, RTX 3060 и 4070) при включении данного API проекты работают нестабильно: либо просадка производительности GPU и FPS — даже в пустом проекте, либо артефакты и вылеты от моделек. Считаю, что он всё же сыроват. Как я ещё заметил, поведение DirectX 12 во многих движках или играх ведёт себя нестабильно. Благо есть возможность выключать или переключать API как в редакторе, так и в самой игре.

Заключение

На этом, пожалуй, думаю, я всё. Я зацепил только важные моменты; все остальные либо подстроить под проект, либо нужно разбирать более подробно уже в отдельных темах. Увидимся в следующей статье.