Merge pull request 'feature/attrubute-system-gdd' (#8) from feature/attrubute-system-gdd into master

Reviewed-on: #8
This commit was merged in pull request #8.
This commit is contained in:
2026-04-09 12:15:38 +03:00
9 changed files with 1574 additions and 2 deletions
+1
View File
@@ -682,6 +682,7 @@ PlayerSettings:
webEnableSubmoduleStrippingCompatibility: 0 webEnableSubmoduleStrippingCompatibility: 0
scriptingDefineSymbols: scriptingDefineSymbols:
Standalone: FISHNET;FISHNET_V4 Standalone: FISHNET;FISHNET_V4
WebGL: FISHNET;FISHNET_V4
additionalCompilerArguments: {} additionalCompilerArguments: {}
platformArchitecture: {} platformArchitecture: {}
scriptingBackend: scriptingBackend:
+308
View File
@@ -0,0 +1,308 @@
# Attribute Reference
## Purpose
Этот документ фиксирует атрибуты в компактной рабочей форме: что делает каждый атрибут, какие derived stats он двигает, от каких систем зависит и куда отдает влияние.
## Related Docs
- `docs/gameplay/attribute-system-gdd.md`
- `docs/gameplay/stat-catalog-mvp.md`
- `docs/gameplay/combat-resolution-gdd.md`
## System Position
Атрибуты находятся между базовой конфигурацией персонажа и итоговыми боевыми расчетами.
Поток данных:
`Class Definition / Level / Equipment / Buffs / Skills` -> `Attributes` -> `Derived Stats / Resource Pools` -> `Combat Resolution`
## Attribute Sources
Каждый атрибут может получать значение из следующих источников:
- базовое стартовое значение персонажа
- класс и class affinity
- уровень персонажа
- экипировка
- временные бафы и дебафы
- weapon-specific modifiers
- skill-specific modifiers
## Attribute Rules
- атрибуты не должны напрямую дублировать друг друга
- offensive и defensive ценность должны быть разведены
- derived stats считаются из атрибутов по stat buckets, а не через один общий полный пересчет
- `Мастерство` не заменяет основной классовый атрибут, а усиливает специализацию
## Attributes
### Мощь
Роль:
- силовое давление
- пробивание защиты
- тяжелая физическая подача
Основные derived stats:
- `Damage` для melee
- `Heavy Projectile Scaling`
- `Armor Penetration`
- `Block Power`
Вторичные эффекты:
- усиление силовых weapon skills
- усиление shield/guard-oriented действий
Зависит от:
- класса
- уровня персонажа
- оружия
- экипировки
- временных offensive бафов
Влияет на системы:
- базовый урон оружия
- skill damage scaling
- penetration pass в combat resolution
- блок, щит и guard interactions
Основные классы:
- Воин: основной
- Лучник: вторичный для heavy build
- Маг: почти не нужен
### Ловкость
Роль:
- скорость действий
- точность и контроль оружия
- качество критических окон
Основные derived stats:
- `Attack Speed`
- `Crit Chance`
- `Crit Quality`
- `Projectile Speed`
- `Move Speed`
Вторичные эффекты:
- reload/draw speed
- precision handling
- ограниченные anti-slow бонусы
Зависит от:
- класса
- уровня персонажа
- оружия
- экипировки
- mobility и precision бафов
Влияет на системы:
- attack cadence
- crit resolution
- projectile handling
- movement utility
Основные классы:
- Лучник: основной
- Воин: вторичный
- Маг: ситуативный для battle-mage
### Фокус
Роль:
- магическая сила
- контроль каста
- мана и статусное давление
Основные derived stats:
- `Mana`
- `Mana Regen`
- `Spell Power`
- `Status Power`
- часть `Magic Resist`
Вторичные эффекты:
- `Cast Speed`
- AOE scaling там, где это задается skill archetype
- spell penetration hooks через mastery/skill layer
- часть магической защиты через совместный scaling с `Мастерством`
Зависит от:
- класса
- уровня персонажа
- оружия или cast source
- экипировки
- caster-бафов
Влияет на системы:
- mana-based skill resource hooks
- spell damage scaling
- status application
- magic mitigation
Основные классы:
- Маг: основной
- Воин: нужен гибридам
- Лучник: почти не нужен
### Стойкость
Роль:
- выживание
- удержание темпа боя
- сопротивление срывам действий
Основные derived stats:
- `HP`
- `HP Regen`
- `Stamina`
- `Armor`
- `Control Resist`
- `Stagger Resist`
Вторичные эффекты:
- `Debuff Duration Reduction`
- small mitigation
- interrupt resistance
- часть физической выносливости и recovery stability
Зависит от:
- класса
- уровня персонажа
- экипировки
- defensive бафов
Влияет на системы:
- max health pool
- stamina pool support
- defense pass
- control and stagger resolution
- sustain
Основные классы:
- Воин: основной или второй основной
- Маг: defensive stat
- Лучник: defensive stat
### Мастерство
Роль:
- качество билда
- class-specific специализация
- усиление archetype identity
Основные derived stats:
- `Mastery Bonus`
- `Weak Spot Bonus`
- `Projectile Control`
- `Cast Refinement`
- часть `Magic Resist`
- class-specific scaling hooks
Вторичные эффекты:
- cleave quality
- bleed/stagger intensity
- precision bonuses
- spell shaping
- resource efficiency hooks по archetype
Зависит от:
- класса
- weapon archetype
- skill archetype
- экипировки
- mastery-бафов
Влияет на системы:
- class mechanic scaling
- skill specialization
- weak spot logic
- status quality
- magic mitigation synergy
- weapon-specific hooks
Основные классы:
- важен для всех
- масштабируется по-разному по archetype
## Dependency Map
### Resource Links
- `Стойкость` -> `HP`, `HP Regen`, `Stamina Pool`
- `Ловкость` -> `Stamina Regen`, tempo recovery, mobility efficiency
- `Фокус` -> `Mana`, `Mana Regen`, spell-facing resource scaling, part of magic mitigation
- `Мастерство` -> class-specific resource efficiency hooks
`Magic Resist` собирается не из одного источника, а из сочетания `Фокуса`, `Мастерства` и экипировки.
`HP`, `Stamina` и `Mana` являются разными ресурсными пулами. `Фокус` не является главным источником `Stamina`.
`Stamina` не должна выступать постоянным налогом на базовый loop. В MVP она ограничивает сильные физические действия, dodge/sprint и weapon-heavy commitments.
### Upstream To Attributes
- `Class Definition` задает стартовые значения и приоритеты
- `Level Progression` добавляет рост или allocation points
- `Equipment` дает flat и percent modifiers
- `Buff System` дает временные modifiers
- `Weapon` и `Skill` могут добавлять context-specific modifiers
### Attributes To Derived Stats
- `Мощь` -> physical offense bucket
- `Ловкость` -> speed/crit/projectile bucket и stamina recovery hooks
- `Фокус` -> caster/mana bucket и part of magic mitigation
- `Стойкость` -> defense/sustain bucket и stamina pool support
- `Мастерство` -> specialization hooks, quality modifiers и part of magic mitigation
### Derived Stats To Combat Systems
- offense stats -> damage build, crit resolution, penetration
- caster stats -> mana checks, spell scaling, status apply
- defense stats -> mitigation, HP pool, stamina pool, control resistance
- mastery hooks -> weak spot, proc quality, archetype-specific modifiers
## Implementation Notes
- атрибуты должны быть каноническим intermediate layer между class/equipment data и combat formulas
- derived stats нельзя рассчитывать напрямую из UI или отдельных skill-скриптов
- каждая система должна брать итоговые derived stats, а не заново интерпретировать атрибуты по своим правилам
## Final Position
Атрибуты должны быть компактным и стабильным слоем данных: немного входов, предсказуемые выходы, минимум дублирования. Основные связи должны идти через общие derived stat buckets и общий combat pipeline.
@@ -0,0 +1,212 @@
# Attribute Stats Visibility MVP
## Purpose
Этот документ фиксирует, какие derived stats должны быть видимы игроку в MVP, какие можно показывать только в расширенном виде, а какие должны оставаться внутренними runtime-параметрами.
Отдельная цель документа - зафиксировать легковесный подход к обновлению статов: система не должна постоянно пересчитывать весь набор характеристик, если можно применять только минимальные изменения к уже подготовленным значениям.
## Related Docs
- `docs/gameplay/attribute-system-gdd.md`
- `docs/gameplay/attribute-reference.md`
- `docs/gameplay/stat-catalog-mvp.md`
- `docs/gameplay/combat-resolution-gdd.md`
## UI Philosophy
Для MVP игрок должен видеть минимум информации, но этот минимум должен быть полезным.
- игрок должен понимать, что прокачка реально меняет боевую эффективность
- экран характеристик не должен превращаться в таблицу внутренних коэффициентов
- основные сложные расчеты должны оставаться под капотом
- вторичные и технические derived stats лучше не показывать, если они не помогают принимать решения в билде
Главный принцип: отображать только те числа, которые игрок может быстро связать со своим ощущением в бою.
## Performance Philosophy
Система статов должна быть легковесной и быстрой.
- не пересчитывать весь stat sheet каждый кадр
- не пересчитывать все derived stats при любом мелком изменении
- хранить базовые атрибуты и заранее выделенные группы derived stats отдельно
- применять только минимальные модификаторы к затронутым группам статов
- обновлять итоговые значения по событию, а не по постоянному polling
Рекомендуемый runtime-подход для MVP:
- есть `base attributes`
- есть `derived stat buckets`
- есть `modifiers` от экипировки, класса, бафов и навыков
- есть `dirty flags` или аналогичная пометка затронутых групп
- при изменении источника обновляется только нужный bucket, а не весь персонаж целиком
Пример групп пересчета:
- offensive bucket: damage, attack speed, crit, penetration
- resource bucket: mana, mana regen, stamina, stamina regen
- caster bucket: spell power, cast speed, status power
- defense bucket: HP, HP regen, armor, control resist, stagger resist
- utility bucket: move speed, projectile speed, reload modifiers, class-specific mastery bonuses
Если меняется только `Стойкость`, нет причины пересчитывать весь ranged или caster stack. Если меняется только бонус на projectile speed, не нужно заново собирать защитные статы.
## MVP Main Stats
Это основные числа, которые стоит показывать в базовом MVP UI.
- `HP`
- `Stamina`
- `Mana`
- `Damage`
- `Attack Speed`
- `Armor`
- `Move Speed`
Правила показа:
- `Damage` должен быть приведен к понятной игроку форме, без раскрытия всех внутренних коэффициентов
- `Stamina` должна отображаться как ресурс сильных физических действий, dodge/sprint и weapon-heavy commitments, а не как постоянный налог на базовый бой
- `Mana` должна отображаться как магический ресурс каста и spell-oriented умений
- `Armor` лучше показывать как единое защитное число для MVP, если отдельный breakdown еще не нужен
- `Move Speed` полезен, потому что напрямую ощущается руками в top-down action RPG
Почему именно этот набор:
- он достаточно мал, чтобы не перегружать интерфейс
- он покрывает offensive, defensive и utility-изменения
- игрок видит, что числа меняются от атрибутов, оружия и экипировки
- сложные производные параметры при этом остаются скрытыми
## Advanced Stats
Эти статы не обязаны быть видны в основном экране, но могут отображаться в detail view, tooltip, расширенной панели или отладочном UI.
- `HP Regen`
- `Stamina Regen`
- `Mana Regen`
- `Cast Speed`
- `Crit Chance`
- `Magic Resist`
- `Armor Penetration`
- `Control Resist`
- `Status Power`
- `Block Power`
- `Projectile Speed`
- `Mastery Bonus`
Правила показа:
- `Mastery Bonus` лучше показывать не как абстрактное число, а как контекстный бонус класса, оружия или archetype
- `Crit Chance` и `Cast Speed` полезны только если соответствующий archetype реально на них опирается
- `Magic Resist` не нужно тащить в основной экран, если магические угрозы еще не занимают большую долю MVP-боя
- `Projectile Speed` и `Block Power` стоит показывать только когда игрок использует подходящее оружие или билд
- `Magic Resist` в advanced view должна читаться как итог из `Фокуса`, `Мастерства` и экипировки, а не как прямой показатель одного атрибута
Почему это не main UI:
- эти статы уже полезны для билдостроения, но не нужны каждую секунду
- без контекста они быстро создают лишний визуальный шум
- часть из них зависит от класса или weapon archetype и не обязана быть всегда релевантной
## Hidden Runtime Stats
Эти значения должны оставаться внутренними runtime-параметрами и не обязаны отображаться игроку в MVP.
- `crit quality`
- `weak spot multiplier`
- `headshot precision bonus`
- `debuff duration reduction` как отдельное техническое число
- `stagger threshold modifiers`
- `interrupt resistance coefficients`
- `anti-slow coefficients`
- `friendly fire reduction`
- `projectile control coefficients`
- `reload window modifiers`
- внутренние `mastery conversion rules`
- soft cap thresholds и post-cap diminishing returns
- служебные class-specific multipliers
- промежуточные коэффициенты скейлинга оружия и навыков
Почему эти статы нужно скрывать:
- они в основном полезны движку, а не игроку
- многие из них не читаются без длинного системного контекста
- их отображение повышает шум, но не улучшает качество решений в MVP
- часть этих параметров еще может меняться при балансировке и не должна закрепляться в UI слишком рано
## Attribute To UI Mapping
Чтобы игрок видел связь атрибутов с результатом, но без перегруза, для MVP рекомендуется такой уровень читаемости:
- `Мощь` в основном проявляется через `Damage`
- `Ловкость` в основном проявляется через `Attack Speed` и частично `Move Speed`
- `Фокус` в основном проявляется через `Mana`
- `Стойкость` в основном проявляется через `HP` и частично `Armor`
- `Stamina` в основном читается как отдельный физический ресурс, который поддерживается `Стойкостью`, `Ловкостью`, классом и экипировкой
- `Мастерство` в основном проявляется через контекстный `Mastery Bonus` в advanced view, а не как центральный main stat
Это дает игроку понятную обратную связь, но не заставляет UI раскрывать весь внутренний combat math.
## Runtime Update Model
Для MVP рекомендуется событийная модель обновления статов.
Источники изменений:
- изменение атрибутов персонажа
- смена класса или class state
- экипировка или снятие предмета
- применение бафа или дебафа
- смена оружия
- активация временного skill modifier
Правила обновления:
- каждое изменение должно помечать только затронутые stat buckets
- derived stats пересчитываются только по dirty-группам
- UI обновляется только если изменились отображаемые main или advanced stats
- hidden runtime stats могут обновляться вместе со своим bucket, но не должны триггерить лишние UI refresh
- ресурсные пулы и их автопополнение должны обновляться отдельно от offense/defense bucket, если изменение не затрагивает другие группы
- `Stamina` изменения должны отдельно обновлять pool и regen, чтобы heavy-weapon pressure или dodge-расход не вызывали лишний пересчет unrelated боевых bucket
Для MVP нежелательно:
- полный пересчет всех статов на каждом тике
- хранение одной гигантской формулы для всех классов и всех источников сразу
- постоянная сборка UI-строк из runtime-модели без кэша итоговых значений
## Recommended MVP Contract
Минимальный контракт для практической реализации:
- `MVP Main Stats`
- `HP`
- `Stamina`
- `Mana`
- `Damage`
- `Attack Speed`
- `Armor`
- `Move Speed`
- `Advanced Stats`
- `HP Regen`
- `Stamina Regen`
- `Mana Regen`
- `Cast Speed`
- `Crit Chance`
- `Magic Resist`
- `Armor Penetration`
- `Control Resist`
- `Status Power`
- `Block Power`
- `Projectile Speed`
- `Mastery Bonus`
- `Hidden Runtime Stats`
- все внутренние коэффициенты, soft caps, class hooks и промежуточные combat modifiers
## Final Position
Для MVP UI нужно показывать мало, но полезно. Игрок должен видеть, что его персонаж стал сильнее, быстрее или живучее, не погружаясь в технические детали формул.
Основной массив derived stats должен оставаться под капотом. Runtime-система должна обновлять только затронутые группы характеристик и не выполнять полный пересчет без необходимости. Это даст одновременно чистый UI и легковесную реализацию.
+348
View File
@@ -0,0 +1,348 @@
# Attribute System GDD
## Purpose
Этот документ фиксирует канонический дизайн системы атрибутов для боевого ядра, классов, оружия и навыков. Система должна давать игроку понятные и ощущаемые боевые эффекты от прокачки, но при этом не схлопываться в 1-2 обязательных суперстата.
## Design Goals
- каждый атрибут должен конвертироваться в понятный gameplay-эффект, который игрок чувствует в бою
- один атрибут должен влиять сразу на несколько связанных боевых показателей, а не быть узкой +1 характеристикой
- урон и живучесть не должны быть слиты в один лучший стат
- система должна одинаково хорошо поддерживать Воина, Лучника, Мага и будущие классы
- рост параметров должен быть контролируемым, чтобы малые бонусы оставались значимыми на протяжении всей игры
- у билдов должен быть отдельный слой идентичности, а не только линейный рост raw stats
## Design Principles
Система вдохновляется не буквальной схемой `STR/AGI/INT`, а принципом, при котором атрибуты сразу переводятся в боевые последствия. Игрок должен понимать, зачем он вкладывается в стат, без необходимости читать сложные формулы.
Ключевой принцип баланса: offensive pressure и defensive survivability разведены по разным атрибутам. Если один и тот же стат одновременно дает лучший урон и лучшую выживаемость, то он становится доминирующей инвестицией и ломает разнообразие билдов.
Третий принцип - bounded scaling. Атрибуты должны усиливать персонажа заметно, но в контролируемых пределах. Система не должна быстро приходить к состоянию, где старые бонусы теряют смысл, а различия между сборками превращаются в чисто математический отрыв.
## Attribute Summary
| Атрибут | Роль | Основные эффекты | Кому важен |
| --- | --- | --- | --- |
| Мощь | давление и силовой урон | melee damage, heavy projectile scaling, armor penetration, shield/block power | Воин, heavy Лучник |
| Ловкость | скорость и контроль оружия | attack speed, projectile handling, crit quality, move speed in soft cap | Лучник, mobile Воин |
| Фокус | магическая сила и контроль маны | spell power, mana pool, mana regen, status power, part of magic resistance | Маг, hybrid классы |
| Стойкость | живучесть и удержание темпа боя | HP, HP regen, debuff resistance, stagger resistance, small general mitigation | Воин, defensive сборки |
| Мастерство | качество билда и class-specific scaling | weapon/skill specialization, class mechanic efficiency, application quality | все классы |
## Why Five Attributes
Пять атрибутов закрывают базовые боевые потребности без перегруза системы.
- `Мощь` отвечает за силовое давление и пробивание защиты.
- `Ловкость` отвечает за скорость, контроль и отзывчивость оружия.
- `Фокус` отвечает за магию, ману и статусное давление.
- `Стойкость` отвечает за выживание и стабильность в бою.
- `Мастерство` отвечает за качество применения архетипа, оружия и умений.
Первые четыре атрибута закрывают фундаментальные боевые оси. Пятый нужен для того, чтобы билды различались не только величиной урона, скорости или здоровья, но и стилем применения инструментов персонажа.
## Attribute Details
## Resource Model
В MVP используются три отдельные ресурсные оси:
- `HP` - запас жизни, в основном зависит от `Стойкости`
- `Stamina` - ресурс сильных физических, мобильных и weapon-heavy действий
- `Mana` - ресурс магии, каста и spell-oriented действий
У каждого ресурса есть свой стат автопополнения:
- `HP Regen`
- `Stamina Regen`
- `Mana Regen`
Правила модели:
- `Фокус` усиливает `Mana` и `Mana Regen`, а не любой абстрактный ресурс
- `Stamina` не является магическим ресурсом и не должна жить внутри `Фокуса`
- `Стойкость` отвечает за `HP` и поддерживает физическую выносливость через `Stamina Pool`
- `Ловкость` поддерживает темп физических действий через `Stamina Regen` и связанные recovery-модификаторы
- базовый бой не должен часто упираться в пустую `Stamina`; этот ресурс ограничивает прежде всего сильные действия, а не core-rotation персонажа
- `Stamina Regen` должен быть быстрым, чтобы не ломать темп open world ARPG
- если `Stamina` уходит в ноль, система должна скорее ограничивать burst-опции через short exhaustion pressure, чем надолго выключать игроку базовые действия
Рекомендуемая зона применения `Stamina` в MVP:
- dodge
- sprint
- block/guard upkeep
- heavy melee attacks
- charged ranged shots
- weapon-heavy abilities и силовые mobility skills
Что не должно становиться основным налогом `Stamina` в MVP:
- базовая легкая атака
- простая core-rotation без heavy-commitment действий
- обычное перемещение вне sprint state
### Мощь
`Мощь` - это атрибут силы удара и продавливания защиты.
Что усиливает:
- урон ближнего боя
- часть урона тяжелых projectile-атак и тяжелых weapon skills
- пробивание брони или физического сопротивления
- силу щитов, блоков и силовых defensive interactions у воина
Почему атрибут нужен:
- каждая инвестиция должна делать силовой билд ощутимо опаснее
- Воин должен чувствовать, что стат усиливает давление, а не просто увеличивает запас здоровья
- Лучник с тяжелым арбалетом или другим медленным силовым ranged archetype может частично использовать этот стат
Классовый приоритет:
- Воин: основной
- Лучник: вторичный для heavy build
- Маг: почти не нужен
Дизайн-ограничение:
`Мощь` не должна быть источником большого запаса HP. Иначе силовые билды автоматически получают и лучший урон, и лучшую танковость за одну и ту же инвестицию.
### Ловкость
`Ловкость` - это атрибут скорости, точности и контроля оружия или снаряда.
Что усиливает:
- скорость атаки
- скорость натяжения, выпуска или перезарядки projectile-оружия
- шанс крита, точность крита или общее качество критических попаданий
- скорость перемещения в мягком капе
- скорость projectile и контроль полета
- очень малый объем уклонения, анти-замедления или recovery от slow-эффектов
Почему атрибут нужен:
- это основной stat fantasy для лучника и мобильных билдов
- в top-down 3D скорость и отзывчивость особенно хорошо ощущаются руками
- стат должен давать чувство живости, а не быть абстрактной прибавкой к защите
Классовый приоритет:
- Лучник: основной
- Воин: вторичный
- Маг: ситуативный для battle-mage и мобильных гибридов
Дизайн-ограничение:
`Ловкость` не должна повторять классическую схему, где один стат одновременно дает много скорости, много защиты и высокую эффективность без trade-off. Defensive бонусы здесь должны оставаться малыми.
### Фокус
`Фокус` - это атрибут магической силы, контроля заклинания и маны.
Что усиливает:
- силу заклинаний
- максимальную ману
- реген маны
- силу или размер AOE-навыков, если это уместно для конкретного skill archetype
- шанс наложить статус, силу статуса или надежность применения status effects
- часть сопротивления магии вместе с `Мастерством`
Почему не `Интеллект`:
- этот стат не про ум персонажа, а про контроль магии и концентрацию
- название лучше подходит для action RPG без упора на диалоговую ролевую фантазию
- оно одинаково естественно звучит для мага, паладина, шамана, некроманта и других гибридов
Классовый приоритет:
- Маг: основной
- Воин: нужен только гибридным классам
- Лучник: почти не нужен
Дизайн-ограничение:
`Фокус` не должен превращаться в универсальный магический суперстат, который одновременно дает лучший урон, бесконечный ресурс и самодостаточную защиту от магии. Магическая защита должна собираться через сочетание `Фокуса`, `Мастерства` и экипировки, а не через один единственный stat.
### Стойкость
`Стойкость` - это атрибут живучести и удержания темпа боя.
Что усиливает:
- HP
- реген HP
- сопротивление контролю
- снижение длительности дебаффов
- устойчивость к stagger, interrupt и срывам действия
- немного брони или общего damage reduction
Почему атрибут критичен:
- живучесть должна иметь собственную цену в билде
- вынесение HP из `Мощи` убирает очевидный перекос в пользу силовых персонажей
- defensive investment должна быть осознанным выбором, а не бесплатным бонусом к offensive stat
Классовый приоритет:
- Воин: основной или второй основной
- Маг: нужен для выживания
- Лучник: нужен как defensive stat
Дизайн-ограничение:
`Стойкость` должна усиливать survivability и стабильность, но не делать персонажа пассивно неуязвимым. Главная цель - дать возможность держать бой, а не отключить угрозу от вражеских действий.
### Мастерство
`Мастерство` - это ключевой уникальный атрибут системы. Он не заменяет базовые offensive или defensive характеристики, а усиливает качество применения class-specific инструментов.
Что усиливает:
- эффективность классовой механики
- качество применения оружия или навыка
- точность и надежность archetype-specific взаимодействий
- специализацию билда без превращения ее в еще один raw damage stat
Примеры по классам:
- Воин: радиус взмаха, cleave, шанс вызвать bleed, сила stagger
- Маг: скорость каста, сила статусов, bonus radius, spell penetration, снижение friendly fire там, где это поддерживается дизайном
- Лучник: pierce, weak spot damage, скорость reload, projectile control, бонус к precision/headshot логике
Почему атрибут нужен:
- четыре базовых стата закрывают фундамент, но не дают достаточно места для выразительной специализации
- `Мастерство` позволяет собирать не просто более сильного персонажа, а более характерный билд
- через этот атрибут проще добавлять будущие классы, не ломая базовый каркас атрибутов
Классовый приоритет:
- важен для всех классов
- масштабируется по-разному в зависимости от archetype
- является главным stat identity для билда
Дизайн-ограничение:
`Мастерство` не должно полностью заменять основной стат класса. Оно усиливает стиль и специализацию, но не должно превращаться в обязательный лучший выбор для любого персонажа вне контекста конкретной сборки.
## Class Priorities
### Воин
- основные атрибуты: `Мощь`, `Стойкость`
- важный специализационный атрибут: `Мастерство`
- вторичные варианты: `Ловкость` для более живого melee-профиля, `Фокус` только для гибридов
Воин должен ощущаться как класс силового давления, который вкладывается в урон и выживание по разным осям. Это поддерживает выбор между bruiser, tankier frontline и weapon-specialist сборками.
### Лучник
- основные атрибуты: `Ловкость`, `Мастерство`
- вторичный атрибут: `Мощь` для heavy ranged build
- defensive fallback: `Стойкость`
Лучник должен чувствоваться быстрым, точным и техническим. Его билды должны различаться между мобильным pressure-профилем, тяжелым projectile-профилем и precision-специализацией.
### Маг
- основные атрибуты: `Фокус`, `Мастерство`
- defensive fallback: `Стойкость`
- ситуативный атрибут: `Ловкость` для battle-mage или кастера с мобильным ритмом
Маг должен строиться вокруг контроля ресурса, силы заклинаний и качества применения эффектов, а не вокруг прямого аналога `интеллект = все полезное для мага`.
## Derived Combat Directions
Атрибуты должны маппиться в производные боевые параметры, которые используются combat core, оружием и навыками. Канонический набор направлений на данном этапе такой:
- `Мощь`: melee damage, heavy projectile scaling, armor penetration, block/shield power
- `Ловкость`: attack speed, reload/draw speed, crit quality, projectile speed, limited move speed bonus
- `Фокус`: spell power, mana pool, mana regen, status application, part of magic resistance
- `Стойкость`: max HP, HP regen, control resistance, debuff duration reduction, stagger resistance, small mitigation
- `Мастерство`: class mechanic efficiency, weapon/skill specialization, archetype-specific bonuses
Этот документ фиксирует направления скейлинга, но не фиксирует окончательные формулы. Конкретные коэффициенты, soft caps и конверсии должны быть утверждены вместе с combat core и progression formulas.
## Balance Rules
- offensive и defensive ценность должны требовать разных инвестиций
- один атрибут не должен одновременно давать лучшую survivability и лучший damage throughput
- secondary defensive бонусы на `Ловкости` и `Фокусе` должны быть малыми и служить flavor/utility, а не заменой `Стойкости`
- `Мастерство` должно усиливать специализацию, а не быть универсальным глобальным damage multiplier для всех
- классовая эффективность должна строиться на сочетании core stat + optional specialization, а не на одном обязательном стате
- новый класс должен встраиваться в те же пять атрибутов без создания отдельного шестого stat-пула
- `Stamina` должна ограничивать сильные и commitment-heavy действия, но не должна постоянно отключать базовый loop немагических билдов
- `Magic Resist` не должна полностью сидеть в `Фокусе`; итоговая магическая защита должна собираться через `Фокус`, `Мастерство` и экипировку
## Scaling Philosophy
Система должна следовать bounded scaling-подходу.
- небольшие бонусы должны оставаться значимыми на протяжении игры
- soft caps предпочтительнее жестких капов там, где речь идет о скорости, мобильности и spam-sensitive показателях
- прирост эффективности должен быть читаемым, но не взрывным
- ранние инвестиции должны ощущаться особенно хорошо, а поздние не должны полностью ломать PvE-баланс
Это особенно важно для top-down action RPG, где игрок чувствует руками скорость атаки, скорость движения, время каста и контроль персонажа. Статы должны менять поведение персонажа не только на листе характеристик, но и в непосредственном управлении.
## Example Build Directions
### Warrior Bruiser
Опирается на `Мощь` + `Стойкость`, а `Мастерство` добирает cleave, bleed или stagger-oriented механику.
### Heavy Crossbow Archer
Опирается на `Ловкость` для handling и cadence, но заметно использует `Мощь` для тяжелого projectile-профиля. `Мастерство` усиливает pierce и precision windows.
### Control Mage
Опирается на `Фокус` как главный источник силы заклинаний и статусов, а `Мастерство` усиливает надежность контроля, radius tuning и penetration.
### Battle Mage
Опирается на `Фокус` как основу, но может частично забирать `Ловкость` ради ритма боя и `Стойкость` ради безопасного ведения ближне-средней дистанции.
### Heavy Weapon Fighter
Опирается на `Мощь` для давления и на `Стойкость` для `Stamina Pool`, а `Ловкость` поддерживает быстрое восстановление `Stamina` между тяжелыми commit-действиями. Такой билд должен ощущаться как серия мощных окон, а не как постоянная игра в пустую полоску выносливости.
## Integration Notes
Этот документ является каноническим design intent для следующих систем:
- базовые характеристики и derived stats в combat core
- стартовые и приоритетные статы классов
- scaling оружия и weapon archetypes
- skill scaling и class-specific specialization hooks
Связанный документ по слоям видимости статов и легковесному runtime-обновлению:
- `docs/gameplay/attribute-stats-visibility-mvp.md`
Связанные канонические документы по структуре атрибутов, каталогу статов и боевому pipeline:
- `docs/gameplay/attribute-reference.md`
- `docs/gameplay/stat-catalog-mvp.md`
- `docs/gameplay/combat-resolution-gdd.md`
Связанные документы и задачи:
- `docs/tasks/items/TASK-0007.md`
- `docs/tasks/items/TASK-0009.md`
- `docs/tasks/items/TASK-0010.md`
- `docs/tasks/items/TASK-0011.md`
Если в будущем runtime-формулы потребуют уточнений, этот GDD должен оставаться источником смысла и направлений, а не заменяться низкоуровневыми числовыми таблицами.
## Final Position
Система атрибутов строится вокруг пяти осей: давление, скорость, магия, живучесть и мастерство применения. Ее уникальность не в переименовании классических статов, а в четком разделении боевых ролей и наличии `Мастерства` как отдельного инструмента билдовой идентичности.
Это позволяет сохранить читаемость, избежать доминирующего суперстата и подготовить фундамент для расширения классовой системы без переработки базовой модели персонажа.
+344
View File
@@ -0,0 +1,344 @@
# Combat Resolution GDD
## Purpose
Этот документ фиксирует единый порядок расчета боевого действия, правила псевдорандома и место `crit`, `weak spot`, `status` и защитных расчетов в общем pipeline.
## Related Docs
- `docs/gameplay/attribute-system-gdd.md`
- `docs/gameplay/attribute-reference.md`
- `docs/gameplay/stat-catalog-mvp.md`
- `docs/gameplay/attribute-stats-visibility-mvp.md`
## Design Goals
- один общий combat pipeline для игрока, врага, оружия и навыков
- chance-based события должны ощущаться честно и стабильно
- в action RPG физический контакт не должен часто превращаться в нелогичный miss
- `crit`, `weak spot`, `penetration`, `status` и `stagger` должны быть частью одной цепочки, а не отдельными системами
- сервер должен быть источником истины для всех roll-based результатов
## Core Position
Для MVP pseudo-random distribution применяется к chance-based исходам, но не заменяет фактическую физику попадания.
То есть:
- hitbox, projectile impact и valid AoE contact сначала определяют, был ли контакт
- только после этого идут roll-based проверки
- псевдорандом используется для уменьшения длинных серий неудач и успехов
## Combat Pipeline
### 1. Action Start
Система получает попытку действия:
- melee attack
- projectile attack
- cast skill
- area effect
- block/guard reaction
Перед выполнением действия проверяется resource gate.
Проверяется:
- использует ли действие `Mana`, `Stamina` или не использует отдельный ресурс
- хватает ли нужного ресурса для старта
- есть ли специальные cost modifiers от класса, оружия, навыка или `Мастерства`
Правила resource gate для MVP:
- `Stamina` используется для dodge, sprint, block/guard upkeep, heavy attacks, charged attacks и weapon-heavy abilities
- базовая легкая атака и простой core loop не должны регулярно блокироваться отсутствием `Stamina`
- если `Stamina` исчерпана, игрок в первую очередь теряет доступ к сильным commit-действиям или получает short exhaustion pressure, а не полностью выключается из боя
- `Stamina Regen` должен быть быстрым, чтобы темп open world ARPG не разваливался даже в PvP и затяжных PvE-сценариях
На этом этапе определяются:
- источник действия
- тип действия
- weapon archetype
- skill archetype
- target rules
- resource type
- resource cost
### 2. Contact Resolution
Система определяет, был ли валидный контакт.
Примеры:
- melee через hitbox/overlap
- ranged через projectile collision
- spell через trace, overlap или target validation
- AoE через положение цели внутри области
Результат этапа:
- `No Contact` -> дальнейшие offensive roll-этапы не выполняются
- `Valid Contact` -> переход к следующему шагу
### 3. Server Validation
Сервер проверяет:
- допустимость действия
- валидность target
- допустимость дистанции, угла, времени и состояния
- отсутствие фальшивого попадания со стороны клиента
### 4. Hit Quality Resolution
Для MVP рекомендуется модель без обязательного stat-based miss после уже произошедшего контакта.
То есть:
- если действие физически попало и прошло валидацию сервера, это считается попаданием
- `Accuracy` и `Evasion` не являются обязательным MVP-слоем
Если позже потребуется accuracy-модель:
- она должна стоять здесь
- она должна использовать отдельный PRD accumulator
- ее нельзя смешивать с crit или status rolls
### 5. Critical Resolution
`Crit` считается как комбинация трех разных сущностей.
#### Crit Chance
Отвечает на вопрос: сработал ли крит.
Источники:
- `Ловкость`
- weapon modifiers
- buffs/debuffs
- часть `Мастерства` у precision-архетипов
Правило:
- `Crit Chance` является chance-based stat
- для него используется PRD
#### Crit Quality
Отвечает на вопрос: насколько сильным будет крит.
Источники:
- `Ловкость`
- `Мастерство`
- weapon archetype
- skill modifiers
Правило:
- `Crit Quality` не определяет факт крита
- `Crit Quality` определяет величину бонуса при уже успешном crit roll
#### Weak Spot Logic
Отвечает на вопрос: было ли точное позиционное или skill-based попадание в уязвимую зону.
Источники:
- hit zone
- angle or position check
- weapon type
- skill archetype
- `Мастерство`
Правило:
- `Weak Spot` не заменяет `Crit Chance`
- `Weak Spot` является skill-based усилителем
- при наличии weak spot попадание может усиливать crit или давать отдельный bonus layer
## Recommended Crit Model
Каноническая схема для MVP:
1. определить факт контакта
2. выполнить `Crit Chance` через PRD
3. при успехе применить `Crit Quality`
4. если сработал `Weak Spot`, усилить итог крита или применить отдельный precision bonus
Это дает:
- случайность для крита
- контролируемую силу крита
- отдельную награду за точное исполнение
## Base Damage Build
После того как подтверждено попадание и разрешены crit/precision-модификаторы, строится базовый урон.
В расчет входят:
- weapon base values
- skill coefficients
- уровень оружия
- relevant derived offense stats
- `Мощь`, `Фокус` и другие атрибутные конверсии через derived stats
- `Мастерство` как specialization modifier
Правило:
- оружие и навыки не должны считать урон по собственным отдельным формулам в обход общего offense build
## Penetration And Defense Pass
После построения offense value применяется защитный проход.
Участвуют:
- `Armor`
- `Magic Resist`
- `Armor Penetration`
- `Spell Penetration`, если введен для archetype
- small mitigation и другие defense modifiers
Правило источников магической защиты:
- `Magic Resist` формируется из сочетания `Фокуса`, `Мастерства` и экипировки
- ни `Фокус`, ни `Мастерство` по отдельности не должны давать самодостаточную магическую защиту
Порядок на MVP:
1. определить тип урона
2. выбрать релевантную защиту
3. применить penetration
4. применить mitigation
## Block And Guard Pass
Если у цели есть активный или пассивный defensive response, он обрабатывается после основного defense pass или как его часть, но в одном каноническом месте.
Участвуют:
- `Block Power`
- shield modifiers
- guard state
- directional defense rules
## Status Resolution
После разрешения основного урона система считает статусные эффекты.
Участвуют:
- `Status Power`
- skill status modifiers
- target resist hooks
- mastery hooks
Если эффект chance-based:
- применяется отдельный PRD accumulator
Примеры:
- bleed
- burn
- poison
- shock
- slow proc
## Stagger And Control Resolution
После урона и статусов обрабатываются control-related последствия.
Участвуют:
- stagger power
- `Stagger Resist`
- `Control Resist`
- `Debuff Duration Reduction`
- interrupt resistance
Правило:
- длительность и сила контроля не должны жить в отдельной автономной формуле вне общего pipeline
## Pseudo-Random Distribution Rules
### Scope
PRD используется только для chance-based событий.
Рекомендуемые MVP-области:
- `Crit Chance`
- chance-based `Status Apply`
- chance-based `Proc Effects`
Не использовать для MVP:
- фактического projectile contact
- melee hitbox contact
- AoE presence check
### PRD State
Для каждого roll type хранится отдельное состояние.
Минимальный состав:
- `roll type`
- `base chance`
- `failure streak`
- `current adjusted chance`
Разделять состояния по типам:
- `Crit PRD`
- `Status PRD`
- `Proc PRD`
- `Accuracy PRD`, только если accuracy-layer появится позже
### PRD Behavior
- после неуспеха шанс немного растет
- после успеха streak сбрасывается
- итоговый шанс не должен слишком быстро гарантировать успех
- PRD работает на сервере
- клиент может показывать только результат, но не хранить authoritative PRD state
## System Links
### Attributes To Combat
- `Мощь` -> physical damage, heavy impact, penetration, block power
- `Ловкость` -> cadence, crit chance, crit quality, projectile handling, stamina recovery
- `Фокус` -> spell power, mana, status power, part of magic mitigation
- `Стойкость` -> HP, stamina pool, mitigation, control resistance, stagger resistance
- `Мастерство` -> weak spot bonuses, proc quality, archetype specialization, part of magic mitigation
### Weapons To Combat
- задают base damage
- задают hit delivery method
- задают часть crit, penetration и block hooks
### Skills To Combat
- задают execution pattern
- задают mana consumption или stamina consumption
- задают coefficients и status hooks
- задают mastery-specific behavior
### Classes To Combat
- задают стартовые attribute priorities
- задают class affinity
- задают доступ к разным mastery conversion rules
## Final Position
Для MVP бой должен считаться в одном общем pipeline: контакт, валидация, crit/precision, offense build, defense pass, status, control. Псевдорандом нужен для chance-based механик и должен жить как отдельный серверный слой, а не как замена физическому попаданию.
+211
View File
@@ -0,0 +1,211 @@
# Stat Catalog MVP
## Purpose
Этот документ фиксирует единый список всех статов MVP, их системную роль, слой видимости и основные связи с атрибутами, классами, оружием, навыками и combat resolution.
## Related Docs
- `docs/gameplay/attribute-system-gdd.md`
- `docs/gameplay/attribute-reference.md`
- `docs/gameplay/attribute-stats-visibility-mvp.md`
- `docs/gameplay/combat-resolution-gdd.md`
## Stat Layers
Все статы делятся на четыре слоя:
- `Primary Attributes` - канонические атрибуты персонажа
- `Core Visible Stats` - минимум информации для основного UI
- `Advanced Stats` - детали для расширенного экрана или tooltip
- `Hidden Runtime Stats` - внутренние параметры для расчета, не обязательные к показу игроку
## Primary Attributes
| Stat | Layer | Main Sources | Main Outputs | Main Systems |
| --- | --- | --- | --- | --- |
| `Мощь` | Primary Attribute | class, level, equipment, buffs | physical offense, penetration, block power | weapons, skills, combat damage, guard |
| `Ловкость` | Primary Attribute | class, level, equipment, buffs | speed, crit, projectile handling | attacks, crit resolution, movement |
| `Фокус` | Primary Attribute | class, level, equipment, buffs | mana, spell power, status power, part of magic resist | skills, casting, status system |
| `Стойкость` | Primary Attribute | class, level, equipment, buffs | HP, stamina pool, defense, sustain, resist | survivability, control, defense |
| `Мастерство` | Primary Attribute | class, equipment, archetype bonuses, buffs | specialization quality, weak spot, class hooks, part of magic resist | classes, weapon archetypes, skill archetypes |
## Core Visible Stats
| Stat | Layer | Depends On | Used By | UI |
| --- | --- | --- | --- | --- |
| `HP` | Core Visible | `Стойкость`, level, gear, buffs | health system, survivability | main |
| `Stamina` | Core Visible | `Стойкость`, class, gear, buffs | dodge, sprint, heavy actions, weapon-heavy abilities | main |
| `Mana` | Core Visible | `Фокус`, class, gear, buffs | spells, casting, ability gates | main |
| `Damage` | Core Visible | `Мощь`, `Фокус`, weapon, skill, mastery hooks | damage build | main |
| `Attack Speed` | Core Visible | `Ловкость`, weapon cadence, buffs | attack execution | main |
| `Armor` | Core Visible | `Стойкость`, gear, buffs | defense pass | main |
| `Move Speed` | Core Visible | `Ловкость`, gear, buffs, slows | movement system | main |
## Advanced Stats
| Stat | Layer | Depends On | Used By | UI |
| --- | --- | --- | --- | --- |
| `HP Regen` | Advanced | `Стойкость`, gear, buffs | sustain | advanced |
| `Stamina Regen` | Advanced | `Ловкость`, `Стойкость`, class, gear, buffs | physical tempo sustain | advanced |
| `Mana Regen` | Advanced | `Фокус`, class, gear, buffs | sustain, cast flow | advanced |
| `Cast Speed` | Advanced | `Фокус`, `Ловкость`, skill hooks, buffs | cast execution | advanced |
| `Crit Chance` | Advanced | `Ловкость`, gear, buffs, mastery hooks | crit roll via PRD | advanced |
| `Magic Resist` | Advanced | `Фокус`, `Мастерство`, gear, buffs | magic defense pass | advanced |
| `Armor Penetration` | Advanced | `Мощь`, gear, weapon, buffs | physical penetration pass | advanced |
| `Control Resist` | Advanced | `Стойкость`, gear, buffs | control duration and severity | advanced |
| `Status Power` | Advanced | `Фокус`, skill hooks, mastery hooks | status apply and status strength | advanced |
| `Block Power` | Advanced | `Мощь`, shield state, gear, buffs | guard and block pass | advanced |
| `Projectile Speed` | Advanced | `Ловкость`, weapon, buffs | ranged delivery | advanced |
| `Mastery Bonus` | Advanced | `Мастерство`, class, weapon archetype, skill archetype | class-specific specialization | advanced/contextual |
## Hidden Runtime Stats
| Stat | Layer | Depends On | Used By | Notes |
| --- | --- | --- | --- | --- |
| `Crit Quality` | Hidden Runtime | `Ловкость`, `Мастерство`, weapon, skill | crit damage bonus | не определяет факт crit |
| `Mana Cost Modifier` | Hidden Runtime | `Фокус`, gear, skill, mastery | mana spending | cost tuning |
| `Stamina Cost Modifier` | Hidden Runtime | `Ловкость`, gear, skill, mastery | stamina spending | cost tuning for heavy and mobility actions |
| `Mana Efficiency` | Hidden Runtime | `Фокус`, mastery, buffs | cast economy | hidden for MVP |
| `Stamina Efficiency` | Hidden Runtime | `Ловкость`, `Мастерство`, buffs | physical economy | focused on dodge/heavy/commit actions |
| `Exhaustion Pressure` | Hidden Runtime | stamina state, gear, buffs | limits heavy actions under low stamina | should not fully disable core loop |
| `Resource Type Tag` | Hidden Runtime | weapon, skill, class | action gating | mana/stamina/none |
| `Weak Spot Bonus` | Hidden Runtime | `Мастерство`, weapon, hit zone logic | precision damage | skill-based layer |
| `Headshot Precision Bonus` | Hidden Runtime | weapon type, hit zone, mastery | ranged precision | contextual |
| `Heavy Projectile Scaling` | Hidden Runtime | `Мощь`, weapon archetype | heavy ranged damage | mostly heavy ranged only |
| `Spell Power` | Hidden Runtime | `Фокус`, skill, buffs | spell damage build | может не показываться отдельно в MVP |
| `Spell Penetration` | Hidden Runtime | `Фокус`, mastery, skill hooks | magic defense pass | optional MVP-hidden |
| `Debuff Duration Reduction` | Hidden Runtime | `Стойкость`, gear, buffs | debuff resolution | linked to control resist |
| `Stagger Resist` | Hidden Runtime | `Стойкость`, armor state, buffs | stagger resolution | hidden for MVP |
| `Stagger Power` | Hidden Runtime | weapon, skill, `Мощь`, mastery | stagger resolution | attacker-side stat |
| `Interrupt Resistance` | Hidden Runtime | `Стойкость`, buffs | cast/skill stability | hidden for MVP |
| `Anti-Slow Coefficient` | Hidden Runtime | `Ловкость`, buffs | movement recovery | keep hidden |
| `Projectile Control` | Hidden Runtime | `Ловкость`, `Мастерство`, weapon | ranged handling | contextual |
| `Reload Modifier` | Hidden Runtime | `Ловкость`, weapon, buffs | ranged cadence | hidden for MVP |
| `Proc Chance` | Hidden Runtime | weapon, skill, buffs, mastery | proc resolution via PRD | generic proc entry |
| `Proc Quality` | Hidden Runtime | mastery, skill, gear | proc strength | separate from proc chance |
| `PRD State` | Hidden Runtime | base chance, prior failures | crit/status/proc rolls | server authoritative |
| `Soft Cap Thresholds` | Hidden Runtime | system formulas | post-cap scaling | tuning-only |
| `Diminishing Returns` | Hidden Runtime | system formulas | post-cap scaling | tuning-only |
| `Class Conversion Rules` | Hidden Runtime | class design | attribute to derived hooks | not player-facing |
## Optional Future Stats
Эти статы допустимы как будущие расширения, но не должны входить в обязательный MVP core.
| Stat | Why Deferred |
| --- | --- |
| `Accuracy` | риск ложного miss в action combat |
| `Evasion` | требует аккуратного UX и точной анимационной читаемости |
| `Pierce Count` | лучше держать как weapon/skill-specific modifier |
| `Cleave Radius` | лучше держать как mastery or skill hook |
| `Bleed Chance` | лучше держать как частный proc, а не отдельную общую строку UI |
| `Burn Chance` | лучше держать как частный proc |
| `Poison Chance` | лучше держать как частный proc |
## System Links
### Class Definition
Класс задает:
- стартовые значения атрибутов
- приоритеты роста
- class conversion rules для `Мастерства`
- доступ к разным skill и weapon archetypes
### Level Progression
Прогрессия задает:
- базовый рост атрибутов
- allocation points или predetermined growth
- soft cap pressure через progression formulas
### Equipment
Экипировка задает:
- flat bonuses
- percent modifiers
- archetype-specific hooks
- часть visible и hidden stats
### Weapon System
Оружие использует:
- `Damage`
- `Attack Speed`
- `Projectile Speed`
- `Armor Penetration`
- `Block Power`
- `Stamina` для heavy/charged/commit actions, если это задано archetype
- hidden offensive/runtime modifiers
### Skill System
Навыки используют:
- `Mana` для spell-oriented действий
- `Mana Regen` для магического темпа
- `Stamina` для физических и weapon-heavy действий
- `Stamina Regen` для физического темпа
- `Spell Power`
- `Status Power`
- `Cast Speed`
- `Mastery` hooks
Для MVP `Stamina` не должна быть обязательной ценой каждой базовой немагической кнопки.
### Combat Resolution
Combat pipeline использует:
- contact data
- crit data
- offense stats
- defense stats
- status data
- control and stagger data
- PRD state для chance-based roll-слоя
## Recommended MVP Buckets
Для легковесного runtime-обновления рекомендуется группировать статы так:
- `Resource Bucket`
- `Stamina`
- `Stamina Regen`
- `Mana`
- `Mana Regen`
- `Mana Cost Modifier`
- `Stamina Cost Modifier`
- `Exhaustion Pressure`
- `Offense Bucket`
- `Damage`
- `Crit Chance`
- `Crit Quality`
- `Armor Penetration`
- `Stagger Power`
- `Caster Bucket`
- `Spell Power`
- `Status Power`
- `Cast Speed`
- `Defense Bucket`
- `HP`
- `HP Regen`
- `Armor`
- `Magic Resist`
- `Control Resist`
- `Stagger Resist`
- `Utility Bucket`
- `Move Speed`
- `Projectile Speed`
- `Projectile Control`
- `Reload Modifier`
- `Mastery Bonus`
## Final Position
Единый список статов нужен не ради большого character sheet, а ради общей канонической модели. В MVP игроку показывается только минимум, но runtime должен опираться на полный согласованный каталог и единые системные связи.
+1
View File
@@ -68,3 +68,4 @@
| TASK-0026 | BackLog | High | ui | unassigned | 2d | docs/tasks/items/TASK-0026.md | Реализовать миникарту и механизм сохранения открытой карты у хоста так, чтобы состояние миникарты было общим для всех игроков мира. | | TASK-0026 | BackLog | High | ui | unassigned | 2d | docs/tasks/items/TASK-0026.md | Реализовать миникарту и механизм сохранения открытой карты у хоста так, чтобы состояние миникарты было общим для всех игроков мира. |
| TASK-0027 | ToDo | Highest | gameplay-core | unassigned | 3d | docs/tasks/items/TASK-0027.md | Перевести player movement на host-authoritative NavMesh pipeline с server-side path planning и shared debug path preview для всех клиентов. | | TASK-0027 | ToDo | Highest | gameplay-core | unassigned | 3d | docs/tasks/items/TASK-0027.md | Перевести player movement на host-authoritative NavMesh pipeline с server-side path planning и shared debug path preview для всех клиентов. |
| TASK-0028 | Done | Highest | ai | unassigned | 2d | docs/tasks/items/TASK-0028.md | Перевести основной runtime pathing mode на interest-cluster-based coverage windows, чтобы убрать seam-разрывы region-based NavMesh и учитывать multiplayer interest set. | | TASK-0028 | Done | Highest | ai | unassigned | 2d | docs/tasks/items/TASK-0028.md | Перевести основной runtime pathing mode на interest-cluster-based coverage windows, чтобы убрать seam-разрывы region-based NavMesh и учитывать multiplayer interest set. |
| TASK-0029 | ToDo | Highest | gameplay-core | unassigned | 1d | docs/tasks/items/TASK-0027.md | Реализовать пять канонических атрибутов, их derived combat scaling и интеграцию с классами Воина, Мага и Лучника. |
+13 -2
View File
@@ -13,8 +13,10 @@ depends_on:
- TASK-0008 - TASK-0008
- TASK-0009 - TASK-0009
- TASK-0010 - TASK-0010
- TASK-0027
canonical_docs: canonical_docs:
- docs/tasks/Index.md - docs/tasks/Index.md
- docs/gameplay/attribute-system-gdd.md
related_files: related_files:
- Assets/Features/VoxelWorld/Scenes/VoxelWorldTestScene.unity - Assets/Features/VoxelWorld/Scenes/VoxelWorldTestScene.unity
--- ---
@@ -43,7 +45,7 @@ related_files:
## Current Context ## Current Context
Пока нет классового слоя. Конкретные умения по классам вынесены в отдельные задачи ниже. Пока нет классового слоя. Система атрибутов отдельно зафиксирована в `docs/gameplay/attribute-system-gdd.md`, а ее runtime-интеграция выделена в `docs/tasks/items/TASK-0027.md`. Конкретные умения по классам вынесены в отдельные задачи ниже.
## Source Of Truth ## Source Of Truth
@@ -51,6 +53,8 @@ related_files:
- `docs/tasks/items/TASK-0008.md` - `docs/tasks/items/TASK-0008.md`
- `docs/tasks/items/TASK-0009.md` - `docs/tasks/items/TASK-0009.md`
- `docs/tasks/items/TASK-0010.md` - `docs/tasks/items/TASK-0010.md`
- `docs/gameplay/attribute-system-gdd.md`
- `docs/tasks/items/TASK-0027.md`
## Read First ## Read First
@@ -58,10 +62,13 @@ related_files:
- `docs/tasks/items/TASK-0008.md` - `docs/tasks/items/TASK-0008.md`
- `docs/tasks/items/TASK-0009.md` - `docs/tasks/items/TASK-0009.md`
- `docs/tasks/items/TASK-0010.md` - `docs/tasks/items/TASK-0010.md`
- `docs/gameplay/attribute-system-gdd.md`
- `docs/tasks/items/TASK-0027.md`
## Scope In ## Scope In
- базовая class definition для персонажа - базовая class definition для персонажа
- интеграция class definition с каноническими атрибутами и их приоритетами
- стартовые параметры и ограничения экипировки - стартовые параметры и ограничения экипировки
- выбор класса в рамках player profile - выбор класса в рамках player profile
- точки расширения для классовых навыков MVP - точки расширения для классовых навыков MVP
@@ -75,6 +82,7 @@ related_files:
- различия классов должны строиться поверх общих систем, а не через форки кода - различия классов должны строиться поверх общих систем, а не через форки кода
- выбор класса должен сохраняться в player save - выбор класса должен сохраняться в player save
- классовые стартовые параметры и identity должны опираться на общую систему атрибутов
## If You Find Drift ## If You Find Drift
@@ -83,12 +91,13 @@ related_files:
## Suggested Approach ## Suggested Approach
1. Определить базовую class definition модель. 1. Определить базовую class definition модель.
2. Связать класс со стартовыми характеристиками и стартовым loadout. 2. Связать класс с системой атрибутов, стартовыми характеристиками и стартовым loadout.
3. Подготовить интеграцию с character selection menu и отдельными skill tasks. 3. Подготовить интеграцию с character selection menu и отдельными skill tasks.
## Acceptance Criteria ## Acceptance Criteria
- в системе существуют Воин, Маг и Лучник как валидные классы персонажа - в системе существуют Воин, Маг и Лучник как валидные классы персонажа
- каждый класс имеет явную связь с канонической системой атрибутов
- класс влияет на стартовую конфигурацию без дублирования core systems - класс влияет на стартовую конфигурацию без дублирования core systems
- класс можно выбрать и сохранить в player profile - класс можно выбрать и сохранить в player profile
@@ -100,6 +109,7 @@ related_files:
## Risks / Open Questions ## Risks / Open Questions
- нужно определить, насколько жестко класс ограничивает тип оружия в MVP - нужно определить, насколько жестко класс ограничивает тип оружия в MVP
- нужно определить, где именно хранить class affinity к атрибутам: в class definition, стартовом профиле или в обоих слоях
## Human Decisions Needed ## Human Decisions Needed
@@ -108,6 +118,7 @@ related_files:
## Decision Log ## Decision Log
- `2026-03-30` - общий классовый каркас выделен до конкретных отдельных навыков Воина, Мага и Лучника. - `2026-03-30` - общий классовый каркас выделен до конкретных отдельных навыков Воина, Мага и Лучника.
- `2026-04-09` - классовая модель явно привязана к канонической системе атрибутов и отдельной задаче на ее runtime-внедрение.
## Handoff Notes ## Handoff Notes
+136
View File
@@ -0,0 +1,136 @@
---
id: TASK-0027
title: Реализовать систему атрибутов и интеграцию с классами
summary: Ввести пять канонических атрибутов персонажа, их derived combat scaling и привязать классы Воина, Мага и Лучника к своим стартовым и приоритетным статам.
priority: Highest
area: gameplay-core
owner: unassigned
created: 2026-04-09
updated: 2026-04-09
execution_time: 1d
depends_on:
- TASK-0007
canonical_docs:
- docs/tasks/Index.md
- docs/gameplay/attribute-system-gdd.md
- docs/gameplay/attribute-reference.md
- docs/gameplay/stat-catalog-mvp.md
- docs/gameplay/combat-resolution-gdd.md
related_files:
- Assets/Features/
- Assets/Scripts/
---
# TASK-0027 - Реализовать систему атрибутов и интеграцию с классами
## Status
Статус задачи ведется в `docs/tasks/Index.md` и является каноническим там.
Допустимые значения статуса:
- `BackLog`
- `ToDo`
- `InProgress`
- `Review`
- `Done`
## Why
Combat core и классовая система пока не имеют канонической runtime-модели атрибутов. Без этого классы останутся набором стартовых исключений, а боевые формулы не получат устойчивую точку расширения для билдов, оружия и навыков.
## Expected Outcome
В проекте существует единая система пяти атрибутов: `Мощь`, `Ловкость`, `Фокус`, `Стойкость`, `Мастерство`. Атрибуты конвертируются в понятные боевые эффекты, а классы Воин, Маг и Лучник используют их как часть стартовой конфигурации и class identity. Ресурсная модель явно разделяет `HP`, `Stamina` и `Mana`, причем у каждого ресурса есть свое автопополнение.
## Current Context
Канонический GDD по атрибутам уже зафиксирован в `docs/gameplay/attribute-system-gdd.md`, но отдельной реализации и явной интеграции с class model пока нет. Эта задача закрывает разрыв между design intent и runtime-моделью.
## Source Of Truth
- `docs/gameplay/attribute-system-gdd.md`
- `docs/gameplay/attribute-reference.md`
- `docs/gameplay/stat-catalog-mvp.md`
- `docs/gameplay/combat-resolution-gdd.md`
- `docs/tasks/items/TASK-0007.md`
- `docs/tasks/items/TASK-0011.md`
- runtime реализация combat stats и class definitions
## Read First
- `docs/gameplay/attribute-system-gdd.md`
- `docs/gameplay/attribute-reference.md`
- `docs/gameplay/stat-catalog-mvp.md`
- `docs/gameplay/combat-resolution-gdd.md`
- `docs/tasks/items/TASK-0007.md`
- `docs/tasks/items/TASK-0009.md`
- `docs/tasks/items/TASK-0010.md`
- `docs/tasks/items/TASK-0011.md`
## Scope In
- базовая runtime-модель пяти атрибутов персонажа
- конвертация атрибутов в derived combat stats по каноническим направлениям
- явное разделение `HP`, `Stamina` и `Mana` как разных runtime resource pools
- автопополнение для `HP`, `Stamina` и `Mana`
- стартовые или базовые классовые приоритеты атрибутов для Воина, Мага и Лучника
- интеграция атрибутов в class definition и стартовую конфигурацию персонажа
- точки расширения для weapon scaling, skill scaling и будущих гибридных классов
## Scope Out
- глубокая UI-визуализация всех статов и их breakdown на каждом экране
- полноценная talent tree или perk-система
- тонкая финальная балансировка числовых коэффициентов для late game
## Constraints
- реализовывать только пять канонических атрибутов из `docs/gameplay/attribute-system-gdd.md`
- не сливать offensive pressure и survivability в один стат
- `Мастерство` должно усиливать class-specific специализацию, а не заменять основной стат класса
- классы должны использовать общую систему атрибутов, а не отдельные class-only формулы
## If You Find Drift
- если код урона, оружия или навыков начинает обходить общую attribute-конвертацию, это drift
- если классы получают уникальные скрытые статы вместо работы через общую модель атрибутов, это drift
## Suggested Approach
1. Ввести каноническую runtime-структуру для пяти атрибутов персонажа.
2. Зафиксировать derived combat stats и правила конверсии без избыточного усложнения формул.
3. Добавить в class definitions стартовые значения, приоритеты или affinity по атрибутам для Воина, Мага и Лучника.
4. Проверить, что оружие и навыки могут опираться на эти атрибуты без class-specific обходов.
## Acceptance Criteria
- в системе существуют `Мощь`, `Ловкость`, `Фокус`, `Стойкость`, `Мастерство` как канонические runtime-атрибуты
- атрибуты влияют на боевые параметры по правилам, совместимым с GDD
- `HP`, `Stamina` и `Mana` существуют как разные runtime resource pools
- у `HP`, `Stamina` и `Mana` есть отдельные механики автопополнения
- классы Воин, Маг и Лучник имеют явную интеграцию с системой атрибутов
- downstream системы могут использовать атрибуты без дублирования class-specific формул
## Verification
- вычитка runtime-модели против `docs/gameplay/attribute-system-gdd.md`
- ручная проверка, что классы получают разные стартовые stat priorities
- ручная проверка, что derived stats меняются от изменения атрибутов по ожидаемым направлениям
## Risks / Open Questions
- нужно решить, какие именно конверсии будут обязательными уже в MVP, а какие можно оставить extension points
- нужно не перегрузить class model слишком ранней детализацией формул
## Human Decisions Needed
- none currently
## Decision Log
- `2026-04-09` - задача добавлена после фиксации канонического GDD по атрибутам.
## Handoff Notes
Если позже появятся формульные документы по MVP-коэффициентам, они должны уточнять эту задачу, но не подменять канонический смысл атрибутов из GDD.