본문 바로가기
자기개발/Unreal Engine

언리얼의 Game Framework에 대하여

기본적으로 게임은 GameLoop형태로 진행됨

main함수 부터 시작하여 while (플레이어의 인풋, 업데이트 , 렌더링) 무한반복

여기서 언리얼은 쉬운게임 개발을 위해 엔진레벨에서 알아서 처리해서 GameLoop해줌 (다양한 게임모드, 플렛폼호환, 등,,) 을 알아서 처리해주고 BeginPlay부터 시작

몇천줄의 코드들 안에 LaunchEngineLoop.h를 보면 이런식으로 Loop되는데 먼저

1, PreInit에서 대부분 모듈을 로드함

엔진은 수많은 모듈들을 사용함 코어 모듈, 초기화모듈, 그리고 프로젝트 코드, 커스텀 플러그인 등..

2. GEngineLoop가 시작되면 게임엔진의 설정같은걸 적용시키고 맵을 URL을 통하여 로드하기 시작 멀티플레이게임은 127.0.0.1처럼 서버를 통해, 싱글플레이는 "MAPNAME" 같은 맵이름을 통해서 

물론 같이 딸려오는 정보들도 함께

이후 Engine initialization에서 맵이 로드되면서 이런것들을 같이 로드함

PS: 가운데 하얀선 기준으로 위는 엔진오브젝트라 계속실행되지만, 아래는 게임오브젝트로 다른맵으로 로드시 사라짐 (물론 static같이 계속 유지시킬 방법도 있음)

--1) AGameModeBase 게임의 규칙, 가장큰 권한, 서버만 가지고 있음

2) AGameSession  온라인게임이라면 로그인 요청승인, Steam같은 온라인 서비스 인터페이스 역할함, 서버만 가지고 있음

3) AGameNetworkManager  치트감지, 움직임 예측 서버만 가지고 있음

4) AGameStateBase 는 서버에서 생성되며 서버만 변경권한이 있지만 모든 클라이언트에 복제됨, 따라서 게임 상태와 데이터 저장하여 모든 사용자들이 정보를 갖도록 해줌

그리고 플레이어에 대한것을 로드하는데 엔진에서는 LocalPlayer로 표현, 게임세계 내에서는 PLayerController로 표현

로드완료되면 GameMode는 Controller, Pawn을 생성하고 Controller는 Pawn를 빙의(possess)해서 조정시킴

이제 loadmap을 완료했다면 게임시작준비가 완료되어서 UWorld에서 Beginplay가 시작되며 모든 액터들도 Beginplay하고 GameLoop가 시작됨

 

복습

 Main함수에서 PreInit(초기화) 하고 EngineLoop준비를 하고 Tick마다 Loop이 되고 Exit이 완료되는 엔진의 게임실행 구조

~18:43 참고

 

마무리로 게임을 디자인하는 단계라면

이정도 클래스가 기본으로 사용

만약 LoadMap단계 전에 모듈,플러그인, 등 건드려야할게 있다면 GameInstance까지 건드려야 한다.

 

출처 : https://youtu.be/IaU2Hue-ApI

https://docs.unrealengine.com/4.26/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Actors/ActorLifecycle/

'자기개발 > Unreal Engine' 카테고리의 다른 글

Network Replication 에 대하여  (0) 2021.07.29
Actros, Components에 대하여  (0) 2021.07.29
언리얼에서 모듈이란  (0) 2021.07.18
언리얼에서의 함수  (0) 2021.07.18
Coding Standard  (0) 2021.06.23