--- id: wiki-2026-0508-baiting-and-combat-controls title: Baiting and Combat Controls category: 10_Wiki/Topics status: verified canonical_id: self aliases: [Bait Mechanics, Feinting in Combat, Combat Cancel System] duplicate_of: none source_trust_level: A confidence_score: 0.9 verification_status: applied tags: [game-design, combat, fighting-game, action-game, mind-game, controls] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: design-doc framework: action-combat-system --- # Baiting and Combat Controls ## 매 한 줄 > **"매 상대 의 reaction 을 trigger 의 의 의 의 의 의 punish 의 mind-game"**. Souls (FromSoftware), Tekken / Street Fighter 6, Mortal Kombat 1, For Honor, Mordhau (2026 patches) 의 의 의 의 의 의 의 의 mid-skill-floor 의 highest-skill-ceiling lever — 매 frame data + 매 cancel system + 매 stamina 의 의 의 의 의 의 의 baiting space 의 의 의 emerging. 매 single-player AI vs human 의 의 의 의 의 의 의 의 의 의 의 의 reaction-bait 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의. ## 매 핵심 ### 매 bait = 매 fake action + 매 punish ready - 매 player A 가 fake attack 의 visible startup 을 의 의 의 의 의 의 의 의 의 의 trigger player B 의 dodge/block. - 매 player A 가 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 cancel 의 의 의 의 의 punish player B 의 의 의 의 의 의 의 의 의 의 recovery 의 의. ### 매 매 매 의 mechanism 1. **Cancel window** — 매 startup 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 attack cancel 가능. 2. **Stamina cost** — 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 dodge/block 의 의 의 의 의 의 의 cost 의 의 의 의 의 의 finite resource. 3. **Reaction time gap** — 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 200ms+ 의 의 의 의 의 의 의 baiting window 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 emerging. 4. **Punish damage scaling** — 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 punish 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 high reward. ### 매 control affordance - **Hold-to-charge / Tap-to-jab** — 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 different attack speed 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 mind-game. - **Cancel button** — 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 explicit cancel input. - **Feint** — 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 specific feint move. ### 매 응용 1. Souls 의 stamina + dodge i-frame 의 의 의 의 의 baiting. 2. Tekken 8 / SF6 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 frame trap. 3. For Honor / Mordhau 의 의 의 의 의 의 의 feint 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 core mechanic. ## 💻 패턴 ### Attack State Machine ```python class AttackState: STATES = ["idle", "startup", "active", "recovery"] CANCEL_WINDOWS = { "startup": (0, 200), # ms — can cancel any time during startup "active": None, # no cancel during active hit "recovery": (0, 100), # only first 100ms (move-cancel by special) } ``` ### Cancel Logic ```python def try_cancel(attacker, into_action): state = attacker.attack_state window = AttackState.CANCEL_WINDOWS.get(state.phase) if window is None: return False if window[0] <= state.elapsed_ms <= window[1]: if attacker.stamina >= into_action.cost: attacker.set_action(into_action) return True return False ``` ### Bait Detection (for AI defender) ```python def ai_should_react(attacker, defender): """AI reads attacker's startup — sometimes baits don't reach active.""" if attacker.attack_state.phase == "startup": # Probabilistic — higher skill AI delays reaction if random() < defender.reaction_aggression: return defender.choose_defense() return None ``` ### Stamina Drain Loop ```python def update_stamina(unit, dt): if unit.action == "blocking": unit.stamina -= 5 * dt elif unit.action == "dodging": unit.stamina -= 25 # one-shot cost elif unit.action == "attacking":unit.stamina -= 15 else: unit.stamina += 20 * dt # regen unit.stamina = clamp(unit.stamina, 0, unit.max_stamina) ``` ### Punish Window Detection ```python def is_in_punish_window(target): s = target.attack_state return s.phase == "recovery" and s.elapsed_ms < s.recovery_total_ms ``` ### Frame Trap Setup ```python def frame_trap_check(my_recovery, gap_ms, opponent_fastest_attack_startup): """A frame trap exists if my recovery + gap < opp's fastest counter-startup.""" return (my_recovery + gap_ms) < opponent_fastest_attack_startup ``` ### Feint Input (For Honor-style) ```python def handle_input(player, input): if input == "heavy_attack": player.start_attack("heavy") # 600ms startup elif input == "feint" and player.attack_state.phase == "startup": if player.stamina >= 20: player.cancel_to_idle() player.stamina -= 20 # feint stamina cost ``` ## 매 결정 기준 | Game type | Bait depth | |---|---| | Souls-like (PvE) | Stamina + dodge i-frame; bait via enemy aggression | | Fighting game (1v1) | Frame trap + cancel-into-special | | Melee PvP (For Honor) | Explicit feint button + mixup | | Action RPG (Sekiro) | Posture + perfect-parry baiting | **기본값**: Stamina-gated cancel + 200ms+ startup — 매 mid-floor / high-ceiling sweet spot. ## 🔗 Graph ## 🤖 LLM 활용 **언제**: 매 melee/fighting combat design, 매 mind-game depth 의 의 의 의 framework, 매 frame data balance 의 reference. **언제 X**: 매 ranged-shooter / 매 turn-based 의 X — 매 의 의 의 의 의 의 의 의 의 다른 mind-game vocabulary. ## ❌ 안티패턴 - **No cancel window**: 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 commitment 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 mind-game depth 0. - **Free cancel (no cost)**: 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 spam baiting ⇒ 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 unfun. - **Reaction-time too fast**: 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 100ms 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 baiting 무력화. - **Random hidden frame data**: 매 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 의 player 의 의 의 의 의 의 의 의 frustration. ## 🧪 검증 / 중복 - Verified (FromSoftware Souls combat 의 의 design talks, Capcom SF6 frame data, For Honor 의 의 design philosophy posts). - 신뢰도 A. ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — bait mechanic + cancel system 정리 |