H360ru / araxxes

Godot Online Turn Based Strategy
https://araxxes.com/play
GNU General Public License v3.0
3 stars 1 forks source link

Организация файлов #38

Open alex7850 opened 3 years ago

alex7850 commented 3 years ago

Обсуждение/поиск лучших практик организации файлов проекта. (Чтобы не терять нервные клетки) Это только несколько моих мыслей, пожалуйста, активно дополняйте, критикуйте - результаты обсуждения закрепим в виде гайда

ГЛАВНЫЕ МЫСЛИ: 1) Придерживаться стандартных годовских рекомендаций по неймингу. Т.е. ПаскальКейсом названия нод и сцен, снейк_кейсом остальных скриптов, файлов.

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

3) Предлагаю до какой-то степени отказаться от папки scripts как основной свалки, аналогично с assets. В пользу следующих принципов организации

4) Подглядел у сканера, что можно скрипты основных классов держать в какой-то другой папке и не отвлекаться на шелуху.

5) Игровые сущности, которые часто требуют помимо самой сцены еще и ассеты и отнаследованнный скрипт с расширением функционала, держать тогда отдельно в своей иерархии подпапок.

Пример игровых сущностей: изображение Из видео достаточно популярного разраба

6) Скрипты объединенные общей задачей стараться объединять в "пакеты" ("пакеты" в питоновском смысле как набор скриптов) и выносить в свою общую подпапку в папке modules или classes.

7) Все модули, которые планируется поддерживать отдельно от проекта, для удобства обновления можно разместить в стандартном годовском addons

НЕ СТОЛЬ ВАЖНОЕ 8) UI сцены почти всегда требуют наличие скрипта - как и сущности держать отдельно.

9) Причем, какие-то базовые сцены со слайдерами, кнопками для переиспользования в UI засунуть в одну папку, а сами сцены экранов меню - в другую.

Относительные пути сняли бы много проблем с переносом ассетов из проекта в проект. Предмет обсуждения в годо, но пока еще не добавили.

Вывод: Главное неудобство такой организации в размазанных сценах, ассетах по всем папкам проекта. Без дополнительных аддонов будут сложности с быстрым доступом к игровым объектам во время левелдизайна

Пример аддона изображение

Germenzi commented 3 years ago

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

Разбить можно на папки modules, objects, levels и что нить по ситуации. В папке objects свои подпапки, это как ты их назвал "игровые сущности", там спрайты, звуки, скрипты, сцены и всякое такое, чтобы объект был самостоятельным.

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

Ну, а с папкой levels думаю все понятно, какие нибудь json файлы, сцены с тестами и все такое.

Переделывать кстати будем?

Germenzi commented 3 years ago

Также я предлагаю почистить ветки, оставить только мастер, пока нам ветки только мешают.

alex7850 commented 3 years ago

Также я предлагаю почистить ветки, оставить только мастер, пока нам ветки только мешают.

main и util ветки сольются после того, как я доделаю SFX, звуковую библиотеку и прикручу это костылями к старому коду.

alex ветка создавалась еще до начала разработки, там лежит багрепорт функционал, уже как-то потом сольем.

А вот alex-dev да, надо удалить, не стерлась автоматически после мерджа.

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

alex7850 commented 3 years ago

Кстати, какая-нибудь папка .tests вообще обязательна, рано или поздно юнит тесты будут