
언리얼 엔진을 통해 개발하던 중 헤더나 소스 파일의 변경이나 기타 솔루션 관련 파일들의 수정사항이 발생하여 솔루션을 닫고 uproject를 rebuild하거나 솔루션을 변경점을 적용한 후 수동 rebuild를 하게되는 경우가 있습니다. 이 때, 올바르게 솔루션 또는 프로젝트 빌드를 완료했음에도 불구하고 추후에 디버깅을 하게될 때 아래와 같은 현상이 발생하면서 올바르게 디버깅이 되지 않는 문제점을 겪을 수 있습니다. 어떠한 경고나 에러 메시지를 보여주지 않기 때문에 당황할 수 있습니다. 이 때, 솔루션 탐색기를 가서(Visual Studio의 경우) 시작 프로젝트가 설정되어 있는지 확인이 필요합니다. Visual Studio에서는 시작 프로젝트로 설정된 프로젝트가 볼드체로 굵게 표시되어 있는데, 그림 2에..

언리얼 엔진 위에서 언리얼 엔진과 상호작용하려는 코드를 작성하기 위해서는 언리얼에서 제공하는 각종 매크로의 도움을 받을 수 밖에 없습니다. 그 중, UPROPERTY는 멤버 변수( 또는 프로퍼티 ) 앞에서 기술되며, UPROPERTY 내에 프로퍼티 지정자를 나열함으로써, 해당 프로퍼티가 엔진과 에디터의 다양한 부분과 상호작용할 수 있습니다. UPROPERTY UPROPERTY의 역할은 기본적으로 언리얼 리플렉션 시스템에 해당 프로퍼티가 있음을 알리는 것입니다. 예를 들어, 다음과 같이 기술하면 : UPROPERTY() USomeClass* SomeClass; 빌드 시에 UHT(Unreal Header Tool)이 이 매크로를 감지하고 리플렉션 유형에 추가하게 됩니다. 이렇게 언리얼 리플렉션 시스템에 추가..

언리얼 엔진에서는 UI를 구성하기 위한 다양한 프레임워크를 제공하고 있습니다. 구체적인 종류는 제목에 언급한 것과 같이 나열됩니다 : UMG (Unreal Motion Graphic) HUD Slate Framework UI에 대한 정의는 언리얼 엔진 공식 문서에 다음과 같이 기술되어 있습니다 : 유저 인터페이스 는 메뉴와 기타 상호작용형 요소를 말합니다. 이러한 요소는 보통 HUD 와 매우 흡사하게 화면상에 그려지지만, 특정 상황에서는 월드의 표면위에 렌더링되는 게임 월드 자체의 일부가 되기도 합니다. UI 의 가장 명확한 예는 게임 시작시 표시되는 메인 메뉴나, 플레이어가 게임을 일시정지시킬 때 뜨는 메뉴입니다. 그 외에도 플레이 도중 다른 UI 가 표시될 수도 있습니다. 이를 통해 게임 내 캐릭터간..

언리얼에서는 언리얼 오브젝트(UObject)를 상속받은 파생 클래스들에 대한 선택적 클래스 스코프(Optional Class Scope)를 통한 빠른 검색을 지원하는 반복자 기능을 지원합니다. 이러한 기능을 수행하는 반복자는 크게 UObject들에 대한 순회를 지원하는 오브젝트 반복자와 AActor들에 대한 순회를 지원하는 객체 반복자입니다. 이러한 함수를 사용하여 모든 런타임 액터 및 오브젝트들을 검색하거나, 특정 클래스만을 검색할 수 있습니다. 이러한 기능의 제공은 사용자가 스스로 액터의 동적 배열을 유지하고 관리할 필요가 없으며, 단지 액터가 소멸(destroy)될 때 이 액터가 제거되는 것만 기억하면 됩니다. 액터 및 오브젝트 반복자는 항상 사용자의 게임 월드에 여전히 존재하는 모든 액터 및 오브..

