Files
2nd/10_Wiki/Topics/Combat_System_Reference_Error_Resolution.md
T

1.7 KiB

🛠️ CombatSystem: ReferenceError ReSolution Guide

1. Context (배경)

전투 시스템(CombatSystem.ts) 리팩토링 중, 런타임에서 엔진이 중단되는 치명적인 참조 오류가 발생하였습니다. 본 문서는 해당 오류의 원인과 해결 방법, 그리고 향후 유사 사례 방지를 위한 가이드라인을 기록합니다.

2. Issue Breakdown (오류 분석)

  • Error Type: ReferenceError: damage is not defined
  • Location: CombatSystem.ts (Collision Detection Loop)
  • Root Cause: 블록 스코프(if/else) 내부에서 damage 변수를 사용하기 전에 let 혹은 const를 통한 명시적 선언이 누락됨. 자바스크립트의 비엄격 모드 혹은 리팩토링 과정에서의 선언부 유실이 원인이었습니다.

3. Resolution (해결 방법)

탄환의 공격력을 계산하기 전, 명시적으로 스코프 내에 변수를 선언하도록 수정하였습니다.

// Fix [[Logic|Logic]]
let damage = bullet.dmg; // 명시적 선언 및 초기화
if (isCritical) {
  damage *= criticalMultiplier;
}

4. Prevention Policy (재발 방지 대책)

  • Strict Declaration: 모든 변수는 반드시 const 또는 let을 사용하여 선언하며, 선언되지 않은 변수의 암묵적 전역화(Implicit Global)를 철저히 금지한다.
  • Linter Integration: no-undef 규칙을 강화하여 빌드 타임에서 미선언 변수 참조를 사전에 차단한다.
  • Unit Test: 충돌 판정 로직에 대한 단위 테스트를 수행하여 데미지 계산 루프의 무결성을 검증한다.

Related Cluster: Runtime Pipeline Last Updated: 2026-04-23