Files
2nd/10_Wiki/Topics/Game-Engine-Loop-and-System-Orchestration.md
T

2.3 KiB

Game Engine Loop and System Orchestration

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

1. Engine Pipeline Hierarchy

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

  1. Input Polling: 사용자의 키보드/게임패드 입력을 스냅샷으로 캡처합니다.
  2. State Sync: 서버 또는 전역 상태 관리자로부터 데이터를 동기화합니다.
  3. 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 References

  • src/features/game/hooks/useGameEngine.ts: 메인 루프 파이프라인 정의.
  • src/features/game/systems/index.ts: 시스템 등록 및 정렬 로직.

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

🔗 Knowledge Connections