Решили: перед системой оружия идёт фаза 0 — удалить легаси визуального слоя, выправить имена, которые врут, и свести клипы в одно место. Список целиком — Planning - Weapon System §6.1.
Почему: заказ Макса дословно — «давай именно поменяем нейминг, ибо он щас у нас не особо корректный (будь то файлы, документация или нечто такое)» и «все помимо BoneUnit_Storybook - это ЛЕГАСИ. Остальное можно удалять, даю свое согласие» (06.08.2026, сессия a4e2eebd). Отвергнуто: переименовать по ходу фазы 1 — тогда правки контента и правки имён легли бы в один дифф, и разбирать причину поломки пришлось бы в обоих сразу.
Грабли:
- Имена контроллеров врут ровно наоборот, и это опаснее всего в списке.
BoneUnit_Standart.controller(«лабораторный» по имени) играет в бою у всех 47 юнитов —UnitView_BoneStorybookне переопределяетm_Controllerвовсе и берёт наследуемый. АBoneUnit_Combat.controller(«боевой») стоит override’ом только на дев-дуэлянте. То есть чистка «по имени» сносит живой бой и оставляет стенд. Проверено сверкой guid в YAML, не по докладу. BoneUnit_Standart.prefabудалить нельзя ни при каком раскладе: живойBoneUnit_Storybook— его Prefab Variant (guid базы совпадает вm_SourcePrefab), и от базы он наследует контроллер, аватар и половину спрайтов. «Удаляем всё кроме Storybook» звучит как чистка, а означает удаление ростера.BuildUnitViewPrefabs.cs— заряженное ружьё в меню. Генерирует покадровые префабы, которых в дереве уже нет, И перезаписывает_viewPrefabв живых Relic/Enemy-ассетах. Один случайный клик по пункту меню снимает вид 47 юнитам. Это не «мёртвый код, который мешает читать», а активная опасность.- Половина работы оказалась сделана до захода. Покадровые префабы и
UnitView_Human128(«Man128») удалены коммитами969f3c2d0и1c4adca48от 05.08. Разведка по имени файла дала бы пусто и прочиталась бы как «искать негде»; правду сказала история git. - Дев-дуэлянтов было два, и второй — копия.
BoneDevDuelistпротивBoneStorybookDevDuelist: различий ровно три строки — имя, id, префаб вида; статы и класс идентичны байт в байт. Пара имела смысл, пока видов было два и их сравнивали рядом. - Клипы живут по трём адресам, а предписанный документом пуст.
ScriptableObjects/Visuals/(58 клипов, 11 override-контроллеров — 71 файл из 82 в ней вообще не ScriptableObject),Prefabs/Bones/(11),Art/Animations/(пусто, только.gitkeep), при том что30-how-to/adding-assets§2 велит класть клипы именно в третью. - Раскладку папок не проверяет ни один тест, а владельцев правды про неё три — док
adding-assets, кодContentPathsиAssets/_Project/UI/AGENTS.md, — и они расходятся между собой. Пока конвенция не записана решением и не закрыта тестом, любой наведённый порядок разъедется снова:ProjectConventionTestsдержит корень меню и невидимые символы, но про папки молчит. - Побочно найдено и не чинится этой фазой:
BoneUnitControllerBuilderобъявляет маскуMask_Arms, которой в дереве нет (естьMask_Action,Mask_Hips,Mask_ShieldArm) — при следующей перестройке контроллеров смотреть в оба. Плюс два ассета с неразрешимым скриптом в git:QC_KeyConfig.asset(удалённый QFSW) иAssets/DefaultNetworkPrefabs.asset(удалённый NGO).
Владелец правды: план tech/40-planning/weapon-system §6.1; после выполнения — само дерево и
тест на раскладку, которого пока нет.