# Game Engine Loop andSystem Orchestration

Skybound의 런타임 엔진은 효율적인 업데이트와 렌더링을 위해 엄격하게 제어된 파이프라인을 따릅니다. `useGameEngine`은 모든 시스템의 업데이트 주기를 총괄하며, 프레임 간의 오차를 최소화합니다.

## 1. Engine Pipeline Hierarchy
엔진 루프는 매 프레임마다 다음과 같은 순서로 시스템을 실행합니다.

1. **Input Polling**: 사용자의 키보드/게임패드 입력을 스냅샷으로 캡처합니다.
2. **[[State|State]] Sync**: 서버 또는 전역 상태 관리자로부터 데이터를 동기화합니다.
3. **[[Logic|Logic]] Update (System Pipeline)**:
    - `StageDirectorSystem`: 현재 웨이브 및 텐션 상태 업데이트.
    - `CombatSystem`: 물리 연산, 충돌 판정, AI 이동 로직 실행.
    - `BossSystem`: 보스 패턴 및 기믹 업데이트.
    - `ModularWeaponSystem`: 발사 주기 및 레벨업 체크.
4. **Post-Process**: 사망 판정, 아이템 획득, UI 갱신 등 논리적 정리를 수행합니다.
5. **Render Dispatch**: 최종 계산된 위치 값을 그래픽 시스템에 전달합니다.

## 2. Dynamic Timestepping (Delta Time)
성능에 관계없이 일관된 게임 플레이 속도를 보장하기 위해 `deltaTime` 기반의 업데이트를 수행합니다.
- **Interpolation**: 렌더링 시 프레임 사이의 위치를 보간하여 시각적 부드러움을 극대화합니다.
- **Panic Mode**: 프레임 드롭이 심각할 경우, 물리 연산 횟수를 조절하여 게임의 '슬로우 모션' 현상을 방지합니다.

## 3. Integration with React Lifecycle
엔진은 `requestAnimationFrame`과 React의 `useEffect`를 결합하여 안정적인 생명주기를 가집니다.
- **Resource Disposal**: 게임 종료 또는 언마운트 시 모든 투사체 풀과 메모리 자원을 즉시 해제하여 메모리 누수를 방지합니다.

## 4. Key Implementation [[Reference|Reference]]s
- `src/features/game/hooks/useGameEngine.ts`: 메인 루프 파이프라인 정의.
- `src/features/game/systems/index.ts`: 시스템 등록 및 정렬 로직.

---
**Status**: Managed by Skybound Protocol
**Context**: Engine Engineering / Runtime Pipeline
