ASMDEF в Unity *Представим коллектив, где в отделах нет начальников и сотрудники между отделами спокойно могут общаться, чтобы решать какие-либо рабочие задачи. Например, разработчику нужно добавить картинку персонажа в игру, он идет к художнику, художник. Художник не знает, что надо нарисовать и идет к геймдизайнеру, геймдизайнер отдает тз, художник рисует, а разработчик вставляет в проект.

Теперь представим, что в коллективе 10 разработчиков, 10 художников и 10 геймдизайнеров. И вот разработчик идет к художникам, но не знает к какому идти и идет к случайному, а у того уже задач на месяц вперед, да и рисует он не то что надо, но разработчик этого не знает и просто ждет. Художник берет задачу, идет к ГД, тот понимает, что нужно внести правки идет к разработчику и круг повторяется.

Резюмируем: все сотрудники отдела имеют доступ ко всем другим сотрудникам.

А теперь добавим в наш коллектив начальников. Теперь сотрудник когда нуждается в чем-то идет к своему начальнику, чтобы тот обеспечил его всем необходимым. Начальники могут общаться между собой. У начальников есть свои отделы из начальников. (например 5 команд разработки в каждой по начальнику команды и эти начальники представляют собой еще одну команду).*

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

Плюсы Asmdef: - Упорядочивание и разделение ответственности - Запрет циклических зависимостей - Независимая компиляция - перекомпилируются только те asmdef, в которых были изменения

———————

Рассмотрим на примере моего проекта

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

asmdef GLOBAL Здесь лежит все то, что используется во время работы всего проекта, например таймеры, сохранения, некоторые конфиги и др. Эта asmdef тоже доступна почти всем другим asmdef

asmdef META и GAME Здесь логика разделена на саму игру (кор-геймплей) и мета механики (меню, магазин и др)

META ничего не знает о GAME и наоборот GLOBAL ничего не знает о META и GAME, но META и GAME знают о GLOBAL

Таким образом IDE будет бить нас по рукам, когда мы решим согрешить запутать код, а компиляция будет происходить значительно быстрее

Как-то так, провел два дня (делил на папочки проект)😄

repost

144

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь