Организация проекта

Введение

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

Организация

Godot по своей природе основан на сценах и использует файловую систему как есть, без метаданных или базы данных ресурсов.

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

Учитывая это, наиболее распространённым подходом является группирование ресурсов как можно ближе к сценам; когда проект начнёт расти, это упростит его обслуживание.

Например, можно поместить в одну папку основные ресурсы, такие как изображения спрайтов, сетки 3D-моделей, материалы, музыку и т.д. Затем можно использовать отдельную папку для хранения созданных уровней, которые их используют.

/project.godot
/docs/.gdignore  # See "Ignoring specific folders" below
/docs/learning.html
/models/town/house/house.dae
/models/town/house/window.png
/models/town/house/door.png
/characters/player/cubio.dae
/characters/player/cubio.png
/characters/enemies/goblin/goblin.dae
/characters/enemies/goblin/goblin.png
/characters/npcs/suzanne/suzanne.dae
/characters/npcs/suzanne/suzanne.png
/levels/riverdale/riverdale.scn

Руководство по стилю

Для единообразия проектов мы рекомендуем следовать следующим советам:

  • Используйте стиль snake_case для имён папок и файлов (за исключением скриптов на C#). Это позволяет обойти проблемы со стилем, которые могут появиться после экспорта проекта в Windows. Скрипты на C# являются исключением, так как по правилам этого языка должны называться по имени класса, которое должно быть в стиле PascalCase.

  • Используйте PascalCase для имён узлов , так как это соответствует внутреннему стилю именования узлов.

  • В общем случае храните сторонние ресурсы в папке верхнего уровня addons/, даже если они не являются плагинами редактора. Это упрощает отслеживание того, какие файлы являются сторонними. Есть несколько исключений из этого правила - например, если вы используете ресурсы для персонажа из сторонней игры, есть смысл включить их в ту же папку, где находятся сцены и скрипты персонажа.

Импорт

До версии 3.0 Godot импортировал ресурсы из файлов, находящихся вне проекта. Хоть это и могло быть полезно в больших проектах, но доставляло лишние хлопоты в организации проекта большинству разработчиков.

Поэтому теперь ресурсы прозрачно импортируются из папки проекта.

Игнорирование определённых папок

Чтобы запретить Godot импортировать файлы, содержащиеся в определённой папке, создайте в этой папке пустой файл с именем .gdignore (именно с точкой в начале). Это может оказаться полезным для ускорения первоначального импорта проекта.

Примечание

Чтобы создать файл, имя которого начинается с точки, в Windows, вы можете использовать текстовый редактор, например Notepad++, или ввести в командной строке следующую команду: type nul> .gdignore

Если папка игнорируется, ресурсы из неё не могут быть загружены с использованием методов load() и preload().

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

Чувствительность к регистру

Windows и современные версии macOS используют по умолчанию файловые системы, нечувствительные к регистру; в отличие от них дистрибутивы Linux используют по умолчанию файловые системы, чувствительные к регистру. Это может вызвать проблемы после экспорта проекта, так как PCK - виртуальная файловая система Godot - чувствительна к регистру. Чтобы избежать этого, рекомендуется использовать стиль snake_case (и строчные буквы в целом) для именования всех файлов проекта.

Примечание

Вы можете нарушать это правило, когда руководства по стилю говорят иное (например, руководство по стилю C#). И всё же будьте последовательны, чтобы избежать ошибок.

В Windows 10, чтобы в дальнейшем избежать ошибок, связанных с чувствительностью к регистру, вы также можете сделать папку проекта чувствительной к регистру. После включения функции Windows Subsystem for Linux выполните следующую команду в окне PowerShell:

# To enable case-sensitivity:
fsutil file setcasesensitiveinfo <path to project folder> enable

# To disable case-sensitivity:
fsutil file setcasesensitiveinfo <path to project folder> disable

Если у вас не включён компонент Windows Subsystem for Linux, вы можете ввести в PowerShell, запущенный от имени администратора, следующее (для вступления изменений в силу потребуется перезагрузка):

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux