Files
2nd/10_Wiki/Topics/Issue-001-Combat-Reference-Error-Troubleshooting.md
T

28 lines
1.4 KiB
Markdown

# 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
## 🔗 Knowledge Connections
### Related Concepts (Auto-Linked)
* [[Testing]]
* [[_system]]