Files
2nd/10_Wiki/Topic_General/Game_Design/Baiting-and-Combat-Controls.md
T
Antigravity Agent 9148c358d0 docs(10_Wiki): 위키 전체 재구성 — Topic_* 폴더를 4개 카테고리로 통합 + 대규모 중복 제거
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를
Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류.

- 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로
  자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거,
  동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거.
- 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming,
  Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business,
  Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로,
  나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는
  title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백).
  원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지.
- 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서.
- 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는
  지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지.
- Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경.
- 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
2026-07-05 00:33:48 +09:00

8.3 KiB

id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
id title category status canonical_id aliases duplicate_of source_trust_level confidence_score verification_status tags raw_sources last_reinforced github_commit tech_stack
wiki-2026-0508-baiting-and-combat-controls Baiting and Combat Controls 10_Wiki/Topics verified self
Bait Mechanics
Feinting in Combat
Combat Cancel System
none A 0.9 applied
game-design
combat
fighting-game
action-game
mind-game
controls
2026-05-10 pending
language framework
design-doc 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

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

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)

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

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

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

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)

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 정리