Отступления, принятые при постройке контент-каркаса (ветка
feat/content-framework, пакеты 0–7, 221/221 EditMode). Запись извлечена из замороженного10-reference/data-layer§12; подробный разбор каждого — в архивном Meta - Tech Changelog §2.7.
Решили отступить от дизайна в четырёх местах, и все четыре — про «не усложнять раньше нужды».
1. ContentDatabase — единый плоский список, а не реестр по доменам. Реестр, валидация и менеджер
и так работают с любым наследником ContentDefinition единообразно, поэтому разбивка по доменам была
бы структурой ради структуры — на 28 ассетах. Шов на дробление оставлен: когда ассетов станет много,
разделить можно без переписывания потребителей.
2. Поле DisplayNameKey на контенте убрано — имя и описание идут только через лок-ключи
{id}.name / {id}.desc. Одна конвенция ключей вместо двух источников имени; второй источник — это
ровно тот дефект, который мы вычищаем везде.
3. Тайминговые ручки оставлены в SimConstants, а не в конфиг-SO. AiTickRate,
MaxAttackAnimTicks, MinWindupTicks — структурные и чисто-тайминговые величины, на которых стоят
тесты (AttackTiming), а не балансные ручки, которые дизайнер крутит. Шов бейка в SO готов, перенос —
при первой реальной нужде тюнить их без перекомпиляции. Правило-разделитель: в SO уезжает то, что
крутит дизайнер; в код остаётся то, что держит тест.
4. Снаряд деспавнится по краю камеро-видимой зоны (CameraZone + margin), а не по краю арены.
Решение Макса: снаряд не должен гаснуть в видимой части боя — игрок это читает как пропавший урон.
Устарело, не переносить: тем же заходом в StatsConfig добавлялась общая база статов юнита
(Defaults: MaxHP 120, AAD 12, AS 1…), а семь реликвий переписывались как Flat-диффы от неё. Схема с
тех пор заменена классовым каскадом (база HP и скорости приходит от боевого класса, поверх —
Override-группы). Числа из той таблицы недействительны.
Владелец правды: Assets/_Project/Scripts/Data/ (ContentDefinition, ContentDatabase,
SimConstants); каскад статов — Assets/_Project/Scripts/Combat/Stats/ и балансные SO.