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

Введение

Поскольку 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

Style guide

For consistency across projects, we recommend following these guidelines:

  • Use snake_case for folder and file names (with the exception of C# scripts). This sidesteps case sensitivity issues that can crop up after exporting a project on Windows. C# scripts are an exception to this rule, as the convention is to name them after the class name which should be in PascalCase.
  • Use PascalCase for node names, as this matches built-in node casing.
  • In general, keep third-party resources in a top-level addons/ folder, even if they aren't editor plugins. This makes it easier to track which files are third-party. There are some exceptions to this rule; for instance, if you use third-party game assets for a character, it makes more sense to include them within the same folder as the character scenes and scripts.

Импорт

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

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

Ignoring specific folders

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

Примечание

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

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

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

Case sensitivity

Windows and recent macOS versions use case-insensitive filesystems by default, whereas Linux distributions use a case-sensitive filesystem by default. This can cause issues after exporting a project, since Godot's PCK virtual filesystem is case-sensitive. To avoid this, it's recommended to stick to snake_case naming for all files in the project (and lowercase characters in general).

Примечание

You can break this rule when style guides say otherwise (such as the C# style guide). Still, be consistent to avoid mistakes.

На Windows 10, вы можете сделать чувствительность к регистру в названии проекта, если включите опцию WSL (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