Cheat Manager in 언리얼엔진3

언3에서 치트키를 관리하는 방식에 대해 알아본다.

언3에서 치트키란?

보통 개발을 좀 더 편하게 진행하기 위해 캐릭터의 능력치를 올리거나 아이템을 바꿔 차는 등의 행위를 필요로 한다. 이러한 프로그래머의 요구를 반영하기 위해 언리얼엔진3 에서는 CheatManager 가 존재한다. 그리고 이 CheatManager 는 다음과 같은 사항이 고려되어 있다.

  • FINAL_RELEASE 에는 적용되지 않는다.
  • 네트워크 플레이에서는 인스턴스가 초기화되지 않는다.

초기화

이제 초기화 되는 곳을 살펴보자.

PlayerController.uc
simulated event PostBeginPlay(0
{
    ...
    if ( WorldInfo.NetMode == NM_Client )
    {
        SpawnDefaultHUD();
    }
    else
    {
        AddCheats(); // CheatManager 초기화
    }
    ...
}

위 코드를 보면 알겠지만 client 는 CheatManager 를 초기화 하지 않는다.

명시적 초기화

명시적으로 CheatManager 를 초기화해주는 방법이 존재한다. 이 명시적 초기화는 네트워크 플레이를 할 때나 client 에게도 CheatManager 를 제공해 준다.

아래의 코드를 보자.

PlayerController.uc
exec function EnableCheats()
{
`if(`notdefined(FINAL_RELEASE))
    AddCheats( true );              // 강제로 CheatManager 를 초기화
`else
    AddCheats();
`endif
}

FINAL_RELEASE 가 아닌 한 client 라도 CheatManager 를 초기화할 수 있도록 해준다.