일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- C++최적화
- 프로그래머스
- UML관련
- 정렬
- stl
- moreeffectiveC++
- 스마트포인터
- 데이터애셋
- dataasset
- unorder_map
- 강참조
- 선택정렬
- 람다사용정렬
- 애셋로드
- UE_LOG
- 크리티컬섹션
- C++
- 델리게이트
- 약참조
- UE4 커스텀로그
- UELOG
- 언리얼엔진구조체
- enumasByue
- 람다
- 언리얼가비지컬렉터
- 자료구조
- BFS
- 정렬알고리즘
- 알고리즘
- map
- Today
- Total
목록UnrealEngine (81)
기억을 위한 기록들
최근에 안드로이드 라이브러리를 제공받아 언리얼엔진 프로젝트에 적용해야 하는 작업을 진행했고, 그 과정에서 경험했던것에 대해 나중을 위해 적어보려고 한다. (글에 틀린 부분이 있을 수도 있습니다.) 우선 안드로이드 라이브러리에 대해서 간단하게 알아보면 안드로이드 스튜디오를 통해 작성된 java 기반 aar 파일, 혹은 jar 파일이 있다. jar파일은 Java archive 의 약자로 자바로 생성된 클래스파일과 이미지등의 리소스 파일들의 포함되고, aar파일은 Android archive의 약자로, 안드로이드에 특화된 Jar파일이라고 보면 된다. aar파일은 안드로이드의 layouts, drawables 등 리소스 파일이 포함될 수 있다. (jar파일, aar 파일의 내부를 보려면 확장자를 zip으로 변..
(해당 정보는 대부분 웹 서칭을 통해 찾아보고 나중에 제가 혼자 참고하려고 정리해보고 있습니다.) 렌더링 프로세스에 대해 Game thread(게임 스레드)에서 Slate Tick은 프레임당 두 번 위젯 트리를 탐색.1번 틱 :Prepass 트리를 아래->위로 탐색하여 각 위젯의 이상적인 크기( DesiredSize )를 계산.2번 틱: OnPaint 트리를 위->아래로 탐색하여 렌더링에 필요한 Draw Elements 를 계산. Render Thread에서 Slate 렌더링은 두 단계로 나뉜다.1. Widget Render: UI의 RTT를 수행합니다. Retainer Box를 사용하는 경우 Draw Elements는 Retainer Box의 Rtain Target에 렌더링됩니다.2. Slate R..
기존에는 언리얼엔진에서는 플레이어 입력관련 바인딩 이벤트를 프로젝트 설정을 통해서 매핑을 시켜줬었다.하지만, 언리얼 엔진4부터 존재하다가 5부터 본격적으로 어필하고 있는 새로운 프레임워크 Enhanced Input System 직역하면 "향상된 입력시스템"을 도입했다. 그래서 언리얼엔진 5 부터는 기존 프로젝트 설정을 통한 입력 설정을 들어가서 살펴보면, 이제 사용하지 않을거라는 안내메시지가 나오면서, InputActions(IA)와 InputMappingContext(IMC) 를 사용하라고 안내해주고 있다. 향상된 입력 시스템은 우선 플러그인부터 활성화 해줘야한다. 활성화를 해준뒤, 애셋 생성창에서 보면향상된 입력 시스템은 입력 액션(Input Actions) , 입력 매핑 컨텍스트(Input M..
CDO(CDO: Class Default Object)는 C++ 클래스의 기본 인스턴스를 나타냅니다. 클래스의 CDO는 클래스의 기본 속성을 정의하고, 클래스의 인스턴스화 및 초기화 과정에서 사용됩니다. 이는 클래스의 인스턴스를 만들 때 적용되는 초기 속성 값들을 포함합니다. 언리얼 엔진에서는 CDO가 게임 객체의 기본 상태를 정의하는 데 사용됩니다. 예를 들어, 게임에서 사용하는 캐릭터 클래스의 CDO는 이 캐릭터가 소유할 수 있는 초기 속성 값을 정의합니다. 따라서 클래스의 인스턴스를 생성할 때마다 CDO의 초기값이 사용되어 해당 클래스의 객체가 초기화됩니다. UClass 매크로는 UObject 에게 자신의 언리얼에서 기반으로 삼은 유형에 대해 설명해 주는 UClass 로의 레퍼런스를 넘겨줍니다. 각..
언리얼엔진 공식홈페이지에 기반하여 개인적인 정리 목적에 의해 작성되었습니다. https://dev.epicgames.com/documentation/ko-kr/unreal-engine/networking-overview-for-unreal-engine 언리얼 엔진의 네트워킹 개요 멀티플레이어용 네트워크 게임 구성하기 dev.epicgames.com 로컬 플레이(싱글플레이)의 경우 싱글 플레이 게임이나 로컬 멀티플레이어 게임에서는 게임이 독립형으로 로컬에서 실행되고, 한 컴퓨터에서 액터들과 월드 및 각 플레이어의 UI 등 모든것을 직접 제어한다. 예를 들어 서로에게 발사체를 발사하는 게임이 있다고 치자. 네트워크 멀티플레이 게임 네트워크의 경우 언리얼엔진에서는 클라이언트-서버 모델을 사용합니다. 네트워크에..
이전에 std의 정규표현식에 관해 글을 작성하고, 언리얼에서 제공하는 정규표현식을 찾아보았다. https://hyo-ue4study.tistory.com/613 [CPP] C++ 정규 표현식 (regex / regular expression)에 관하여 C++ 11부터 포함된 정규 표현식( regular expression )이라는 라이브러리가 존재합니다. 정규표현식이란 문자열에서 특정 패턴을 찾거나 혹은 매치시키기 위해 사용되는 문자열의 표현으로, 헤더 파일 hyo-ue4study.tistory.com 언리얼엔진에서 정규표현식 관련된 클래스가 정의 되어 있다. FRegexPattern 이라는 클래스로 엔진 경로 "UE_5.2\Engine\Source\Runtime\Core\Public\Internatio..
GE(GameplayEffect) 라고도 불리고, 영어로 Effect로 불려서 VFX(특수효과)랑 헷갈릴수도 있는데, "영향을 준다" 라는 뜻으로 이해하면 되겠다. GAS는 게임에 영향을 주는 객체를 별도로 분리해서 관리한다. 영향을 준다는 것은 대부분 게임 데이터를 변경 하는것을 의미하고, 대부분 GE와 어트리뷰트(Attribute)는 함께 동작하도록 구성되어 있다. GAS 시스템에서 가장 많은 기능을 제공하는 클래스이기도 하다. GE 타입 3가지 1. Instant : 즉시 적용되는 GE. 한 프레임에 실행된다. 2. Has Duration : 지정한 시간동안 동작하는 GE 3. Infinite : 명시적으로 종료하지 않으면 무한하게 동작하는 GE GE에서 어트리뷰트의 변경 방법을 지정한 설정 할 수..
https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/Tags/ 게임플레이 태그 게임플레이 태그는 오브젝트 식별, 분류, 일치, 필터링에 사용 가능합니다. docs.unrealengine.com 사용자 정의 이름을 붙인 개념적 계층형 라벨입니다. 이 태그는 "." 글자로 구분되는 계층구조를 몇 단계든 가질 수 있습니다. 예를 들어 세 단계의 게임플레이 태그는 "Family.Genus.Species" 형태를 띄며, "Family" 가 계층구조에서 가장 넓은 식별자가 되고, "Species" 는 가장 구체적인 것이 됩니다. 참고로 "Family.Genus.Species" 가 존재한다는 것은 "Family.Genus" 와 "Family" 게임플레이 태그..
Game Ability System 플러그인을 활성화 한다면 사용 할 수 있는 클래스들이 어떤것이 있고 주로 어떻게 사용할까에 대해 써보려고 한다. Ability System Component (ASC) - 액터에 추가 할 수 있는 컴포넌트 - 액터에 붙임으로 인해 GAS 프레임워크랑 상호작용 할수 있게 해준다. - GAS와 상호 작용하기를 원하는 액터는 자체 ASC 또는 다른 Actor가 소유한 ASC에 액세스해야 합니다. - 능력 부여, 해당 능력 활성화, 알림처리 등 게임플레이 Ability 시스템 Attributes / Attribute Set - 특정 캐릭터나 오브젝트와 연관되는 다양한 속성들 모음. (ex 체력, 마나 등등) - 모든 값들은 float다 (스마트하다) - 현재 값과 기본값이 있..
https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/GameplayAbilitySystem/ Gameplay Ability System High-level view of the Gameplay Ability System docs.unrealengine.com Lyra 프로젝트를 분석해보던중 GAS 프레임워크에 대해 궁금해서 최대한 찾아보고 정리해보려고 이 글을 시작했다. 영어로 된 문서가 많고 용어가 헷갈리긴 해서, 해당 글에 이상한 부분이 있을 수도 있다. 언리얼엔진 문서에 따르면 게임 어빌리티 시스템은 매우 유연한 프레임워크로서, RPG 및 MOBA 장르 게임에서 유용하다고 합니다. 실제로 포트나이트에 적용되고 있다고 한다. 게임 속 캐릭터가 ..
Lyra 프로젝트를 분석해보던 중에 Common UI이라는 플러그인을 기반으로 UI가 구성되어있는것을 확인했다. 이게 뭐고 왜 쓰는지에 대해 궁금해서 찾아보았는데, 에픽게임즈에서 개발하는 '포트나이트'에도 적용되어 있는 프레임워크로서 공식문서를 살펴보면, 레이어, 서브메뉴, 팝업UI 등 다양한 UI 구조가 생기면서 이를 관리하기 위해 기반이 된것으로 보인다. 그 외에도, 크로스플랫폼을 지원하는 포트나이트가 입력 방식이 키보드 마우스(KBM)와 게임 패드 등으로 크게 나누어져 있고, 그 사용자 기기에 따라 UI 요소들이 변경되어야 한다고 한다. Common UI의 기능으로 레이어가 많은 다양한 종류의 UI들을 쉽게 생성하고, 선택할수 있고, 멀티 플랫폼에 대응하기 위함으로 보인다. 입력 라우팅(Input ..
언리얼엔진을 이용한 개발 하다 보면, 다양한 데이터들을 런타임에 불러와서 사용할 때가 있는데, 언리얼 엔진 에디터를 통해서 다양한 데이터들을 다루고, 관리를 해야 한다. 프로그래머 혼자 뿐만 아니라 같이 작업하는 디자이너나 기획자들도 이런 언리얼 엔진 데이터를 수정하여 작업을 하게 되는데, 언리얼엔진에는 크게 데이터 테이블과 데이터 애셋이 존재한다. 어떤 경우에는 데이터 테이블을 통하고, 어떤 경우에는 데이터 애셋을 통해 관리하는 게 좋을지 궁금해서 찾아보았다. 그러다가 언리얼 에픽 온라인 러닝에 해당 주제로 강의 데이터 테이블 - CSV, JSON 등 데이터 파일 활용 가능 -> 이러한 외부 파일을 사용하여 데이터 채울 수 있음, 에디터를 통해서도 내부 작성도 가능 - 언어 팩과 같은 대용량의 단순 데..