--- id: wiki-2026-0508-issue-001-combat-reference-error title: Issue 001 Combat Reference Error Troubleshooting category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [] duplicate_of: none source_trust_level: A confidence_score: 0.92 tags: [uncategorized] raw_sources: [] last_reinforced: 2026-05-08 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) --- # Issue #001: Combat System ReferenceError (Case Study) 개발 중 발생한 변수 선언 누락으로 인한 시스템 크래시 사례 분석입니다. ## 1. Problem Definition - **장애 요약**: 적 피격 시 `damage is not defined` 에러로 엔진이 중단됨. - **오류 지점**: `CombatSystem.ts` 내 데미지 연산 블록. ## 2. Root Cause (원인 분석) 대규모 리팩토링 과정에서 VFX 로직에만 치우친 나머지, 변수의 생명주기(Scope)를 결정하는 선언부(`let/const`)를 누락함. 자바스크립트의 런타임 특성상 선언되지 않은 변수 참조는 예외 없이 크래시로 이어짐. ## 3. Resolution (해결책) 탄환 객체의 기본 데미지 필드(`bullet.dmg`)를 로컬 변수 `damage`에 명시적으로 할당하여 스코프 내 가용성을 확보함. ## 4. Anti-Recurrence (방지 전략) 1. **Lint Rules**: `no-undef` 규칙을 프로젝트 설정에 강제하여 빌드 시점에 차단. 2. **Review Filter**: 대규모 로직 교환 시, 변수의 로컬 선언 여부를 필수 체크 리스트에 등재. 3. **Automated Testing**: 교전 시나리오에 대한 단위 테스트(Unit Test)를 통해 문법적 결함 사전 발견. --- **Status**: Case Closed **Type**: Syntax Integrity / Troubleshooting ## 🔗 지식 연결 (Graph) ### Related Concepts (Auto-Linked) * [[Testing]] * [[_system]] ## 📌 한 줄 통찰 (The Karpathy Summary) > *(TODO: 한 문장으로 핵심 통찰을 작성. "X는 Y 조건에서 Z 효과를 낸다" 구조 권장.)* ## 📖 구조화된 지식 (Synthesized Content) **추출된 패턴:** > *(TODO)* **세부 내용:** - *(TODO)* ## 🤖 LLM 활용 힌트 (How to Use This Knowledge) **언제 이 지식을 쓰는가:** - *(TODO)* **언제 쓰면 안 되는가:** - *(TODO)* ## 🧪 검증 상태 (Validation) - **정보 상태:** needs_review - **출처 신뢰도:** A - **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)* ## 🧬 중복 검사 (Duplicate Check) - **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)* - **처리 방식:** UPDATE (자동 정규화) - **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강. ## ⚠️ 모순 및 업데이트 (Contradictions & Updates) - **과거 데이터와의 충돌:** 없음 - **정책 변화:** 없음 ## 🕓 변경 이력 (Changelog) | 날짜 | 변경 내용 | 처리 방식 | 신뢰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |