О лучших принципах организации вашего проекта в Godot Engine
Я довольно долго работаю с Godot Engine и готов представить вам свой список лучших принципов, которые помогут вам организовать ваш проект.
Организация файлов
Godot Engine предоставляет вам полную свободу в хранении файлов вашего проекта. Большая сила - большая ответственность. Я называю папки в snake_style. Почему? Много было мною видано проектов, где файлы хранятся в PascalCase. Конечно, любой разработчик сам волен выбирать, однако, похоже, Хуан и другие предполагают именно вариант с маленькой буквы. Ассеты по умолчанию хранятся в папке /addons/, многие плагины завязаны именно на эту папку. Значит, подразумевается в наименовании папок именно мой стиль.
Какие же папки есть в моих проектах:
/addons/ - здесь хранятся все плагины, мои и не очень.
/assets/ - папка для хранения всех "сырых ресурсов" - оригинальных картинок, музыки, звуков, иконок, 3D-моделей. У меня они хранятся по следующим путям соответственно: /assets/images/, /assets/music/, /assets/sounds/, /assets/icons/, /assets/models/.
/resources/ - здесь хранятся все внутренние ресурсы Godot`a. Дело в том, что движок позволяет хранить различные ресурсы, например, тайлсеты, шейдеры и шейдер-материалы, стили и темы, и др. которые можно использовать во многих сценах. Редактируя эти ресурсы, вы редактируете их во всех сценах. Важно! Годо позволяет хранить вам ресурсы локально, для одной сцены, позволительно их не хранить в файловой системе проекта, чтоб не создавать лишних сущностей, но это уж вам решать.
/scenes/ - здесь хранятся вообще все сцены игры. Сцены меню, уровни, префабы, сцены интерфейса, вспомогательные сцены и все остальное.
/scripts/ - папка для хранения скриптов. Для каждой фичи я создаю отдельную папку. На самом деле, эту идею я подсмотрел у разработчиков Space Station 14. Это очень удобно, раскрывая папку вы легко можете найти то, что вам нужно отредактировать. Вопрос, что делать, если весь код для игры у вас написан на C#? Для начала рекомендую работать в едином namespace-е. Вы все также можете создавать папки, однако предлагаю вам называть их уже в PascalCase. Это соотносится в свою очередь с кодстайлом самого шарпа. Также, для каждой фичи вы можете создавать отдельный namespace.