Files
TheDeclineOfWarriors/docs/gameplay/combat-resolution-gdd.md
T
2026-04-09 11:11:52 +07:00

345 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Combat Resolution GDD
## Purpose
Этот документ фиксирует единый порядок расчета боевого действия, правила псевдорандома и место `crit`, `weak spot`, `status` и защитных расчетов в общем pipeline.
## Related Docs
- `docs/gameplay/attribute-system-gdd.md`
- `docs/gameplay/attribute-reference.md`
- `docs/gameplay/stat-catalog-mvp.md`
- `docs/gameplay/attribute-stats-visibility-mvp.md`
## Design Goals
- один общий combat pipeline для игрока, врага, оружия и навыков
- chance-based события должны ощущаться честно и стабильно
- в action RPG физический контакт не должен часто превращаться в нелогичный miss
- `crit`, `weak spot`, `penetration`, `status` и `stagger` должны быть частью одной цепочки, а не отдельными системами
- сервер должен быть источником истины для всех roll-based результатов
## Core Position
Для MVP pseudo-random distribution применяется к chance-based исходам, но не заменяет фактическую физику попадания.
То есть:
- hitbox, projectile impact и valid AoE contact сначала определяют, был ли контакт
- только после этого идут roll-based проверки
- псевдорандом используется для уменьшения длинных серий неудач и успехов
## Combat Pipeline
### 1. Action Start
Система получает попытку действия:
- melee attack
- projectile attack
- cast skill
- area effect
- block/guard reaction
Перед выполнением действия проверяется resource gate.
Проверяется:
- использует ли действие `Mana`, `Stamina` или не использует отдельный ресурс
- хватает ли нужного ресурса для старта
- есть ли специальные cost modifiers от класса, оружия, навыка или `Мастерства`
Правила resource gate для MVP:
- `Stamina` используется для dodge, sprint, block/guard upkeep, heavy attacks, charged attacks и weapon-heavy abilities
- базовая легкая атака и простой core loop не должны регулярно блокироваться отсутствием `Stamina`
- если `Stamina` исчерпана, игрок в первую очередь теряет доступ к сильным commit-действиям или получает short exhaustion pressure, а не полностью выключается из боя
- `Stamina Regen` должен быть быстрым, чтобы темп open world ARPG не разваливался даже в PvP и затяжных PvE-сценариях
На этом этапе определяются:
- источник действия
- тип действия
- weapon archetype
- skill archetype
- target rules
- resource type
- resource cost
### 2. Contact Resolution
Система определяет, был ли валидный контакт.
Примеры:
- melee через hitbox/overlap
- ranged через projectile collision
- spell через trace, overlap или target validation
- AoE через положение цели внутри области
Результат этапа:
- `No Contact` -> дальнейшие offensive roll-этапы не выполняются
- `Valid Contact` -> переход к следующему шагу
### 3. Server Validation
Сервер проверяет:
- допустимость действия
- валидность target
- допустимость дистанции, угла, времени и состояния
- отсутствие фальшивого попадания со стороны клиента
### 4. Hit Quality Resolution
Для MVP рекомендуется модель без обязательного stat-based miss после уже произошедшего контакта.
То есть:
- если действие физически попало и прошло валидацию сервера, это считается попаданием
- `Accuracy` и `Evasion` не являются обязательным MVP-слоем
Если позже потребуется accuracy-модель:
- она должна стоять здесь
- она должна использовать отдельный PRD accumulator
- ее нельзя смешивать с crit или status rolls
### 5. Critical Resolution
`Crit` считается как комбинация трех разных сущностей.
#### Crit Chance
Отвечает на вопрос: сработал ли крит.
Источники:
- `Ловкость`
- weapon modifiers
- buffs/debuffs
- часть `Мастерства` у precision-архетипов
Правило:
- `Crit Chance` является chance-based stat
- для него используется PRD
#### Crit Quality
Отвечает на вопрос: насколько сильным будет крит.
Источники:
- `Ловкость`
- `Мастерство`
- weapon archetype
- skill modifiers
Правило:
- `Crit Quality` не определяет факт крита
- `Crit Quality` определяет величину бонуса при уже успешном crit roll
#### Weak Spot Logic
Отвечает на вопрос: было ли точное позиционное или skill-based попадание в уязвимую зону.
Источники:
- hit zone
- angle or position check
- weapon type
- skill archetype
- `Мастерство`
Правило:
- `Weak Spot` не заменяет `Crit Chance`
- `Weak Spot` является skill-based усилителем
- при наличии weak spot попадание может усиливать crit или давать отдельный bonus layer
## Recommended Crit Model
Каноническая схема для MVP:
1. определить факт контакта
2. выполнить `Crit Chance` через PRD
3. при успехе применить `Crit Quality`
4. если сработал `Weak Spot`, усилить итог крита или применить отдельный precision bonus
Это дает:
- случайность для крита
- контролируемую силу крита
- отдельную награду за точное исполнение
## Base Damage Build
После того как подтверждено попадание и разрешены crit/precision-модификаторы, строится базовый урон.
В расчет входят:
- weapon base values
- skill coefficients
- уровень оружия
- relevant derived offense stats
- `Мощь`, `Фокус` и другие атрибутные конверсии через derived stats
- `Мастерство` как specialization modifier
Правило:
- оружие и навыки не должны считать урон по собственным отдельным формулам в обход общего offense build
## Penetration And Defense Pass
После построения offense value применяется защитный проход.
Участвуют:
- `Armor`
- `Magic Resist`
- `Armor Penetration`
- `Spell Penetration`, если введен для archetype
- small mitigation и другие defense modifiers
Правило источников магической защиты:
- `Magic Resist` формируется из сочетания `Фокуса`, `Мастерства` и экипировки
- ни `Фокус`, ни `Мастерство` по отдельности не должны давать самодостаточную магическую защиту
Порядок на MVP:
1. определить тип урона
2. выбрать релевантную защиту
3. применить penetration
4. применить mitigation
## Block And Guard Pass
Если у цели есть активный или пассивный defensive response, он обрабатывается после основного defense pass или как его часть, но в одном каноническом месте.
Участвуют:
- `Block Power`
- shield modifiers
- guard state
- directional defense rules
## Status Resolution
После разрешения основного урона система считает статусные эффекты.
Участвуют:
- `Status Power`
- skill status modifiers
- target resist hooks
- mastery hooks
Если эффект chance-based:
- применяется отдельный PRD accumulator
Примеры:
- bleed
- burn
- poison
- shock
- slow proc
## Stagger And Control Resolution
После урона и статусов обрабатываются control-related последствия.
Участвуют:
- stagger power
- `Stagger Resist`
- `Control Resist`
- `Debuff Duration Reduction`
- interrupt resistance
Правило:
- длительность и сила контроля не должны жить в отдельной автономной формуле вне общего pipeline
## Pseudo-Random Distribution Rules
### Scope
PRD используется только для chance-based событий.
Рекомендуемые MVP-области:
- `Crit Chance`
- chance-based `Status Apply`
- chance-based `Proc Effects`
Не использовать для MVP:
- фактического projectile contact
- melee hitbox contact
- AoE presence check
### PRD State
Для каждого roll type хранится отдельное состояние.
Минимальный состав:
- `roll type`
- `base chance`
- `failure streak`
- `current adjusted chance`
Разделять состояния по типам:
- `Crit PRD`
- `Status PRD`
- `Proc PRD`
- `Accuracy PRD`, только если accuracy-layer появится позже
### PRD Behavior
- после неуспеха шанс немного растет
- после успеха streak сбрасывается
- итоговый шанс не должен слишком быстро гарантировать успех
- PRD работает на сервере
- клиент может показывать только результат, но не хранить authoritative PRD state
## System Links
### Attributes To Combat
- `Мощь` -> physical damage, heavy impact, penetration, block power
- `Ловкость` -> cadence, crit chance, crit quality, projectile handling, stamina recovery
- `Фокус` -> spell power, mana, status power, part of magic mitigation
- `Стойкость` -> HP, stamina pool, mitigation, control resistance, stagger resistance
- `Мастерство` -> weak spot bonuses, proc quality, archetype specialization, part of magic mitigation
### Weapons To Combat
- задают base damage
- задают hit delivery method
- задают часть crit, penetration и block hooks
### Skills To Combat
- задают execution pattern
- задают mana consumption или stamina consumption
- задают coefficients и status hooks
- задают mastery-specific behavior
### Classes To Combat
- задают стартовые attribute priorities
- задают class affinity
- задают доступ к разным mastery conversion rules
## Final Position
Для MVP бой должен считаться в одном общем pipeline: контакт, валидация, crit/precision, offense build, defense pass, status, control. Псевдорандом нужен для chance-based механик и должен жить как отдельный серверный слой, а не как замена физическому попаданию.