inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해

Unreal Engine의 핵심기능을 이해하기 위한 방법론에 대해 질문드립니다.

해결된 질문

1258

문민철

작성한 질문수 6

4

안녕하세요, 언리얼 프로그래밍 Part 1 강의를 듣고있는 문민철이라고 합니다.

언리얼 리플렉션 시스템 관련 내용을 들으면서 궁금한 것이 있어 질문드립니다. 어쩌면 리플렉션 시스템에 국한된 질문이 아닌, 전반적인 질문이 될 수도 있겠네요.

1. 강의에서는 언리얼 리플렉션 시스템이 어떤 것이고, 어떤 역할을 하는지에 대해 다뤄주셨습니다. 제가 궁금한 것은 이 기능들이 어떻게 동작하는지에 대한 내부 동작 원리입니다.

(언리얼엔진의 내부 구조동작 원리에 대한 지식을 얻기 위해 본 강의를 신청했습니다.)

2. 문서만으로는 이 내용들을 이해하는게 제한적으로 보이고, 실제 코드 분석을 하면서 이해해야 할 것 같습니다. 코드 분석 방법론(철학)에 대해 질문드리고 싶습니다.

- 소규모 코드의 경우 전체적으로 분석을 하면 되지만, UE5와 같은 대규모 코드의 경우 분석을 위해서는 접근하는 방법론이 필요해 보입니다. 분석하는 방법론을 추천해 주시면 감사하겠습니다.

3. 마지막으로, 이 강의를 들은 후 해 볼만한 과제(ex: Unreal Build System 동작 원리 분석 등, 언리얼 엔진의 내부 구조를 이해하기 위해 도움이 될 만한 것들)를 추천해 주시면 감사하겠습니다.

감사합니다.

unreal-engine 언리얼-c++

답변 1

2

이득우

안녕하세요. 좋은 질문이네요.
질문 주신 부분은 사실 많은 분들이 궁금해하시는 부분이기도 합니다.
1번에 대한 답변입니다.
언리얼 엔진이 제공하는 블루프린트라 흔히 부르는 창작자를 위한 상위 개발 환경은, 강의에서 언급한 언리얼 테크놀로지라고 부르는 C++ 프레임웍 기반에서 제공되는데, 이는 언리얼 오브젝트를 기반으로 구성되어 있고, 이 중의 핵심 기능 중 하나로 리플렉션이 있습니다.
이러한 언리얼 오브젝트는 C++ 언어가 제공하지 않는, 흔히 타입 정보라 불리는 클래스가 런타임에서 분석되고 인스턴스 값을 관리하는 기능을 제공하는데, 이들은 창작자들이 블루프린트를 사용해 가볍게 콘텐츠를 만들어주는 기반이 됩니다.
이러한 방향성은 언리얼 C++은 C++ 언어지만 Java나 C#이 추구하는 모던 객체 지향 언어 철학을 따른다고 할 수 있습니다. 이는 한번에 파악하기는 어렵고 강의를 진행하면서 계속 설명합니다.
지금 리플렉션을 막 마친 상황인데, 이후에 등장할 다양한 디자인 설계 기법에 대해서 학습해보시면 많이 도움될 것 같습니다. 그리고 언리얼 오브젝트가 어떻게 타입을 관리하는지에 대해서는 11강 구조체에서 추가로 설명하는데, Part1 강좌는 자료구조를 포함해 이러한 언리얼 엔진 C++의 특징을 설명하는데 거의 대부분의 시간을 할애했다고 보셔도 됩니다.
2번에 대해 답변을 드리면,
현재 언리얼 엔진 5를 분석하는 가장 좋은 공부 방법은 라일라(Lyra)샘플을 분석하는 것입니다. 다만 해당 샘플은 상위 개발 방법론인 GAS(Game Ability System)과 멀티 플레이까지 너무 많은 내용을 담고 있어서 먼저 기본에 해당하는 언리얼 엔진의 게임 프레임웍을 이해해야 합니다. 게임 제작을 체계적으로 빌드업하는 과정은 곧 올라갈 예정인 Part2 강좌에서 자세히 다룰 예정입니다.
3번에 대해 답변을 드리면,
해당 부분에 대해서는 가장 마지막 강좌인 15강에서 모두 정리해두었습니다. 다른 강좌와 큰 연관이 없어서 먼저 보셔도 무방합니다.

0

문민철

답변 감사합니다.

아직 모든 궁금증에 대해 해결된 것은 아니지만, 모든 강의를 듣고 난 후, 다시 정리해서 질문드리겠습니다.

감사합니다.

저는 저 노란색 미리보기 창이 안뜹니다

0

20

1

강의중에 사용하는 ppt 수업 자료

0

37

1

GetName(), SetName() 함수의 오버로딩 관련 문제 문의드립니다.

0

40

1

언리얼 공부 방법에 대해서 질문드립니다.

0

72

1

컴포지션을 위한 컴포넌트 생성에 관해 질문드립니다.

0

82

2

if (NameProp) 은 if (NameProp != nullptr)이랑 같은 의미인가요?

0

96

2

언리얼 계정 로그인 불가 문제

0

117

2

가비지컬렉션 주기를 짧게 유지하면 어떤 이슈가있을까요?

0

75

2

11강 TArray TSet 에 대해서 질문있습니다.

0

72

1

Unreal 연동 후 Visual Studio 빌드오류 제발 살려주십쇼

0

366

3

언리얼에서 제공하는 스마트 포인터 라이브러리 사용

0

75

2

FGCObject 상속 받은 객체에서 Uobject 삭제를 원할 때

0

80

2

게임 내 인벤토리 데이터를 관리 할 경우, TArray / TSet 무엇이 올바를까요?

0

74

2

8강 컴포지션 중 궁금한 것이 있습니다.

0

56

2

헤더 파일 분리 방법

0

84

2

언리얼 엔진 깃 설치

0

88

2

FObjectInitializer 를 사용한 생성자.

0

96

2

언리얼엔진 에서 새로운 클래스를 생성하면

0

75

2

GetName이 이미있는데용?

0

113

2

TObjectPtr 과 일반 포인터에 대한 용도 질문

0

105

2

UPROPERTY() 다음 라인에서 세미콜론이 입력되지 않습니다.

0

164

1

[18:50] 패키지 저장 시 이미 패키지가 있으면 로딩을 다 하고 저장하는 것이 좋은 이유가 궁금합니다

0

140

2

NonPropStudent가 GC이후 invalid된 이유

0

78

2

[44:22] 커스텀 구조체에서 GetTypeHash() 와 operator== 를 오버로딩 하는 이유에 대한 질문

0

108

2