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:
@@ -682,6 +682,7 @@ PlayerSettings:
|
||||
webEnableSubmoduleStrippingCompatibility: 0
|
||||
scriptingDefineSymbols:
|
||||
Standalone: FISHNET;FISHNET_V4
|
||||
WebGL: FISHNET;FISHNET_V4
|
||||
additionalCompilerArguments: {}
|
||||
platformArchitecture: {}
|
||||
scriptingBackend:
|
||||
|
||||
@@ -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 и легковесную реализацию.
|
||||
@@ -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
|
||||
|
||||
Система атрибутов строится вокруг пяти осей: давление, скорость, магия, живучесть и мастерство применения. Ее уникальность не в переименовании классических статов, а в четком разделении боевых ролей и наличии `Мастерства` как отдельного инструмента билдовой идентичности.
|
||||
|
||||
Это позволяет сохранить читаемость, избежать доминирующего суперстата и подготовить фундамент для расширения классовой системы без переработки базовой модели персонажа.
|
||||
@@ -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 механик и должен жить как отдельный серверный слой, а не как замена физическому попаданию.
|
||||
@@ -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 должен опираться на полный согласованный каталог и единые системные связи.
|
||||
@@ -68,3 +68,4 @@
|
||||
| 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-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,8 +13,10 @@ depends_on:
|
||||
- TASK-0008
|
||||
- TASK-0009
|
||||
- TASK-0010
|
||||
- TASK-0027
|
||||
canonical_docs:
|
||||
- docs/tasks/Index.md
|
||||
- docs/gameplay/attribute-system-gdd.md
|
||||
related_files:
|
||||
- Assets/Features/VoxelWorld/Scenes/VoxelWorldTestScene.unity
|
||||
---
|
||||
@@ -43,7 +45,7 @@ related_files:
|
||||
|
||||
## Current Context
|
||||
|
||||
Пока нет классового слоя. Конкретные умения по классам вынесены в отдельные задачи ниже.
|
||||
Пока нет классового слоя. Система атрибутов отдельно зафиксирована в `docs/gameplay/attribute-system-gdd.md`, а ее runtime-интеграция выделена в `docs/tasks/items/TASK-0027.md`. Конкретные умения по классам вынесены в отдельные задачи ниже.
|
||||
|
||||
## Source Of Truth
|
||||
|
||||
@@ -51,6 +53,8 @@ related_files:
|
||||
- `docs/tasks/items/TASK-0008.md`
|
||||
- `docs/tasks/items/TASK-0009.md`
|
||||
- `docs/tasks/items/TASK-0010.md`
|
||||
- `docs/gameplay/attribute-system-gdd.md`
|
||||
- `docs/tasks/items/TASK-0027.md`
|
||||
|
||||
## Read First
|
||||
|
||||
@@ -58,10 +62,13 @@ related_files:
|
||||
- `docs/tasks/items/TASK-0008.md`
|
||||
- `docs/tasks/items/TASK-0009.md`
|
||||
- `docs/tasks/items/TASK-0010.md`
|
||||
- `docs/gameplay/attribute-system-gdd.md`
|
||||
- `docs/tasks/items/TASK-0027.md`
|
||||
|
||||
## Scope In
|
||||
|
||||
- базовая class definition для персонажа
|
||||
- интеграция class definition с каноническими атрибутами и их приоритетами
|
||||
- стартовые параметры и ограничения экипировки
|
||||
- выбор класса в рамках player profile
|
||||
- точки расширения для классовых навыков MVP
|
||||
@@ -75,6 +82,7 @@ related_files:
|
||||
|
||||
- различия классов должны строиться поверх общих систем, а не через форки кода
|
||||
- выбор класса должен сохраняться в player save
|
||||
- классовые стартовые параметры и identity должны опираться на общую систему атрибутов
|
||||
|
||||
## If You Find Drift
|
||||
|
||||
@@ -83,12 +91,13 @@ related_files:
|
||||
## Suggested Approach
|
||||
|
||||
1. Определить базовую class definition модель.
|
||||
2. Связать класс со стартовыми характеристиками и стартовым loadout.
|
||||
2. Связать класс с системой атрибутов, стартовыми характеристиками и стартовым loadout.
|
||||
3. Подготовить интеграцию с character selection menu и отдельными skill tasks.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- в системе существуют Воин, Маг и Лучник как валидные классы персонажа
|
||||
- каждый класс имеет явную связь с канонической системой атрибутов
|
||||
- класс влияет на стартовую конфигурацию без дублирования core systems
|
||||
- класс можно выбрать и сохранить в player profile
|
||||
|
||||
@@ -100,6 +109,7 @@ related_files:
|
||||
## Risks / Open Questions
|
||||
|
||||
- нужно определить, насколько жестко класс ограничивает тип оружия в MVP
|
||||
- нужно определить, где именно хранить class affinity к атрибутам: в class definition, стартовом профиле или в обоих слоях
|
||||
|
||||
## Human Decisions Needed
|
||||
|
||||
@@ -108,6 +118,7 @@ related_files:
|
||||
## Decision Log
|
||||
|
||||
- `2026-03-30` - общий классовый каркас выделен до конкретных отдельных навыков Воина, Мага и Лучника.
|
||||
- `2026-04-09` - классовая модель явно привязана к канонической системе атрибутов и отдельной задаче на ее runtime-внедрение.
|
||||
|
||||
## Handoff Notes
|
||||
|
||||
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user