플레이어 입력(PlayerInput) 오브젝트는 플레이어의 입력을 플레이어 컨트롤러 또는 폰과 같은 액터가 이해하고 사용할 수 있는 데이터로 변환하는 기능을 한다. 이는 플레이어의 하드웨어 입력을 플레이어 입력 매핑 및 입력 컴포넌트를 통한 움직임과 게임 이벤트로 변환하는 입력 처리 흐름의 일부다. 하드웨어 입력 플레이어의 하드웨어 입력은 일반적으로 키 누름, 마우스 클릭 또는 마우스 움직임, 컨트롤러 버튼 누름 또는 조이스틱 움직임 등이 있다. 표준 축 또는 버튼 인덱스를 따르지 않거나 특이한 입력 범위를 갖는 특수 입력 디바이스는 RawInput 플러그인을 사용하여 수동으로 설정할 수 있다. 플레이어 입력 PlayerInput은 플레이어 입력을 관리하는 플레이어 컨트롤러 클래스 내의 UObject다...
시작하며 코드에서 UI 로직을 만들려고 할 때 블루프린트에서 디자인한 위젯을 제어하려할때 BindWidget meta 지정자를 이용하여 제어할 수 있다. BindWidget 예제 UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) class UTextBlock* TextName; UPROPERTY(BlueprintReadWrite, meta = (BindWidget)) class UImage* ImgIcon; 정작 UPROPERTY 공식문서에서는 없지만 UI개발시 가장 많이 사용하는 태그이다. 블루프린트에 동일한 클래스와 동일한 이름을 가진 위젯이 있다면 해당 위젯포인터로 코드(C++)에서 런타임에 엑세스 할 수 있다. 적용 방법 #pragma once #inclu..
언리언 엘진의 비헤이비어 트리 개념과 일반적인 비헤이비어 트리와의 차이점을 알아보자 언리얼 엔진 5(언리얼 엔진)에서 캐릭터에 사용할 인공 지능(AI)을 생성하는 방법은 다양하다. 블루프린트 비주얼 스크립팅(Blueprint Visual Scripting)을 사용하면 캐릭터가 애니메이션을 재생하거나, 특정 위치로 이동하거나, 충돌에 반응하는 등 '무언가를 하도록' 지시할 수 있다. AI 캐릭터가 스스로 생각하고 결정을 내리도록 하려면 비헤이비어 트리(Behavior Tree)를 사용해보자. 아래 비헤이비어 트리는 AI 캐릭터가 순찰과 플레이어 추격 사이에서 행동을 전환하는 예시다. 비헤이비어 트리 기본 비헤이비어 트리는 블루프린트와 유사한 시각적 방식으로 생성된다. 기능이 탑재된 다양한 노드를 추가하고 ..
공용 슬레이트 인수 다음은 공통 인수이다. IsEnabled - 상호작용(Interation) 가능한 위젯인지를 지정한다. 끄면 회식으로 비활성화 된다. ToolTip - 툴팁에 사용할 커스텀 SToolTip 위젯 종류를 지정한다. 지정되지 않으면 툴팁이 나타나지 않는다. ToolTipText - 간단한 툴팁으로 표시할 텍스트 유형을 지정한다. 지정되지 않거나, ToolTip 특성이 사용된 경우 나타나지 않는다. Cursor - 마우스를 올렸을 때 표시할 커서를 지정합니다. Visibility - 아래 Visibility 부분을 참고. Text - 텍스트가 적용 가능하다면 지정할 문구 Content - 콘텐츠가 적용 가능하다면 지정할 위젯 ReadOnly - True 면 이 위젯은 수정할 수 없다. St..
동기 위젯에서 UI를 만들 때 어려운 부분 UI 디자인과 반복 작업 데이터 흐름 제어 : 위젯과 내재된 데이터끼리 묶어주는것 UI 기술(description)을 위한 외국어 습득 IMGUI : Immediate Mode Graphics User Interface 장점 프로그래머는 UI 기술이 데이터에서 구하기 쉽다는 점에서 코드와 비슷하다는 점을 선호한다. 실효(Invalidation)은 문제가 되지 않고, 그냥 데이터를 직접 폴링(poll)한다. 인터페이스의 절차적 생성이 쉽다. 단점 애니메이션과 스타일링 추가가 어려움 UI기술이 명령형 코드라서, 데이터 주도형으로 만들기 어려움 목표 모델의 코드와 데이터에 쉽게 접근 UI 절차적 생성 지원 UI 설명이 꼬이지 않도록 애니메이션과 스타일을 반드시 지원 ..
Slate는 Unreal Editor 또는 게임내 사용자 인터페이스와 같은 도구 및 응용 프로그램용 사용자 인터페이스를 효율적으로 구축하도록 설계된 플랫폼에 구애받지 않는 맞춤형 사용자 인터페이스 프레임워크이다. 서술형(declarative) 문법에 쉬운 디자인, 레이아웃, 스타일 요소가 결합된 Slate를 통해 쉬운 UI제작 및 반복 작업이 가능할 것이다. Slate UI 솔루션으로 툴과 어플리케이션에 사용할 GUI를 매우 쉽게 조합시킬수 있으며, 반복처리도 빠르게 가능하다. 서술형 문법 Slate의 서술형 문법(Declarative syntax)은 프로그래머가 인디렉션(indirection) 레이어를 추가하지 않고도 UI제작을 가능하게 해준다. SLATE_BEGIN_ARGS( SSubMenuButto..
Unreal Engine TTuple 개요 언리얼 엔진에서 TTuple을 사용하려 하는데 공식 가이드 문서도 없고(API 페이지만 있음) 마땅한 참고 예제가 없어 정리하고자 한다. Tuple은 2개이상의 값을 하나의 변수에 담기 위해 사용된다. 예제 // 선언과 초기화 TTuple TupleTest(1, TEXT("Test")); TTuple TupleTest2 = MakeTuple(2, TEXT("Test2")); //값 대입 TTuple TupleTest3; TupleTest3.Key = 3; TupleTest3.Value = TEXT("Test3"); TTuple TupleTest4; TupleTest4.Get() = 4; TupleTest4.Get() = TEXT("Test4"); TTuple T..
카오스 물리엔진 리지드 바디 시뮬레이션 (Rigid Body Simulation) 콜리전 디텍션 (Collision Detection) 피직스 컨스트레인트 (Physics Constraints) 비동기 쿼리 (Async Query) 랙돌 (Ragdoll) 비히클 (Vehicle) 카오스 디스트럭션 (Destruction) 카오스 클로스 (Cloth) 언리얼 엔진 5의 카오스 피직스 PhysX 에서 달라진 부분 비동기 물리 시뮬레이션 지원 (실험 기능) Double Precision 지원 (Origin Shift 미지원) 낮은 프레임율에서의 안정성 개선, 길게 연결된 체인의 안정성 개선 PhysX 비주얼 디버거 미지원 (새로운 물리 디버깅 도구 지원 예정) 리지드 바디의 피직스 타입 기본 (Default)..
프로파일링 Stat UnitGraph CPU, Draw, RenderThread 중 어디서 병목현상이 발생하는지 GameThread에 집중해서 최적화 진행 / 쉐이더 컴파일을 미리하는 PSO(Pipeline State Object) 캐시 진행 Unreal Insight 어떤 Thread 나 어떤 Scope에서 병목현상이 나는지 확인할 수 있다. 주요 Trace 채널 CPU LoadTime GPU Net 데디케이티드 서버 멀티플레이 테스트 Nullrhi (Null Rendering Hardware Interface) rendering 없이 클라이언트 실행 Nullrhi 옵션을 통해 로컬에서 8인 멀티플레이 테스트 최적화 핵심전략 White List : 필요한 기능을 필요한 시간에만 필요 없는 Module,..
언리얼 서밋 2022 언리얼 서밋 내용들중 모듈형 게임플레이 세션의 내용들을 정리하고자 한다. 게임플레이 프레임워크 언리얼 엔진의 인터랙티브 경험 제작 가상 세계를 정의하는 언리얼 엔진 표준 게임 피처 플러그인 런타임 플러그 앤 플레이 지원 기능 명세서 / 엔진에 창작자 의도 설명 플러그인 상태 설치됨 / 등록됨 / 로드됨 / 활성화 활성화 / 비활성화로 게임플레이 조절 액션 동작 리스트 : 활성화시 실행 기본 지원 동작 4가지 / 확장 가능 치트 : 치트 매니저 + 치트 매니저 확장 컴포넌트 : 액터 + 액터 컴포넌트 데이터 레지스트리 : 추가 데이터 레지스트리 데이터 레지스트리 소스 : 데이터 레지스트리 확장 게임 피처 에셋 매니저 : 활성화 시 엔진에 등록할 콘텐츠 모듈형 게임플레이 제작 지원 기능..
도시에서 유닛 생산하는 기능과 도시의 영역을 표시하는 작업을 진행하였다. 유닛생산 유닛을 생산하기 위해서는 도시의 생산력, 유닛을 생산하기위한 필요 생산량 정보가 있어야 했다. 도시의 생산력은 도시 데이터에 바로 담았다. 추후 도시의 레벨이라던지 도시에 새워진 건물 보너스 등으로 인해 계산되어질수 있도록 할 예정이다. 유닛의 필요 생산량정보는 별도의 유닛 테이블 클래스를 만들어 유닛의 스탯정보 및 생산정보를 담았다. 포스트 프로세스 적용 패키지 매니저에서 Post Processing 을 임포트 해서 패키지를 적용하였고, 볼륨과 레이어를 설정해서 테스트를 하였다. 우선은 화면의 밝기만 조절하고자 Color Grading 만 설정하였다. 도시 영역 표시 URP로 전환 도시의 영역표시를 타일의 아웃라인으로 처..
언리얼 엔진에서 Volume(볼륨) 이란 레벨의 일정 영역에 대한 작동방식을 변경하는 데 사용되는 3차원 액터이다. 볼륨 내 플레이어 또는 다른 액터에 대미지를 유발 특정 액터의 볼륨 진입금지, 즉 충돌 표면 역할 액터가 볼륨에 들어서면 이벤트를 발생 레벨의 라이팅 또는 가시성 계산 방식을 변경 볼륨 배치와 생성 액터 배치 창에서 볼륨 탭을 선택한다음 레벨 뷰포트에 끌어다 놓으면 된다. 볼륨을 레벨에 배치후 원하는 대로 크기와 위치를 조정하면 된다. 브러시 모든 볼륨 액터들은 AVolume을 상속 받고, AVolume은 ABrush를 상속 받고 있다. 그리고 ABrush에는 Brush라는 UModel 변수를 통해 폴리곤 정보 (외형정보)를 가지고 있다. 브러시 빌더 브러시의 폴리곤 정보를 가공(빌드)하기..
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.