최근 일주일 조금 넘도록 런타임에서 스태틱 메시를 생성하는 방법을 알기 위해서 엔진을 뒤적거렸었습니다. 결과적으로는 시간과 도메인 지식의 부족으로 인해서 후일로 기약하게 되었습니다만, 그동안 알게된 것을 조금 적어보고자 합니다. 이번 포스팅에서는 그 중 런타임 중에 스태틱 메시가 가지고 있는 정점 배열에서 정점을 읽어오는 것을 설명하고자 합니다. RenderData 스태틱 메시, UStaticMesh 클래스는 런타임뿐만 아니라 에디터 모듈 및 개발자(Developer) 모듈과도 얽혀있는 복잡한 클래스입니다. UStaticMesh 클래스에는 다양한 멤버 변수들과 함수들이 정의되어 있지만, 대부분이 에디터와 관련되어 있어 패키지된 빌드에서 UStaticMesh 클래스에서 가지는 변수, 함수들은 많지 않습니다..

언리얼 엔진으로 개발을 진행하다 보면, 다른 프로젝트에서 재사용 가능할 것 같은 코드들을 따로 모듈을 생성하여 개발할 때가 있습니다. 진행중인 프로젝트가 '게임' 프로젝트라고 가정한다면, 이 게임플레이 모듈과 직접적으로 연관되어 있지 않은 기능들을 다른 모듈에 둘 수 있다고 볼 수 있습니다. 언리얼 엔진에서는 이렇게 모듈을 분할하는 것에 대해서 다음과 같이 설명하고 있습니다 : 게임 DLL 모듈성에 대해서는 철학적 선택이 있습니다. 게임을 다수의 DLL 파일로 나누는 것은 그 이득보다 문제가 많을 수가 있지만, 이것은 각 팀의 요구와 원칙에 따라 결정해야 할 것입니다. 다중 게임플레이 모듈을 사용하면 링크 시간이나 코드 반복처리 시간이 빨라지겠지만, DLL 익스포트 및/또는 인터페이스 클래스를 처리해야 ..

언리얼에서는 경로에 대한 편리한 함수들을 제공하는 FPath 클래스가 있습니다. 이 클래스에서 제공하는 정적 함수들을 통해서 엔진/프로젝트 디렉토리의 특정 위치에 대한 경로를 FString 형태로 받아볼 수 있고, 이외에도 경로와 관련된 문자열에 대한 편리한 기능(디렉토리 부분만 제거, 확장자 추출 등)들을 제공합니다. 언리얼 엔진 공식 API 문서에서는 다음과 같이 정의되어 있습니다: 게임 디렉토리, 엔진 디렉토리 등을 검색하는 경로 헬퍼 이러한 함수들은 언리얼에서 공식적으로 제공하는 API에서 간략한 설명을 볼 수는 있지만, 그것이 결과적으로 무엇을 출력하는지에 대하여 기술되어 있지 않기 떄문에 편리하게 참조하여 사용할 수 있도록 정리하고자 합니다. 경로 RootDir : 엔진 디렉토리 트리의 루트 ..

언리얼 엔진에서 사용되는 함수들 중에서 Outer를 인자로 요구하는 함수들이 있습니다: NewObject, CreatePackage, SavePackage... 대부분의 경우, 해당 함수를 호출하는 클래스(this)를 인자로 집어넣으면 상관 없다고 하지만, 이유도 모르고 무작정 this를 설정했다가는 나중에 생각지도 못한 난관에 봉착할 수 있습니다. Outer가 무엇일까요? 저같은 경우, 이 괴상망측한 용어를 NewObject를 처음 사용하게 되었을 때 만났습니다. 처음에는 단어 의미도 몰라서 검색했던 기억이 납니다. Outer에 대한 공식 문서의 언급은 UObject 인스턴스 생성에서 처음볼 수 있습니다. 해당 문서에서는 Outer를 다음과 같이 설명하고 있습니다. Outer : 생성중인 Object ..
- Total
- Today
- Yesterday
- C++
- Perforce Streams
- 코드 저작권
- 알고리즘
- C7568
- visual studio 핫 리로드
- C# 람다식
- 행렬
- 언리얼 엔진
- C# 익명함수
- MSVC C1083
- Visual Studio C1083
- code copyright
- C++ Compile error
- 구글테스트
- c++ hot reload
- GoogleTest
- P4 Streams
- Auto
- UE4
- visual studio hot reload
- c++ 핫 리로드
- DXGI
- 퍼포스 스트림
- game hot reload
- 구간합
- C# lambda expression
- 퍼포스 개요
- Perforce Stream
- P4 Stream
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |