GameManager (게임 총괄 매니저)

게임의 전체 흐름과 글로벌 이벤트를 관장합니다. GameManager는 무엇을 할지 결정하고, 나머지 매니저들에게 어떻게 할지 지시합니다.

WaveManager (웨이브 매니저)

웨이브의 구성, 보상 지급, 아이템/몬스터 스폰 요청을 담당합니다.

  1. 데이터 로드: StartWave()가 호출되면, DT_WaveConfig (데이터 테이블)에서 현재 웨이브의 FWaveDataInfo를 찾아 CurrentWaveDataCache 변수에 저장합니다.
  2. 몬스터 수량 계산: MonsterSpawnList를 순회하여 TotalMonsterCount (예: 20마리)를 계산합니다.
  3. 아이템 큐 요청: ItemSpawnManager->GenerateDropQueue()를 호출하며, (1)번의 WaveData와 (2)번의 TotalMonsterCount를 전달합니다.
  4. 스폰 요청: EnemySpawnManager->RequestSpawn()MonsterSpawnList 만큼 호출하여 몬스터 스폰을 요청합니다.
  5. 보상 지급: EnemiesRemainingInWave가 0이 되면 OnWaveCleared()가 실행됩니다. 이 함수는 플레이어의 UInventoryComponent를 찾아 CurrentWaveDataCache에 저장된 WaveClearRewardBioCore 만큼 AddBioCoreCount()를 호출합니다.
  6. 루프 완료: GameManager->BeginPreparationPhase()를 호출하여 사이클을 완료합니다.

웨이브시스템.gif

EnemySpawnManager (몬스터 스폰 매니저)

WaveManager의 스폰 요청을 받아, 성능 저하 없이 자연스럽게 몬스터를 월드에 배치합니다.