Unreal

Unreal Framework

춤추는수달 2023. 12. 5. 07:16

게임 프레임워크라고 한다면 게임이 종료될 때까지 무한루프를 돌며 입력을 받고, 게임 로직을 처리하는 형태가 떠오릅니다. 언리얼 엔진의 프레임워크도 이와 크게 다르지는 않습니다. 그러나 물론 언리얼 엔진의 강력한 기능들을 구현하기 위해자세히 들어가면 훨씬 복잡합니다. 따라서 언리얼 엔진의 기능들을 제대로 활용하기 위해서는 언리얼 엔진의 프레임워크를 공부할 필요가 있다고 생각되어 이 글을 작성하게 되었습니다. 한 번에 모든 내용을 쓰기는 어려우니, 이번 글에서는 언리얼 프레임워크의 큰 틀에 대해서만 다뤄보겠습니다.


엔트리 포인트

언리얼에는 수많은 모듈들이 있습니다. 그 중 우리가 궁금한 언리얼 엔진의 메인 함수는 'Launch' 라는 모듈에 있습니다. 

솔루션 탐색기에서 UE5 > Source > Runtime > Launch > Launch.cpp 를 찾을 수 있습니다.

Launch.cpp에는 GuadMain()이라는 함수가 존재하며, 이 함수가 언리얼 엔진의 메인 함수입니다. 이 함수가 엄청 긴 내용은 아닙니다. 하지만 여기에 모두 옮기기엔 조금 장황하다고 생각되어, 극단적으로 중요한 부분만 요약해 보자면 아래와 같은 형태입니다.

int32 GuardedMain( const TCHAR* CmdLine )
{
	FCoreDelegates::GetPreMainInitDelegate().Broadcast();
    
	int32 ErrorLevel = EnginePreInit( CmdLine );

	ErrorLevel = EngineInit();

	while( !IsEngineExitRequested() )
    {
        EngineTick();
    }

	return ErrorLevel;
}

여기에 우리가 알아야할 중요한 함수가 3가지 등장합니다. 이 3가지가 언리얼 프레임워크의 중추이며, 하는 주요 역할은 아래와 같습니다.

  • EnginePreInit : 엔진, 각종 모듈&프로젝트 로딩
  • EngineInit : Creating & Starting Engine 
  • EngineTick : 사용자 입력 처리, 게임 Update 로직 처리, 렌더링 처리.

언리얼 엔진의 메인 로직에 대해 간단히 살펴보았으니, 다음 글에서는 PreInit 과정을 조금 더 자세히 살펴보도록 하겠습니다.


참고 자료 : https://www.youtube.com/watch?v=IaU2Hue-ApI&list=PLgIBMlWm501pi21I23ad4cwpJBGNuKi_h&index=6

'Unreal' 카테고리의 다른 글

Unreal Framework - Init  (0) 2023.12.07
Unreal Framework - PreInit  (0) 2023.12.05
애니메이션 블루프린트 초급  (0) 2023.10.24