개발자 면접 공부/언리얼 엔진 17

언리얼 엔진 액터의 생명주기(액터 스폰)

1. 개요 오늘은 언리얼 엔진의 엑터 생명주기 액터 스폰으로 시작하겠습니다. 2. 액터 스폰 액터를 스폰(인스턴싱)할 때 따르게 되는 경로입니다. SpawnActor (액터 스폰)이 호출됩니다. PostSpawnInitialize (스폰 초기화 이후)가 호출됩니다. PostActorCreated 액터 생성 이후 - 스폰된 액터의 생성 이후에 호출됩니다. 생성자같은 것이 여기에 와야 합니다. PostActorCreated (액터 생성 이후)는 PostLoad (로드 이후)와 상호 배제적입니다. ExecuteConstruction (생성 실행): OnConstruction 생성시 - 액터의 생성 지점으로, 블루프린트 액터가 컴포넌트를 만들고 블루프린트 변수를 초기화시키는 곳입니다. PostActorConst..

언리얼 엔진 액터의 생명주기(에디터에서 플레이)

1. 개요 오늘은 언리얼 엔진의 엑터 생명주기 에디터에서 플레이 으로 시작하겠습니다. 2. 에디터에서 플레이 에디터에서 플레이 경로는 디스크에서 로드와 거의 똑같지만, 액터를 디스크에서 로드하기 보다는 에디터에서 복사해 옵니다. 에디터에 있는 액터를 새 월드로 복제합니다. PostDuplicate (복제 이후)를 호출합니다. InitializeActorsForPlay (플레이용 액터 초기화) 초기화되지 않은 액터는 RouteActorInitialize (액터 초기화 전달), (심리스 트래블 이전 처리) PreInitializeComponents (컴포넌트 초기화 이전) - 액터의 컴포넌트에서 InitializeComponent (컴포넌트 초기화)가 호출되기 이전에 호출됩니다. InitializeCompo..

언리얼 엔진 액터의 생명주기(디스크 로드)

1. 개요 오늘은 언리얼 엔진의 엑터 생명주기 디스크 로드편으로 시작하겠습니다. 2. 액터의 생명주기 액터란 실제로 레벨에 직접 물체를 불러들일수있는것중 하나입니다. 보통 액터를 생성할때 직접 레벨에 끌어다가 생성을 할수 있고, 아니면 코드로 SpawnActor를 통해 생성이 가능합니다. 아래의 사진은 액터의 생명주기 그림입니다. 3. 디스크 로드 디스크 로드는 이미 레벨에 있는 액터에 대해서, LoadMap이 발생했을 때나 AddToWorld가 호출되었을 때 발생합니다. 패키지/레벨에 있는 액터가 디스크에서 로드 PostLoad로드 이후 - 디스크에서의 로드 완료 후 Serialize(직렬화) 된 액터의 의해 호출됩니다. 커스텀 버전이나 픽스 작업은 이 곳에 와야 합니다. PostLoad 는 PostA..

RTTI vs Reflection

1. 개요 오늘은 RTTI vs Reflection 에대해서 알아보도록 하겠습니다. 2. RTTI RTTI 는 Run Time Type Information 의 약자로 C++에 핵심 기술입니다. 보통 virtual 함수를 통해 실행시간에 클래스의 정보를 가져오는 역할을 합니다. 실행시간에 정보를 가져온다는 점이 특징이며, RTTI는 객체의 정보 및 함수 오버라이딩을 할수있어 다양성 성격을 띄우지만 변수를 가져오지 못합니다. https://chogyujin-study.tistory.com/25 C++ RTTI 에 대해 오늘은 RTTI에 대해 공부하겠습니다. RTTI란? Run Time Type Information의 약자로 프로그램 실행 중에 개체의 형식이 결정될 수 있도록 하는 매커니즘입니다. 다시 말해..

FSM, HFSM, BT 의 구조

오늘은 FSM(유한 상태 머신), HFSM(계층형 유한 상태 머신), BT(비헤이비어 트리) 에 대해서 공부하도록 하겠습니다. 1. FSM, HFSM, BT? FSM HFSM BT라는 말을 들으면 무슨 약자인가?? 라는 생각이 먼저 떠올릴것입니다. 이 각각 유한상태 기계, 계층 유한상태 기계, 비헤비어 트리라는 약자이며 각각 AI행동 패턴을 설계하는등 다양한 곳에서 사용됩니다. 프로그래머 뿐만아니라 기획자분들도 알면 좋다고 하며 알고리즘적이 아닌 구조를 이해하기위해 포스팅합니다. 2. FSM 유한상태 기게 단순한 AI를 설계할때 사용을 많이합니다. 해당 구조가 사용된 AI는 한 번의 한가지 상태를 이전합니다. 심플하게 두 가지 AI가 있다고 생각해봅시다. FSM은 한 번의 한가지의 상태만 가지고 있을수 ..

언리얼 엔진의 가비지 컬렉션

