Unreal Engine

Dev_Moses·2023년 3월 31일
0

UNREAL ENGINE

목록 보기
2/2

프로그래머 관점에서 언리얼 엔진 프로그래밍을 본격적으로 시작하려면 다음과 같은 시스템을 이해하고 사용할 수 있어야 한다.

1) 언리얼 엔진의 빌드 시스템

2) 언리얼 엔진의 모듈 시스템

3) 언리얼 엔진 실행 환경 (Runtime)

4) 언리얼 오브젝트의 선언과 관리

5) 언리얼 엔진 C++의 유용한 기능

언리얼 엔진으로 게임 콘텐츠를 제작 할 때는 다음에 제시한 각 요소를 설정하고 설계하는 능력을 갖춰야 함.

1) 게임 콘텐츠를 수용하는 환경인 월드(World)

2) 게임 콘텐츠의 기본 단위 액터(Actor)

3) 게임 플레이가 진행되는 배경 레벨(Level)

4) 게임에 입장한 플레이어(Player)에게 부여되는 액터

5) 게임의 승패를 결정하는 룰, 게임 모드(GameMode)와 관련 액터

6) 게임 제작에 필요한 각종 보조 기능

프로젝트를 구성하는 폴더의 역할은 다음과 같다.

1) Config : 게임 프로젝트의 설정 값을 보관하는 공간. 이 폴더를 제거하면 게임 프로젝트의

중요한 설정 정보가 날아가므로 항상 보관해야한다.

2) Content : 게임 프로젝트에 사용하는 애셋을 관리하는 공간. 항상 보관해야함

3) Intermediate : 프로젝트 관리에 필요한 임시 파일들을 저장하는공간. 이 폴더는 제거해도 에디터에

의해 자동으로 재생성된다.

4) Saved : 에디터 작업 중에 생성된 결과물을 저장하는 공간이다.

예를 들어 세이브(Save) 파일, 스크린샷은 모두이곳에 저장된다. 이 폴더를 제거하면 수동으로 저장한

세이브 파일이나 스크린 샷등이 삭제 될 수 있지만 게임 프로젝트에는 영향을 주지 않는다.

5) Binaries : C++ 코드가 컴파일된 결과물을 저장하는 공간. 이 폴더는 삭제해도 빌드 때마다 새롭게 생성된다.

6) Source : C++ 소스 코드가 위치한 공간. C++ 소스 외에도 언리얼 엔진의 독특한 빌드 설정을 담은 C소스 파일이 있으며, 폴더를 삭제할 때 프로젝트 구성이 망가지므로 주의해야 한다.

7) ~~~.sln : C++ 프로젝트를 관리하기 위한 비주얼 스튜디오의 솔루션 파일. 솔루션이 관리하는 각 프로젝트 파일은 Intermidiate 폴더 내 ProjectFiles 폴더에 있다.

프로젝트 파일과 솔루션 파일은 삭제 하더라도 uproject 파일을 우 클릭해 뜨는
Generate Visual Studio Project File 메뉴를 선택하면 언제든지 재 생성 할 수 있다.

사용자 지정 다이얼 로그

1) DebugGame : 자세한 디버깅을 위해 최적화가 안 된 결과물을 생성하는 빌드 구성.

게임 실행을 위한 exe 파일을 생성한다.

2) DebugGame Editor : DebugGame과 동일한 수준의 에디터용 DLL 파일을 생성한다.

3) Development : 중간 수준의 최적화와 디버깅도 가능한 결과물을 생성하는 구성이다.

exe 파일을 생성한다.

4) Development Editor :

Development 와 동일한 수준의 에디터용 DLL 파일을 생성한다. 설정의 기본값이다.

5) Shipping :

게임의 최종 배포를 위해 최적화된 코드를 만들어 내는 구성이다. EXE 파일을 생성한다.

모든 객체가 UPROPERTY 매크로를 써서 자동으로 메모리를 관리 할 수 있는 것은 아니다. 이 편리한 기능은 UE4 오브젝트 라는 특별한 객체에만 사용할 사용할 수 있다.

언리얼 오브젝트는 언리얼 실행 환경에 의해 관리되는 C++ 객체다.
콘텐츠를 구성하는 객체들은 모두 언리얼 오브젝트라고 볼 수 있으며,

어떤 C++ 클래스가 언리얼 오브젝트 클래스가 되려면 클래스 선언에 언리얼 엔진이
정의한 특별한 매크로와 규칙을 부여해야 한다.

클래스 선언 매크로 : 해당 클래스가 언리얼 오브젝트임을 선언하기 위한 매크로다.

클래스 선언의 윗줄에 UCLASS라는 매크로를 선언하고 클래스 내부에는
GENERATED_BODY 매크로를 선언한다.

클래스 이름 접두사: 언리얼 오브젝트에는 항상 규칙에 맞게 접두사가 붙어야 한다.

접두사는 크게 U와 A가 제공되는데, A는 액터 클래스에 사용하고 U는 액터가 아닌 클래스에 사용한다. 우리가 제작하는 분수대는 액터이므로 AFOUNTAIN이라는 클래스 이름을 가지고, 액터의 구성요소인 스태틱 메시 컴포넌트는 액터가 아니므로 USTATICCMESHCOMPONENT라는 클래스 이름을 가진다.

generated.h 헤더 파일 : 소스 코드를 컴파일하기 이전에 언리얼 엔진은 언리얼 헤더 툴

Unreal Header Tool 이라고 도구를 사용해 클래스 선언을 분석하고 언리얼 실행환경에 필요한 부가 정보를 별도의 파일에 생성한다.
언리얼 헤더 툴에 의해 자동으로 생성되는 부가 파일이 generated.h파일이다.
코드를 작성하는 시점에 이 파일은 존재하지 않지만 컴파일 과정에서 필연적으로 발생하기 때문에
언리얼 오브젝트 선언의 마지막 #include 구문에 이 헤더 파일을 반드시 선언해야한다.

외부 모듈에의 공개 여부 : 윈도우의 DLL 시스템은 DLL 내 클래스 정보를 외부에 공개 할지 결정하는 __deslspec(dllexport)라는 키워드를 제공한다. 언리얼 엔진에서 이 키워드를 사용하려면 '모듈명_API'라는 키워드를 클래스 선언 앞에 추가 한다. 이 키워드가 없으면 다른 모듈에서 해당 객체에 접근 할 수 없다.

profile
게임 개발자 입니다.

0개의 댓글