From 5760c6dd28e0e77b08eb3aa780b0db95ead389dc Mon Sep 17 00:00:00 2001 From: Konstantin Dyachenko Date: Thu, 9 Apr 2026 09:54:19 +0700 Subject: [PATCH 1/6] [Add] Base gdd --- ProjectSettings/ProjectSettings.asset | 1 + docs/gameplay/attribute-system-gdd.md | 301 ++++++++++++++++++++++++++ 2 files changed, 302 insertions(+) create mode 100644 docs/gameplay/attribute-system-gdd.md diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 16edc703..b7ca0b92 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -682,6 +682,7 @@ PlayerSettings: webEnableSubmoduleStrippingCompatibility: 0 scriptingDefineSymbols: Standalone: FISHNET;FISHNET_V4 + WebGL: FISHNET;FISHNET_V4 additionalCompilerArguments: {} platformArchitecture: {} scriptingBackend: diff --git a/docs/gameplay/attribute-system-gdd.md b/docs/gameplay/attribute-system-gdd.md new file mode 100644 index 00000000..4cd4ecaf --- /dev/null +++ b/docs/gameplay/attribute-system-gdd.md @@ -0,0 +1,301 @@ +# 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, cast resource, resource regen, status power, limited 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 + +### Мощь + +`Мощь` - это атрибут силы удара и продавливания защиты. + +Что усиливает: + +- урон ближнего боя +- часть урона тяжелых 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 без упора на диалоговую ролевую фантазию +- оно одинаково естественно звучит для мага, паладина, шамана, некроманта и других гибридов + +Классовый приоритет: + +- Маг: основной +- Воин: нужен только гибридным классам +- Лучник: почти не нужен + +Дизайн-ограничение: + +`Фокус` не должен превращаться в универсальный магический суперстат, который одновременно дает лучший урон, бесконечный ресурс и слишком сильную защиту от магии. + +### Стойкость + +`Стойкость` - это атрибут живучести и удержания темпа боя. + +Что усиливает: + +- 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, resource pool, resource regen, status application, limited 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-пула + +## 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 + +Опирается на `Фокус` как основу, но может частично забирать `Ловкость` ради ритма боя и `Стойкость` ради безопасного ведения ближне-средней дистанции. + +## Integration Notes + +Этот документ является каноническим design intent для следующих систем: + +- базовые характеристики и derived stats в combat core +- стартовые и приоритетные статы классов +- scaling оружия и weapon archetypes +- skill scaling и class-specific specialization hooks + +Связанные документы и задачи: + +- `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 должен оставаться источником смысла и направлений, а не заменяться низкоуровневыми числовыми таблицами. + +## Open Questions + +- какие именно derived stats нужны в MVP UI и какие можно оставить внутренними runtime-параметрами +- как именно считать crit: через chance, crit quality, weak spot logic или их комбинацию +- какие soft caps нужны для move speed, attack speed и cast speed +- в каком виде `Мастерство` задается в коде: единый stat с archetype-specific conversion rules или набор class-owned scaling hooks +- нужно ли различать mana и energy на уровне ресурсов или `Фокус` должен работать с единым кастерским ресурсом в MVP + +## Final Position + +Система атрибутов строится вокруг пяти осей: давление, скорость, магия, живучесть и мастерство применения. Ее уникальность не в переименовании классических статов, а в четком разделении боевых ролей и наличии `Мастерства` как отдельного инструмента билдовой идентичности. + +Это позволяет сохранить читаемость, избежать доминирующего суперстата и подготовить фундамент для расширения классовой системы без переработки базовой модели персонажа. -- 2.52.0 From c027b7b911cb30232e39644732e811f3f1795067 Mon Sep 17 00:00:00 2001 From: Konstantin Dyachenko Date: Thu, 9 Apr 2026 09:59:44 +0700 Subject: [PATCH 2/6] [Add] Task --- docs/tasks/Index.md | 1 + docs/tasks/items/TASK-0011.md | 15 ++++- docs/tasks/items/TASK-0027.md | 123 ++++++++++++++++++++++++++++++++++ 3 files changed, 137 insertions(+), 2 deletions(-) create mode 100644 docs/tasks/items/TASK-0027.md diff --git a/docs/tasks/Index.md b/docs/tasks/Index.md index b9f73ee6..1321f068 100644 --- a/docs/tasks/Index.md +++ b/docs/tasks/Index.md @@ -66,3 +66,4 @@ | TASK-0024 | ToDo | Highest | art | unassigned | 2d | docs/tasks/items/TASK-0024.md | Заменить Minecraft-placeholder арт на легальные ассеты для продакшена и зафиксировать источник/лицензии. | | TASK-0025 | ToDo | Highest | build | unassigned | 1d | docs/tasks/items/TASK-0025.md | Описать и зафиксировать flow локального теста билда: сборка, запуск, host/client сценарий и обязательный smoke checklist. | | TASK-0026 | BackLog | High | ui | unassigned | 2d | docs/tasks/items/TASK-0026.md | Реализовать миникарту и механизм сохранения открытой карты у хоста так, чтобы состояние миникарты было общим для всех игроков мира. | +| TASK-0027 | ToDo | Highest | gameplay-core | unassigned | 1d | docs/tasks/items/TASK-0027.md | Реализовать пять канонических атрибутов, их derived combat scaling и интеграцию с классами Воина, Мага и Лучника. | diff --git a/docs/tasks/items/TASK-0011.md b/docs/tasks/items/TASK-0011.md index 4416f71d..6f8b4fc6 100644 --- a/docs/tasks/items/TASK-0011.md +++ b/docs/tasks/items/TASK-0011.md @@ -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 diff --git a/docs/tasks/items/TASK-0027.md b/docs/tasks/items/TASK-0027.md new file mode 100644 index 00000000..ebac5a29 --- /dev/null +++ b/docs/tasks/items/TASK-0027.md @@ -0,0 +1,123 @@ +--- +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 +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. + +## Current Context + +Канонический GDD по атрибутам уже зафиксирован в `docs/gameplay/attribute-system-gdd.md`, но отдельной реализации и явной интеграции с class model пока нет. Эта задача закрывает разрыв между design intent и runtime-моделью. + +## Source Of Truth + +- `docs/gameplay/attribute-system-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/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 по каноническим направлениям +- стартовые или базовые классовые приоритеты атрибутов для Воина, Мага и Лучника +- интеграция атрибутов в 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 +- классы Воин, Маг и Лучник имеют явную интеграцию с системой атрибутов +- 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. -- 2.52.0 From c4aac00dc7962c787058dc9ea9f2167091d4e0a6 Mon Sep 17 00:00:00 2001 From: Konstantin Dyachenko Date: Thu, 9 Apr 2026 10:20:59 +0700 Subject: [PATCH 3/6] [Add] Attribute vis mvp --- .../attribute-stats-visibility-mvp.md | 199 ++++++++++++++++++ docs/gameplay/attribute-system-gdd.md | 5 +- 2 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 docs/gameplay/attribute-stats-visibility-mvp.md diff --git a/docs/gameplay/attribute-stats-visibility-mvp.md b/docs/gameplay/attribute-stats-visibility-mvp.md new file mode 100644 index 00000000..2cdd3d66 --- /dev/null +++ b/docs/gameplay/attribute-stats-visibility-mvp.md @@ -0,0 +1,199 @@ +# Attribute Stats Visibility MVP + +## Purpose + +Этот документ фиксирует, какие derived stats должны быть видимы игроку в MVP, какие можно показывать только в расширенном виде, а какие должны оставаться внутренними runtime-параметрами. + +Отдельная цель документа - зафиксировать легковесный подход к обновлению статов: система не должна постоянно пересчитывать весь набор характеристик, если можно применять только минимальные изменения к уже подготовленным значениям. + +## Related Docs + +- `docs/gameplay/attribute-system-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 +- caster bucket: spell power, resource, resource regen, 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` +- `Resource` +- `Damage` +- `Attack Speed` +- `Armor` +- `Move Speed` + +Правила показа: + +- `Damage` должен быть приведен к понятной игроку форме, без раскрытия всех внутренних коэффициентов +- `Resource` должен отображаться как основной кастерский или классовый ресурс +- `Armor` лучше показывать как единое защитное число для MVP, если отдельный breakdown еще не нужен +- `Move Speed` полезен, потому что напрямую ощущается руками в top-down action RPG + +Почему именно этот набор: + +- он достаточно мал, чтобы не перегружать интерфейс +- он покрывает offensive, defensive и utility-изменения +- игрок видит, что числа меняются от атрибутов, оружия и экипировки +- сложные производные параметры при этом остаются скрытыми + +## Advanced Stats + +Эти статы не обязаны быть видны в основном экране, но могут отображаться в detail view, tooltip, расширенной панели или отладочном UI. + +- `HP Regen` +- `Resource 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` стоит показывать только когда игрок использует подходящее оружие или билд + +Почему это не 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` +- `Фокус` в основном проявляется через `Resource` +- `Стойкость` в основном проявляется через `HP` и частично `Armor` +- `Мастерство` в основном проявляется через контекстный `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 + +Для MVP нежелательно: + +- полный пересчет всех статов на каждом тике +- хранение одной гигантской формулы для всех классов и всех источников сразу +- постоянная сборка UI-строк из runtime-модели без кэша итоговых значений + +## Recommended MVP Contract + +Минимальный контракт для практической реализации: + +- `MVP Main Stats` + - `HP` + - `Resource` + - `Damage` + - `Attack Speed` + - `Armor` + - `Move Speed` +- `Advanced Stats` + - `HP Regen` + - `Resource 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 и легковесную реализацию. diff --git a/docs/gameplay/attribute-system-gdd.md b/docs/gameplay/attribute-system-gdd.md index 4cd4ecaf..68881ab7 100644 --- a/docs/gameplay/attribute-system-gdd.md +++ b/docs/gameplay/attribute-system-gdd.md @@ -277,6 +277,10 @@ - scaling оружия и weapon archetypes - skill scaling и class-specific specialization hooks +Связанный документ по слоям видимости статов и легковесному runtime-обновлению: + +- `docs/gameplay/attribute-stats-visibility-mvp.md` + Связанные документы и задачи: - `docs/tasks/items/TASK-0007.md` @@ -288,7 +292,6 @@ ## Open Questions -- какие именно derived stats нужны в MVP UI и какие можно оставить внутренними runtime-параметрами - как именно считать crit: через chance, crit quality, weak spot logic или их комбинацию - какие soft caps нужны для move speed, attack speed и cast speed - в каком виде `Мастерство` задается в коде: единый stat с archetype-specific conversion rules или набор class-owned scaling hooks -- 2.52.0 From 283ae742d6447c7ef61254328fecb2d18d31a759 Mon Sep 17 00:00:00 2001 From: Konstantin Dyachenko Date: Thu, 9 Apr 2026 10:30:43 +0700 Subject: [PATCH 4/6] [Add] MORE DOCS --- docs/gameplay/attribute-reference.md | 288 ++++++++++++++++ .../attribute-stats-visibility-mvp.md | 3 + docs/gameplay/attribute-system-gdd.md | 7 +- docs/gameplay/combat-resolution-gdd.md | 322 ++++++++++++++++++ docs/gameplay/stat-catalog-mvp.md | 192 +++++++++++ docs/tasks/items/TASK-0027.md | 9 + 6 files changed, 820 insertions(+), 1 deletion(-) create mode 100644 docs/gameplay/attribute-reference.md create mode 100644 docs/gameplay/combat-resolution-gdd.md create mode 100644 docs/gameplay/stat-catalog-mvp.md diff --git a/docs/gameplay/attribute-reference.md b/docs/gameplay/attribute-reference.md new file mode 100644 index 00000000..b54869dc --- /dev/null +++ b/docs/gameplay/attribute-reference.md @@ -0,0 +1,288 @@ +# 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` -> `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: + +- `Resource` +- `Resource Regen` +- `Spell Power` +- `Status Power` +- `Magic Resist` + +Вторичные эффекты: + +- `Cast Speed` +- AOE scaling там, где это задается skill archetype +- spell penetration hooks через mastery/skill layer + +Зависит от: + +- класса +- уровня персонажа +- оружия или cast source +- экипировки +- caster-бафов + +Влияет на системы: + +- skill resource hooks +- spell damage scaling +- status application +- magic mitigation + +Основные классы: + +- Маг: основной +- Воин: нужен гибридам +- Лучник: почти не нужен + +### Стойкость + +Роль: + +- выживание +- удержание темпа боя +- сопротивление срывам действий + +Основные derived stats: + +- `HP` +- `HP Regen` +- `Armor` +- `Control Resist` +- `Stagger Resist` + +Вторичные эффекты: + +- `Debuff Duration Reduction` +- small mitigation +- interrupt resistance + +Зависит от: + +- класса +- уровня персонажа +- экипировки +- defensive бафов + +Влияет на системы: + +- max health pool +- 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` +- class-specific scaling hooks + +Вторичные эффекты: + +- cleave quality +- bleed/stagger intensity +- precision bonuses +- spell shaping + +Зависит от: + +- класса +- weapon archetype +- skill archetype +- экипировки +- mastery-бафов + +Влияет на системы: + +- class mechanic scaling +- skill specialization +- weak spot logic +- status quality +- weapon-specific hooks + +Основные классы: + +- важен для всех +- масштабируется по-разному по archetype + +## Dependency Map + +### 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 +- `Фокус` -> caster/resource bucket +- `Стойкость` -> defense/sustain bucket +- `Мастерство` -> specialization hooks и quality modifiers + +### Derived Stats To Combat Systems + +- offense stats -> damage build, crit resolution, penetration +- caster stats -> resource checks, spell scaling, status apply +- defense stats -> mitigation, HP 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. diff --git a/docs/gameplay/attribute-stats-visibility-mvp.md b/docs/gameplay/attribute-stats-visibility-mvp.md index 2cdd3d66..13d186e9 100644 --- a/docs/gameplay/attribute-stats-visibility-mvp.md +++ b/docs/gameplay/attribute-stats-visibility-mvp.md @@ -9,6 +9,9 @@ ## 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 diff --git a/docs/gameplay/attribute-system-gdd.md b/docs/gameplay/attribute-system-gdd.md index 68881ab7..42c080e2 100644 --- a/docs/gameplay/attribute-system-gdd.md +++ b/docs/gameplay/attribute-system-gdd.md @@ -281,6 +281,12 @@ - `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` @@ -292,7 +298,6 @@ ## Open Questions -- как именно считать crit: через chance, crit quality, weak spot logic или их комбинацию - какие soft caps нужны для move speed, attack speed и cast speed - в каком виде `Мастерство` задается в коде: единый stat с archetype-specific conversion rules или набор class-owned scaling hooks - нужно ли различать mana и energy на уровне ресурсов или `Фокус` должен работать с единым кастерским ресурсом в MVP diff --git a/docs/gameplay/combat-resolution-gdd.md b/docs/gameplay/combat-resolution-gdd.md new file mode 100644 index 00000000..f7b5eb05 --- /dev/null +++ b/docs/gameplay/combat-resolution-gdd.md @@ -0,0 +1,322 @@ +# 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 + +На этом этапе определяются: + +- источник действия +- тип действия +- weapon archetype +- skill archetype +- target rules + +### 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 + +Порядок на 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 +- `Фокус` -> spell power, resource, status power, magic-facing calculations +- `Стойкость` -> HP, mitigation, control resistance, stagger resistance +- `Мастерство` -> weak spot bonuses, proc quality, archetype specialization + +### Weapons To Combat + +- задают base damage +- задают hit delivery method +- задают часть crit, penetration и block hooks + +### Skills To Combat + +- задают execution pattern +- задают resource 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 механик и должен жить как отдельный серверный слой, а не как замена физическому попаданию. diff --git a/docs/gameplay/stat-catalog-mvp.md b/docs/gameplay/stat-catalog-mvp.md new file mode 100644 index 00000000..a322a7bc --- /dev/null +++ b/docs/gameplay/stat-catalog-mvp.md @@ -0,0 +1,192 @@ +# 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 | resource, spell power, status power | skills, casting, status system | +| `Стойкость` | Primary Attribute | class, level, equipment, buffs | HP, defense, sustain, resist | survivability, control, defense | +| `Мастерство` | Primary Attribute | class, equipment, archetype bonuses, buffs | specialization quality, weak spot, class hooks | 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 | +| `Resource` | Core Visible | `Фокус`, class, gear, buffs | skills, 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 | +| `Resource 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 | +| `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` +- hidden offensive/runtime modifiers + +### Skill System + +Навыки используют: + +- `Resource` +- `Resource Regen` +- `Spell Power` +- `Status Power` +- `Cast Speed` +- `Mastery` hooks + +### 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-обновления рекомендуется группировать статы так: + +- `Offense Bucket` + - `Damage` + - `Crit Chance` + - `Crit Quality` + - `Armor Penetration` + - `Stagger Power` +- `Caster Bucket` + - `Resource` + - `Resource Regen` + - `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 должен опираться на полный согласованный каталог и единые системные связи. diff --git a/docs/tasks/items/TASK-0027.md b/docs/tasks/items/TASK-0027.md index ebac5a29..71cac7bc 100644 --- a/docs/tasks/items/TASK-0027.md +++ b/docs/tasks/items/TASK-0027.md @@ -13,6 +13,9 @@ depends_on: 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/ @@ -47,6 +50,9 @@ Combat core и классовая система пока не имеют кан ## 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 @@ -54,6 +60,9 @@ Combat core и классовая система пока не имеют кан ## 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` -- 2.52.0 From 2bd882c48eabaff816659c04588f0a66ea35621b Mon Sep 17 00:00:00 2001 From: Konstantin Dyachenko Date: Thu, 9 Apr 2026 10:36:06 +0700 Subject: [PATCH 5/6] [Fix] HP Stamina Mana Attribute --- docs/gameplay/attribute-reference.md | 22 ++++++++---- .../attribute-stats-visibility-mvp.md | 22 ++++++++---- docs/gameplay/attribute-system-gdd.md | 34 +++++++++++++++---- docs/gameplay/combat-resolution-gdd.md | 12 ++++++- docs/gameplay/stat-catalog-mvp.md | 28 +++++++++++---- docs/tasks/items/TASK-0027.md | 6 +++- 6 files changed, 95 insertions(+), 29 deletions(-) diff --git a/docs/gameplay/attribute-reference.md b/docs/gameplay/attribute-reference.md index b54869dc..747f3a6e 100644 --- a/docs/gameplay/attribute-reference.md +++ b/docs/gameplay/attribute-reference.md @@ -16,7 +16,7 @@ Поток данных: -`Class Definition / Level / Equipment / Buffs / Skills` -> `Attributes` -> `Derived Stats` -> `Combat Resolution` +`Class Definition / Level / Equipment / Buffs / Skills` -> `Attributes` -> `Derived Stats / Resource Pools` -> `Combat Resolution` ## Attribute Sources @@ -129,12 +129,12 @@ - магическая сила - контроль каста -- ресурс и статусное давление +- мана и статусное давление Основные derived stats: -- `Resource` -- `Resource Regen` +- `Mana` +- `Mana Regen` - `Spell Power` - `Status Power` - `Magic Resist` @@ -156,6 +156,7 @@ Влияет на системы: - skill resource hooks +- mana-based skill resource hooks - spell damage scaling - status application - magic mitigation @@ -254,6 +255,15 @@ ## Dependency Map +### Resource Links + +- `Стойкость` -> `HP`, `HP Regen`, `Stamina Pool` +- `Ловкость` -> `Stamina Regen`, tempo recovery, mobility efficiency +- `Фокус` -> `Mana`, `Mana Regen`, spell-facing resource scaling +- `Мастерство` -> class-specific resource efficiency hooks + +`HP`, `Stamina` и `Mana` являются разными ресурсными пулами. `Фокус` не является главным источником `Stamina`. + ### Upstream To Attributes - `Class Definition` задает стартовые значения и приоритеты @@ -266,14 +276,14 @@ - `Мощь` -> physical offense bucket - `Ловкость` -> speed/crit/projectile bucket -- `Фокус` -> caster/resource bucket +- `Фокус` -> caster/mana bucket - `Стойкость` -> defense/sustain bucket - `Мастерство` -> specialization hooks и quality modifiers ### Derived Stats To Combat Systems - offense stats -> damage build, crit resolution, penetration -- caster stats -> resource checks, spell scaling, status apply +- caster stats -> mana checks, spell scaling, status apply - defense stats -> mitigation, HP pool, control resistance - mastery hooks -> weak spot, proc quality, archetype-specific modifiers diff --git a/docs/gameplay/attribute-stats-visibility-mvp.md b/docs/gameplay/attribute-stats-visibility-mvp.md index 13d186e9..028573e9 100644 --- a/docs/gameplay/attribute-stats-visibility-mvp.md +++ b/docs/gameplay/attribute-stats-visibility-mvp.md @@ -45,7 +45,8 @@ Пример групп пересчета: - offensive bucket: damage, attack speed, crit, penetration -- caster bucket: spell power, resource, resource regen, cast speed, status power +- 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 @@ -56,7 +57,8 @@ Это основные числа, которые стоит показывать в базовом MVP UI. - `HP` -- `Resource` +- `Stamina` +- `Mana` - `Damage` - `Attack Speed` - `Armor` @@ -65,7 +67,8 @@ Правила показа: - `Damage` должен быть приведен к понятной игроку форме, без раскрытия всех внутренних коэффициентов -- `Resource` должен отображаться как основной кастерский или классовый ресурс +- `Stamina` должна отображаться как физический ресурс действий и темпа +- `Mana` должна отображаться как магический ресурс каста и spell-oriented умений - `Armor` лучше показывать как единое защитное число для MVP, если отдельный breakdown еще не нужен - `Move Speed` полезен, потому что напрямую ощущается руками в top-down action RPG @@ -81,7 +84,8 @@ Эти статы не обязаны быть видны в основном экране, но могут отображаться в detail view, tooltip, расширенной панели или отладочном UI. - `HP Regen` -- `Resource Regen` +- `Stamina Regen` +- `Mana Regen` - `Cast Speed` - `Crit Chance` - `Magic Resist` @@ -137,8 +141,9 @@ - `Мощь` в основном проявляется через `Damage` - `Ловкость` в основном проявляется через `Attack Speed` и частично `Move Speed` -- `Фокус` в основном проявляется через `Resource` +- `Фокус` в основном проявляется через `Mana` - `Стойкость` в основном проявляется через `HP` и частично `Armor` +- `Stamina` в основном читается как отдельный физический ресурс, который поддерживается `Стойкостью`, `Ловкостью`, классом и экипировкой - `Мастерство` в основном проявляется через контекстный `Mastery Bonus` в advanced view, а не как центральный main stat Это дает игроку понятную обратную связь, но не заставляет UI раскрывать весь внутренний combat math. @@ -162,6 +167,7 @@ - derived stats пересчитываются только по dirty-группам - UI обновляется только если изменились отображаемые main или advanced stats - hidden runtime stats могут обновляться вместе со своим bucket, но не должны триггерить лишние UI refresh +- ресурсные пулы и их автопополнение должны обновляться отдельно от offense/defense bucket, если изменение не затрагивает другие группы Для MVP нежелательно: @@ -175,14 +181,16 @@ - `MVP Main Stats` - `HP` - - `Resource` + - `Stamina` + - `Mana` - `Damage` - `Attack Speed` - `Armor` - `Move Speed` - `Advanced Stats` - `HP Regen` - - `Resource Regen` + - `Stamina Regen` + - `Mana Regen` - `Cast Speed` - `Crit Chance` - `Magic Resist` diff --git a/docs/gameplay/attribute-system-gdd.md b/docs/gameplay/attribute-system-gdd.md index 42c080e2..d593eb95 100644 --- a/docs/gameplay/attribute-system-gdd.md +++ b/docs/gameplay/attribute-system-gdd.md @@ -27,7 +27,7 @@ | --- | --- | --- | --- | | Мощь | давление и силовой урон | 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, cast resource, resource regen, status power, limited magic resistance | Маг, hybrid классы | +| Фокус | магическая сила и контроль маны | spell power, mana pool, mana regen, status power, limited 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 | все классы | @@ -37,7 +37,7 @@ - `Мощь` отвечает за силовое давление и пробивание защиты. - `Ловкость` отвечает за скорость, контроль и отзывчивость оружия. -- `Фокус` отвечает за магию, ресурс и статусное давление. +- `Фокус` отвечает за магию, ману и статусное давление. - `Стойкость` отвечает за выживание и стабильность в бою. - `Мастерство` отвечает за качество применения архетипа, оружия и умений. @@ -45,6 +45,27 @@ ## 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-модификаторы + ### Мощь `Мощь` - это атрибут силы удара и продавливания защиты. @@ -103,13 +124,13 @@ ### Фокус -`Фокус` - это атрибут магической силы, контроля заклинания и ресурса. +`Фокус` - это атрибут магической силы, контроля заклинания и маны. Что усиливает: - силу заклинаний -- максимальную ману, энергию каста или другой кастерский ресурс -- реген кастерского ресурса +- максимальную ману +- реген маны - силу или размер AOE-навыков, если это уместно для конкретного skill archetype - шанс наложить статус, силу статуса или надежность применения status effects - небольшой объем сопротивления магии @@ -224,7 +245,7 @@ - `Мощь`: 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, resource pool, resource regen, status application, limited magic resistance +- `Фокус`: spell power, mana pool, mana regen, status application, limited magic resistance - `Стойкость`: max HP, HP regen, control resistance, debuff duration reduction, stagger resistance, small mitigation - `Мастерство`: class mechanic efficiency, weapon/skill specialization, archetype-specific bonuses @@ -300,7 +321,6 @@ - какие soft caps нужны для move speed, attack speed и cast speed - в каком виде `Мастерство` задается в коде: единый stat с archetype-specific conversion rules или набор class-owned scaling hooks -- нужно ли различать mana и energy на уровне ресурсов или `Фокус` должен работать с единым кастерским ресурсом в MVP ## Final Position diff --git a/docs/gameplay/combat-resolution-gdd.md b/docs/gameplay/combat-resolution-gdd.md index f7b5eb05..5d0819c1 100644 --- a/docs/gameplay/combat-resolution-gdd.md +++ b/docs/gameplay/combat-resolution-gdd.md @@ -41,6 +41,14 @@ - area effect - block/guard reaction +Перед выполнением действия проверяется resource gate. + +Проверяется: + +- использует ли действие `Mana`, `Stamina` или не использует отдельный ресурс +- хватает ли нужного ресурса для старта +- есть ли специальные cost modifiers от класса, оружия, навыка или `Мастерства` + На этом этапе определяются: - источник действия @@ -48,6 +56,8 @@ - weapon archetype - skill archetype - target rules +- resource type +- resource cost ### 2. Contact Resolution @@ -307,7 +317,7 @@ PRD используется только для chance-based событий. ### Skills To Combat - задают execution pattern -- задают resource consumption +- задают mana consumption или stamina consumption - задают coefficients и status hooks - задают mastery-specific behavior diff --git a/docs/gameplay/stat-catalog-mvp.md b/docs/gameplay/stat-catalog-mvp.md index a322a7bc..8413d730 100644 --- a/docs/gameplay/stat-catalog-mvp.md +++ b/docs/gameplay/stat-catalog-mvp.md @@ -26,7 +26,7 @@ | --- | --- | --- | --- | --- | | `Мощь` | 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 | resource, spell power, status power | skills, casting, status system | +| `Фокус` | Primary Attribute | class, level, equipment, buffs | mana, spell power, status power | skills, casting, status system | | `Стойкость` | Primary Attribute | class, level, equipment, buffs | HP, defense, sustain, resist | survivability, control, defense | | `Мастерство` | Primary Attribute | class, equipment, archetype bonuses, buffs | specialization quality, weak spot, class hooks | classes, weapon archetypes, skill archetypes | @@ -35,7 +35,8 @@ | Stat | Layer | Depends On | Used By | UI | | --- | --- | --- | --- | --- | | `HP` | Core Visible | `Стойкость`, level, gear, buffs | health system, survivability | main | -| `Resource` | Core Visible | `Фокус`, class, gear, buffs | skills, casting, ability gates | main | +| `Stamina` | Core Visible | `Стойкость`, class, gear, buffs | physical actions, mobility, weapon 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 | @@ -46,7 +47,8 @@ | Stat | Layer | Depends On | Used By | UI | | --- | --- | --- | --- | --- | | `HP Regen` | Advanced | `Стойкость`, gear, buffs | sustain | advanced | -| `Resource Regen` | Advanced | `Фокус`, class, gear, buffs | sustain, cast flow | 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 | @@ -62,6 +64,11 @@ | 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 | +| `Mana Efficiency` | Hidden Runtime | `Фокус`, mastery, buffs | cast economy | hidden for MVP | +| `Stamina Efficiency` | Hidden Runtime | `Ловкость`, `Мастерство`, buffs | physical economy | hidden for MVP | +| `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 | @@ -138,8 +145,10 @@ Навыки используют: -- `Resource` -- `Resource Regen` +- `Mana` для spell-oriented действий +- `Mana Regen` для магического темпа +- `Stamina` для физических и weapon-heavy действий +- `Stamina Regen` для физического темпа - `Spell Power` - `Status Power` - `Cast Speed` @@ -161,6 +170,13 @@ Combat pipeline использует: Для легковесного runtime-обновления рекомендуется группировать статы так: +- `Resource Bucket` + - `Stamina` + - `Stamina Regen` + - `Mana` + - `Mana Regen` + - `Mana Cost Modifier` + - `Stamina Cost Modifier` - `Offense Bucket` - `Damage` - `Crit Chance` @@ -168,8 +184,6 @@ Combat pipeline использует: - `Armor Penetration` - `Stagger Power` - `Caster Bucket` - - `Resource` - - `Resource Regen` - `Spell Power` - `Status Power` - `Cast Speed` diff --git a/docs/tasks/items/TASK-0027.md b/docs/tasks/items/TASK-0027.md index 71cac7bc..cca25f70 100644 --- a/docs/tasks/items/TASK-0027.md +++ b/docs/tasks/items/TASK-0027.md @@ -41,7 +41,7 @@ Combat core и классовая система пока не имеют кан ## Expected Outcome -В проекте существует единая система пяти атрибутов: `Мощь`, `Ловкость`, `Фокус`, `Стойкость`, `Мастерство`. Атрибуты конвертируются в понятные боевые эффекты, а классы Воин, Маг и Лучник используют их как часть стартовой конфигурации и class identity. +В проекте существует единая система пяти атрибутов: `Мощь`, `Ловкость`, `Фокус`, `Стойкость`, `Мастерство`. Атрибуты конвертируются в понятные боевые эффекты, а классы Воин, Маг и Лучник используют их как часть стартовой конфигурации и class identity. Ресурсная модель явно разделяет `HP`, `Stamina` и `Mana`, причем у каждого ресурса есть свое автопополнение. ## Current Context @@ -72,6 +72,8 @@ Combat core и классовая система пока не имеют кан - базовая runtime-модель пяти атрибутов персонажа - конвертация атрибутов в derived combat stats по каноническим направлениям +- явное разделение `HP`, `Stamina` и `Mana` как разных runtime resource pools +- автопополнение для `HP`, `Stamina` и `Mana` - стартовые или базовые классовые приоритеты атрибутов для Воина, Мага и Лучника - интеграция атрибутов в class definition и стартовую конфигурацию персонажа - точки расширения для weapon scaling, skill scaling и будущих гибридных классов @@ -105,6 +107,8 @@ Combat core и классовая система пока не имеют кан - в системе существуют `Мощь`, `Ловкость`, `Фокус`, `Стойкость`, `Мастерство` как канонические runtime-атрибуты - атрибуты влияют на боевые параметры по правилам, совместимым с GDD +- `HP`, `Stamina` и `Mana` существуют как разные runtime resource pools +- у `HP`, `Stamina` и `Mana` есть отдельные механики автопополнения - классы Воин, Маг и Лучник имеют явную интеграцию с системой атрибутов - downstream системы могут использовать атрибуты без дублирования class-specific формул -- 2.52.0 From 0caf5d203b2d034fc58c199bd8565bfd6591a48b Mon Sep 17 00:00:00 2001 From: Konstantin Dyachenko Date: Thu, 9 Apr 2026 11:11:52 +0700 Subject: [PATCH 6/6] [Fix] Attribute balance --- docs/gameplay/attribute-reference.md | 26 +++++++++---- .../attribute-stats-visibility-mvp.md | 4 +- docs/gameplay/attribute-system-gdd.md | 39 ++++++++++++++----- docs/gameplay/combat-resolution-gdd.md | 20 ++++++++-- docs/gameplay/stat-catalog-mvp.md | 19 +++++---- 5 files changed, 78 insertions(+), 30 deletions(-) diff --git a/docs/gameplay/attribute-reference.md b/docs/gameplay/attribute-reference.md index 747f3a6e..c87e2db5 100644 --- a/docs/gameplay/attribute-reference.md +++ b/docs/gameplay/attribute-reference.md @@ -137,13 +137,14 @@ - `Mana Regen` - `Spell Power` - `Status Power` -- `Magic Resist` +- часть `Magic Resist` Вторичные эффекты: - `Cast Speed` - AOE scaling там, где это задается skill archetype - spell penetration hooks через mastery/skill layer +- часть магической защиты через совместный scaling с `Мастерством` Зависит от: @@ -155,7 +156,6 @@ Влияет на системы: -- skill resource hooks - mana-based skill resource hooks - spell damage scaling - status application @@ -179,6 +179,7 @@ - `HP` - `HP Regen` +- `Stamina` - `Armor` - `Control Resist` - `Stagger Resist` @@ -188,6 +189,7 @@ - `Debuff Duration Reduction` - small mitigation - interrupt resistance +- часть физической выносливости и recovery stability Зависит от: @@ -199,6 +201,7 @@ Влияет на системы: - max health pool +- stamina pool support - defense pass - control and stagger resolution - sustain @@ -223,6 +226,7 @@ - `Weak Spot Bonus` - `Projectile Control` - `Cast Refinement` +- часть `Magic Resist` - class-specific scaling hooks Вторичные эффекты: @@ -231,6 +235,7 @@ - bleed/stagger intensity - precision bonuses - spell shaping +- resource efficiency hooks по archetype Зависит от: @@ -246,6 +251,7 @@ - skill specialization - weak spot logic - status quality +- magic mitigation synergy - weapon-specific hooks Основные классы: @@ -259,11 +265,15 @@ - `Стойкость` -> `HP`, `HP Regen`, `Stamina Pool` - `Ловкость` -> `Stamina Regen`, tempo recovery, mobility efficiency -- `Фокус` -> `Mana`, `Mana Regen`, spell-facing resource scaling +- `Фокус` -> `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` задает стартовые значения и приоритеты @@ -275,16 +285,16 @@ ### Attributes To Derived Stats - `Мощь` -> physical offense bucket -- `Ловкость` -> speed/crit/projectile bucket -- `Фокус` -> caster/mana bucket -- `Стойкость` -> defense/sustain bucket -- `Мастерство` -> specialization hooks и quality modifiers +- `Ловкость` -> 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, control resistance +- defense stats -> mitigation, HP pool, stamina pool, control resistance - mastery hooks -> weak spot, proc quality, archetype-specific modifiers ## Implementation Notes diff --git a/docs/gameplay/attribute-stats-visibility-mvp.md b/docs/gameplay/attribute-stats-visibility-mvp.md index 028573e9..2e6242ca 100644 --- a/docs/gameplay/attribute-stats-visibility-mvp.md +++ b/docs/gameplay/attribute-stats-visibility-mvp.md @@ -67,7 +67,7 @@ Правила показа: - `Damage` должен быть приведен к понятной игроку форме, без раскрытия всех внутренних коэффициентов -- `Stamina` должна отображаться как физический ресурс действий и темпа +- `Stamina` должна отображаться как ресурс сильных физических действий, dodge/sprint и weapon-heavy commitments, а не как постоянный налог на базовый бой - `Mana` должна отображаться как магический ресурс каста и spell-oriented умений - `Armor` лучше показывать как единое защитное число для MVP, если отдельный breakdown еще не нужен - `Move Speed` полезен, потому что напрямую ощущается руками в top-down action RPG @@ -102,6 +102,7 @@ - `Crit Chance` и `Cast Speed` полезны только если соответствующий archetype реально на них опирается - `Magic Resist` не нужно тащить в основной экран, если магические угрозы еще не занимают большую долю MVP-боя - `Projectile Speed` и `Block Power` стоит показывать только когда игрок использует подходящее оружие или билд +- `Magic Resist` в advanced view должна читаться как итог из `Фокуса`, `Мастерства` и экипировки, а не как прямой показатель одного атрибута Почему это не main UI: @@ -168,6 +169,7 @@ - UI обновляется только если изменились отображаемые main или advanced stats - hidden runtime stats могут обновляться вместе со своим bucket, но не должны триггерить лишние UI refresh - ресурсные пулы и их автопополнение должны обновляться отдельно от offense/defense bucket, если изменение не затрагивает другие группы +- `Stamina` изменения должны отдельно обновлять pool и regen, чтобы heavy-weapon pressure или dodge-расход не вызывали лишний пересчет unrelated боевых bucket Для MVP нежелательно: diff --git a/docs/gameplay/attribute-system-gdd.md b/docs/gameplay/attribute-system-gdd.md index d593eb95..cacd6787 100644 --- a/docs/gameplay/attribute-system-gdd.md +++ b/docs/gameplay/attribute-system-gdd.md @@ -27,7 +27,7 @@ | --- | --- | --- | --- | | Мощь | давление и силовой урон | 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, limited magic resistance | Маг, hybrid классы | +| Фокус | магическая сила и контроль маны | 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 | все классы | @@ -50,7 +50,7 @@ В MVP используются три отдельные ресурсные оси: - `HP` - запас жизни, в основном зависит от `Стойкости` -- `Stamina` - ресурс физических, мобильных и weapon-heavy действий +- `Stamina` - ресурс сильных физических, мобильных и weapon-heavy действий - `Mana` - ресурс магии, каста и spell-oriented действий У каждого ресурса есть свой стат автопополнения: @@ -65,6 +65,24 @@ - `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 ### Мощь @@ -133,7 +151,7 @@ - реген маны - силу или размер AOE-навыков, если это уместно для конкретного skill archetype - шанс наложить статус, силу статуса или надежность применения status effects -- небольшой объем сопротивления магии +- часть сопротивления магии вместе с `Мастерством` Почему не `Интеллект`: @@ -149,7 +167,7 @@ Дизайн-ограничение: -`Фокус` не должен превращаться в универсальный магический суперстат, который одновременно дает лучший урон, бесконечный ресурс и слишком сильную защиту от магии. +`Фокус` не должен превращаться в универсальный магический суперстат, который одновременно дает лучший урон, бесконечный ресурс и самодостаточную защиту от магии. Магическая защита должна собираться через сочетание `Фокуса`, `Мастерства` и экипировки, а не через один единственный stat. ### Стойкость @@ -245,7 +263,7 @@ - `Мощь`: 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, limited magic resistance +- `Фокус`: 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 @@ -259,6 +277,8 @@ - `Мастерство` должно усиливать специализацию, а не быть универсальным глобальным damage multiplier для всех - классовая эффективность должна строиться на сочетании core stat + optional specialization, а не на одном обязательном стате - новый класс должен встраиваться в те же пять атрибутов без создания отдельного шестого stat-пула +- `Stamina` должна ограничивать сильные и commitment-heavy действия, но не должна постоянно отключать базовый loop немагических билдов +- `Magic Resist` не должна полностью сидеть в `Фокусе`; итоговая магическая защита должна собираться через `Фокус`, `Мастерство` и экипировку ## Scaling Philosophy @@ -289,6 +309,10 @@ Опирается на `Фокус` как основу, но может частично забирать `Ловкость` ради ритма боя и `Стойкость` ради безопасного ведения ближне-средней дистанции. +### Heavy Weapon Fighter + +Опирается на `Мощь` для давления и на `Стойкость` для `Stamina Pool`, а `Ловкость` поддерживает быстрое восстановление `Stamina` между тяжелыми commit-действиями. Такой билд должен ощущаться как серия мощных окон, а не как постоянная игра в пустую полоску выносливости. + ## Integration Notes Этот документ является каноническим design intent для следующих систем: @@ -317,11 +341,6 @@ Если в будущем runtime-формулы потребуют уточнений, этот GDD должен оставаться источником смысла и направлений, а не заменяться низкоуровневыми числовыми таблицами. -## Open Questions - -- какие soft caps нужны для move speed, attack speed и cast speed -- в каком виде `Мастерство` задается в коде: единый stat с archetype-specific conversion rules или набор class-owned scaling hooks - ## Final Position Система атрибутов строится вокруг пяти осей: давление, скорость, магия, живучесть и мастерство применения. Ее уникальность не в переименовании классических статов, а в четком разделении боевых ролей и наличии `Мастерства` как отдельного инструмента билдовой идентичности. diff --git a/docs/gameplay/combat-resolution-gdd.md b/docs/gameplay/combat-resolution-gdd.md index 5d0819c1..1a7f2847 100644 --- a/docs/gameplay/combat-resolution-gdd.md +++ b/docs/gameplay/combat-resolution-gdd.md @@ -49,6 +49,13 @@ - хватает ли нужного ресурса для старта - есть ли специальные 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-сценариях + На этом этапе определяются: - источник действия @@ -197,6 +204,11 @@ - `Spell Penetration`, если введен для archetype - small mitigation и другие defense modifiers +Правило источников магической защиты: + +- `Magic Resist` формируется из сочетания `Фокуса`, `Мастерства` и экипировки +- ни `Фокус`, ни `Мастерство` по отдельности не должны давать самодостаточную магическую защиту + Порядок на MVP: 1. определить тип урона @@ -303,10 +315,10 @@ PRD используется только для chance-based событий. ### Attributes To Combat - `Мощь` -> physical damage, heavy impact, penetration, block power -- `Ловкость` -> cadence, crit chance, crit quality, projectile handling -- `Фокус` -> spell power, resource, status power, magic-facing calculations -- `Стойкость` -> HP, mitigation, control resistance, stagger resistance -- `Мастерство` -> weak spot bonuses, proc quality, archetype specialization +- `Ловкость` -> 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 diff --git a/docs/gameplay/stat-catalog-mvp.md b/docs/gameplay/stat-catalog-mvp.md index 8413d730..b60aa459 100644 --- a/docs/gameplay/stat-catalog-mvp.md +++ b/docs/gameplay/stat-catalog-mvp.md @@ -26,16 +26,16 @@ | --- | --- | --- | --- | --- | | `Мощь` | 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 | skills, casting, status system | -| `Стойкость` | Primary Attribute | class, level, equipment, buffs | HP, defense, sustain, resist | survivability, control, defense | -| `Мастерство` | Primary Attribute | class, equipment, archetype bonuses, buffs | specialization quality, weak spot, class hooks | classes, weapon archetypes, skill archetypes | +| `Фокус` | 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 | physical actions, mobility, weapon abilities | 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 | @@ -51,7 +51,7 @@ | `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 | +| `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 | @@ -65,9 +65,10 @@ | --- | --- | --- | --- | --- | | `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 | +| `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 | 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 | @@ -139,6 +140,7 @@ - `Projectile Speed` - `Armor Penetration` - `Block Power` +- `Stamina` для heavy/charged/commit actions, если это задано archetype - hidden offensive/runtime modifiers ### Skill System @@ -154,6 +156,8 @@ - `Cast Speed` - `Mastery` hooks +Для MVP `Stamina` не должна быть обязательной ценой каждой базовой немагической кнопки. + ### Combat Resolution Combat pipeline использует: @@ -177,6 +181,7 @@ Combat pipeline использует: - `Mana Regen` - `Mana Cost Modifier` - `Stamina Cost Modifier` + - `Exhaustion Pressure` - `Offense Bucket` - `Damage` - `Crit Chance` -- 2.52.0