오늘은 언리얼 엔진의 가비지 컬렉션에 대해 공부하겠습니다. 1. 가비지 컬렉션? 가비지 컬렉션이란 메모리를 관리해주는 시스템으로 C#, JAVA 등 언어에는 기본적으로 가지고 있는 시스템입니다. 힙 메모리에 영역을 할당받으면 자동으로 가비지 컬렉션 시스템에 감시를 받으며 만약 더 이상 사용되지 않는 영역을 자동으로 해제작업을 해주는 시스템입니다. 하지만 이런 시스템은 C++에는 없으므로 수동으로 해제해주거나 스마트 포인터에 힘을 빌려서 사용해야합니다. 그렇치만 언리얼에서는 이 가비지 컬렉션을 지원을 해줍니다. 2. 언리얼의 가비지 컬렉션 언리얼에서 UPROPERTY 리플렉션을 붙인 객체는 언리얼 엔진이 자동으로 가비지 컬렉터를 이용하여 메모리를 관리합니다. 가비지 컬렉션을 수행함에 있어 리플렉션 시스템을..

언리얼 엔진의 리플렉션 (프로퍼티)

오늘은 언리얼 엔진의 리플렉션에 대해 알아보도록 하겠습니다. 1. 리플렉션? 리플렉션이라는 것은 자바나 C#등에서 지원하지만, 언리얼 엔진에서 사용되는 C++은 지원을 하지 않습니다. 그럼 어떻게 언리얼 엔진에서 지원을 해주는 것일가요? 자바는 리플렉션을 사용할때 객체를 통해 클래스의 정보를 분석해 내는 프로그램을 말합니다. 간단하게 컴파일 시간이 아니라 런타임시간에 동적으로 특정 클래스의 정보 객체화를 통해 분석 및 추출할수있는 프로그래밍 기법이라고 합니다. 그럼 언리얼 엔진의 리플렉션은 무엇인가? 공식 문서를 살펴보면 리플렉션은 프로그램이 실행시간에 자기 자신을 조사하는 기능입니다. 이는 엉청나게 유용한 데다 언리얼 엔진 테크놀로지의 근간을 이루는 것으로, 에디터의 디테일 패널, 시리얼라이제이션, 가..

언리얼 엔진의 CDO 로딩 과정 등

이번포스팅에는 언리얼의 초기화 과정 즉 CDO 로딩 과정을 공부하도록 하겠습니다. 1. 개요 언리얼 엔진에서의 C++ 상에 생성자는 constructHelpers라는 키워드를 사용하여 애셋이나 컴포넌트 등을 불러올수가 있고 붙힐수도 있습니다. 여기서 의문점이 들수밖에없습니다. 왜 언리얼 엔진은 각각의 생성자에 저런 특수한 키워드를 사용할수있으며 왜 begin play나 다른 함수에는 사용이 불가한가에 대해서 이를 통해 공부를 하였고 포스팅을 해볼려고 합니다. 2. UClass, 리플렉션, 프레임워크 UClass에는 언리얼 오브젝트에 대한 클래스 계층 구조 정보와 맴버 변수, 함수에 대한 정보를 모두 기록 언리얼 엔진은 하나의 오브젝트가 만들어지기 위해서는, 실제 컴파일 전에 언리얼 헤더 툴에 의해 헤더 ..

#9 에디터내 테스팅(플레이 & 시뮬레이트)

1.목차 1. 개요 2. 툴바 3. 에디터에서 플레이 4. 에디터에서 시뮬레이트 5. 게임플레이 테스팅 2. 개요 언리얼 엔진 에디터에서는 파일을 저장하지 않고도 에디터 안에서 아무데나 플레이어를 스폰시키고 게임을 바로 플레이 할수있습니다. 사용할 수 있는 프리뷰 모드는 두 가지, 플레이 버튼 및 시뮬레이트 입니다. 에디터내 프리뷰 시스템은 에디터에서 플레이와 에디터에서 시뮬레이트 세션 사이 전환을 지원이 가능합니다. 3. 툴바 에디터에서 시뮬레이트 또는 에디터에서 플레이 세션의 시작은 레벨 에디터 나 블루프린트 에디터 에서 적합한 툴바 버픈 또는 드롭다운 메뉴를 사용하여 가능합니다. 레벨 에디터 에서 플레이 버튼을 누르면 게임플레이 테스트가 가능한 에디터에서 플레이(PIE) 세션을 시작합니다. 드롭 다..

#8 기본 하우투(도움말, 액터 조작, 플레이, 액터 프로퍼티)

1.목차 1. 기본 하우투 2. 도움말 3. 액터 조작 4. 플레이 5. 액터 프로퍼티 2. 기본 하우투 언리얼 엔진 4의 에디터를 처음 사용할경우 자주 사용되는 기능을 빨리 익힐수 있게하는것. 각각 How To(어떻게?) 라는 주제를 가지고 단계별로 알게 될 것이다. 3. 도움말 & 답변 언리얼 엔진 4는 작업시, 무언가 이해가 가지않는 부분이 많습니다. 그 것을 도와주는것이 언리얼 엔진4 도움말입니다. 에디터에 명확한 설명과 예시를 보기위해 여러 기능을 제공해줍니다. 그로인해 초보자들은 더 많은 기능을 공부할수있으므로 걱정을 안하셔도 됩니다. 여러가지의 방법이 있습니다. 3.1 리치 툴팁 에디터의 특성 부분에 대해 더욱 자세히 배울수있는 첫 번째 방법은, 에디터의 리치 툴팁을 통한 방법입니다. 에디터..