
## 언리얼 엔진 101가지 팁과 트릭: "The Reckoning"
이 발표는 2019년 "100가지 언리얼 엔진 4 팁과 트릭" 발표의 후속작으로, 69개 팁을 발표했던 당시의 아쉬움을 딛고 101가지 팁을 제공하려는 "The Reckoning" (심판)이라는 이름으로 진행됩니다.
### 발표자 소개
* **Ari Arbjursson:** 2021년 유럽 언리얼 엔진 에반젤리스트, 현재 Epic Games 기술 개발자 관계팀 시니어 소프트웨어 엔지니어.
---
### **핵심 팁 및 트릭**
#### **1. 에셋 관리 및 편집**
* **속성 매트릭스 (Property Matrix):**
* 다수의 에셋을 한 번에 편집할 수 있습니다.
* 에셋 선택 후 마우스 오른쪽 버튼 클릭 > "속성 매트릭스에서 선택 항목 편집" 선택.
* 특정 속성을 열로 고정하여 비교 및 편집 용이.
* **예시:** Nanite 비활성화된 다수 에셋 일괄 활성화.
* **실행 시점에 숨겨진 컴포넌트 표시:**
* 건축 스크립트 또는 런타임 시점에 동적으로 추가된 컴포넌트가 편집기에서 보이지 않을 때 활용.
* `편집기 설정 (Editor Preferences)` > `보기 (View)` > `숨겨진 건축 스크립트 컴포넌트 (Hide construction script component in details view)` 체크 해제.
* **사용되지 않는 블루프린트 정리:**
* 프로젝트에서 사용되지 않는 블루프린트를 찾아 삭제하여 최적화.
* **요리(Cook) 로그 개선:**
* `프로젝트 설정 (Project Settings)` > `요리사 (Cooker)` > `요리사 표시 모드 (Cooker display mode)`를 `이름 (Names)` 또는 `인스타이터 (Instigators)`로 설정.
* `이름`: 현재 요리 중인 에셋 이름 표시.
* `인스타이터`: 해당 에셋을 요리하도록 트리거한 요소 표시.
* **인사이트 작업 채널 (Insights Task Channel):**
* 프로파일링 시 "작업 완료 대기" 상태에서 어떤 작업인지 파악하기 어려울 때 유용.
* `작업 추적 (Task Trace)`에 `, task` 추가 또는 `채널 보기 (Channels View)`에서 `작업 (Task)` 활성화.
* 작업 간의 의존 관계 시각화.
#### **2. 물리 및 렌더링 최적화**
* **복잡한 물리 불필요 시 비활성화:**
* `프로젝트 설정 (Project Settings)` > `물리 (Physics)` > `기본 형상 복잡도 (Default Shape Complexity)`를 `복잡한 충돌 사용 (Use Simple Collision as Complex)`으로 설정.
* 충돌이 필요 없는 오브젝트의 복잡성 줄이기.
* **물리 시뮬레이션 스레딩 활용:**
* `미리 물리 (Pre-Physics)` 그룹의 일부 작업을 `물리 중 (During Physics)` 또는 `물리 끝 (End Physics)`으로 이동시켜 대기 시간 최소화.
* **카오스 시각적 디버거 (Chaos Visual Debugger):**
* `도구 (Tools)` > `디버그 (Debug)` > `카오스 시각적 디버거 (Chaos Visual Debugger)`에서 물리 시뮬레이션 상태, 충돌, 쿼리 등을 실시간으로 확인.
* 최적화 문제 파악에 매우 유용.
* **강제 MIP 레벨 상주 (Force MIP Levels to be Resident):**
* 동적 메쉬 렌더링 시 텍스처 스트리밍 문제를 방지. 텍스처를 영구적으로 로드하도록 설정.
* **고급 수자원 (Advanced Water) 플러그인:**
* 사실적인 강, 바다 등 구현.
* `얕은 물 강 (Shallow Water River)` 액터를 사용하여 나이아가라 시뮬레이션 기반으로 물 흐름 및 거동 구현.
* 물 시뮬레이션을 컴포넌트로 베이킹하여 성능 최적화 가능.
* **후처리 볼륨 설정:**
* 후처리 볼륨 설정이 콘솔 변수를 무시할 수 있으므로 주의.
* **디바이스 프로파일 (Device Profiles):**
* 다양한 하드웨어 성능에 따른 렌더링 설정 관리.
* `dp.override <프로파일 이름>` 콘솔 명령어로 즉시 테스트 가능.
* **콘솔 변수 도움말:**
* `콘솔 변수 ?` 명령어로 콘솔 변수 도움말 확인.
* `dump CVARS` 명령어로 모든 콘솔 변수 값 확인.
#### **3. 디버깅 및 개발 환경**
* **쉬피 런처 (Shipping Launcher) 활용:**
* `Visual Studio` 또는 `Rider`에서 실행 시 `기본 디렉터리 (Base Directory)`를 `Steamapps/common/<게임>/Binaries/Win64`로 설정하여 쉬핑 빌드 에셋 활용.
* **EZArgs / UnrealVS 플러그인:**
* `Rider`의 `EZArgs` 또는 `Visual Studio`의 `UnrealVS` 플러그인을 통해 시작 매개변수 간편 설정.
* **글로벌 INI 파일 설정:**
* `내 문서 (My Documents)\Unreal Engine\Engine\Config` 폴더에 `User.ini` 파일 생성 시 모든 프로젝트 및 게임에 적용되는 전역 설정 가능.
* **예시:** 에셋 편집기 열기 위치, 라이브 코드 자동 컴파일 비활성화 등.
* **솔루션 파일 이름 동기화:**
* `Unreal Build Tool\BuildConfiguration.xml` 파일에서 `ProjectFileGenerator.PrimaryProjectNameFromFolder=true` 설정 시 폴더 이름과 동일한 솔루션 파일 이름 생성.
* **콘텐츠 브라우저 단축키:**
* `Ctrl + B`: 현재 선택된 에셋을 콘텐츠 브라우저에서 찾기.
* `Ctrl + P`: 에셋 검색 및 열기.
* `Ctrl + Tab`: 현재 탭과 이전 탭 전환.
* `Ctrl + Shift + Tab`: 특정 탭 검색 및 열기.
* `Ctrl + W`: 현재 탭 닫기.
* **블루프린트 노드 비활성화:**
* 단축키 (설정 필요)를 사용하여 특정 노드 및 로직을 일시적으로 비활성화.
* **Shift Delete를 이용한 연결 유지:**
* 노드를 삭제할 때 `Shift + Delete`를 누르면 실행 링크를 유지한 채 노드만 삭제.
* **Ctrl + E (Asset Editor):**
* 선택한 에셋의 에디터를 빠르게 엽니다. 레벨 에디터에서 스태틱 메시 액터를 선택하고 `Ctrl + E`를 누르면 해당 스태틱 메시 에셋을 엽니다.
* **Shift + E (Select All of Class):**
* 레벨 에디터에서 특정 클래스의 모든 액터를 선택합니다.
* **`launch game` 명령:**
* 에디터 없이 바로 게임을 실행합니다. (에셋은 자동으로 로드)
* **액터 색상 지정 (Actor Coloration):**
* `보기 모드 (View Mode)`에서 `속성 색상 지정 (Property Coloration View Mode)`을 선택하고 속성을 지정하면 해당 속성을 가진 액터들이 시각적으로 구분됩니다.
* **기본 씬 루트 제거:**
* 블루프린트 생성 시 기본 씬 루트 아이콘을 제거하고 싶을 경우, 새로운 씬 컴포넌트를 생성하여 기본 씬 루트 위에 드래그하면 동일한 효과를 얻을 수 있습니다.
* **G-버퍼 접근 (Niagara):**
* 나이아가라 파티클 시스템에서 G-버퍼 데이터를 읽어와 구름, 파괴 효과 등을 구현할 수 있습니다.
* **에셋 새로고침 (Reload Asset):**
* 에셋 편집기에서 `마우스 오른쪽 버튼 클릭 > 에셋 동작 > 새로고침`을 통해 에셋을 이전 상태로 되돌릴 수 있습니다.
* **자동 저장 (Auto Save):**
* `내 문서\Unreal Engine\Saved\Autosave` 폴더에 여러 버전으로 자동 저장되어 이전 상태로 복구 가능.
* **Day Sequence / Celestial Vault 플러그인:**
* 시간대별 날씨 및 일출/일몰 효과를 사실적으로 구현.
* **임시 피벗 생성 (Alt + Middle Mouse Click):**
* 객체의 피벗 포인트를 임시로 변경하여 특정 지점을 기준으로 회전 및 이동.
* **런타임 셀 변환 스택 (Runtime Cell Transformer Stack):**
* `월드 설정 (World Settings)`에서 플레이 시작 또는 쿠킹 전에 스크립트를 실행하여 에셋을 최적화. (예: 스태틱 메쉬를 인스턴스 스태틱 메쉬로 변환)
* **PCG Shape Grammar:**
* 텍스트 기반으로 포인트 및 메시 배치를 자동화.
* **디버그 플로트 값 (Debug Float Values):**
* 셰이더, PCG, Niagara 등에서 플로트 값을 씬에 직접 출력하여 디버깅.
* **투과형 선택 활성화/비활성화 (Translucent Selection):**
* `T` 키를 눌러 투과하는 오브젝트를 선택하거나 선택하지 않도록 설정.
* **에셋 유효성 검사 도구 (Asset Validation Tool):**
* 프로젝트 내 에셋 이름 규칙을 강제하는 규칙 설정 가능.
* **Python 스크립트 활용:**
* 에디터 기능 자동화, 도구 개발 등에 유용.
* **Niagara 활용 (VFX 외):**
* 군대 시뮬레이션, 발자국 시스템, 덩굴 물리, 텍스처 생성 등 다양한 용도로 활용.
* **비동기 메시지 시스템 (Async Message System):**
* 이벤트 디스패처와 유사하지만, 다른 블루프린트와의 명시적인 연결 없이 메시지 전달 가능.
* **에디터 전용 액터 (Editor Only Actor):**
* 에디터에서만 보이도록 설정하여 최종 빌드에서 제외.
* **캐싱 (Caching):**
* 데이터 테이블 조회 등 반복적인 작업을 Map에 저장하여 성능 최적화.
* **작게 작업하기 (Work Smaller):**
* 전체 프로젝트 대신 특정 레벨, 짐 단위로 작업하여 개발 속도 향상.
* **블루프린트 "Get" 노드의 "Validated Get"으로 변환:**
* 널 값 검사를 자동화하여 코드 간결화.
* **커스텀 플레이어 카메라 매니저 (Custom Player Camera Manager):**
* `Blueprint Update Camera` 함수를 사용하여 커스텀 카메라 로직 구현.
* **메시-투-콜리전 (Mesh to Collision):**
* 모델링 도구를 사용하여 자동으로 콜리전 메시 생성 (Convex Decomposition 활용).
* **상태 트리 (StateTree):**
* AI뿐만 아니라 다양한 로직에 사용할 수 있는 범용 상태 머신.
* **UEFN (Unreal Engine For Fortnite):**
* 멀티플레이어 게임 프로토타이핑에 용이.
* **텍스트 렌더 액터 (Text Render Actor) 활용:**
* 에디터에서만 보이는 텍스트 표시용으로 사용.
* **데이터 테이블 검색 및 캐싱:**
* 데이터 테이블 검색 결과를 Map에 저장하여 반복 호출 시 성능 최적화.
* **버그 전달 (Bug It):**
* 현재 카메라 위치 및 상태를 복사하여 클립보드에 저장. 버그 리포트에 유용.
* **빌드 그래프 (Build Graph):**
* 복잡한 빌드 프로세스를 XML 파일로 스크립팅.
* **콘솔 명령 `jump ticks`:**
* 레벨에서 틱을 사용하는 모든 액터 목록을 표시.
* **블루프린트 디버거 (Blueprint Debugger):**
* 실시간으로 블루프린트 변수 및 노드 상태 확인.
* **블루프린트 디퓨징 (Blueprint Diffing):**
* 블루프린트 파일 간의 차이점을 시각적으로 비교.
* **노드 정렬:**
* 블루프린트 노드를 깔끔하게 정렬하여 가독성 향상.
* **메타 시피파이어 (Meta Specifier):**
* C++ 함수에 `self` 노드 자동 삽입 등 메타데이터 활용.
* **블루프린트 세트 멤버 (Set Members) 노드:**
* 구조체 변수의 특정 멤버만 변경할 때 유용.
* **에셋 썸네일 편집:**
* 에셋 브라우저에서 썸네일 회전 및 각도 설정 가능.
* **수학 표현식 노드 (Math Expression Node):**
* 블루프린트에서 복잡한 수학 공식 간결하게 구현.
* **에디터에서 재생 중 컴파일 (Allow recompiling during PIE):**
* `프로젝트 설정`에서 클래스를 등록하면 플레이 중 블루프린트 컴파일 가능.
* **블루프린트 예외 발생 시 중단 (Blueprint Break on Exceptions):**
* 에디터 플레이 중 에러 발생 시 즉시 중단되어 디버깅 용이.
* **함수 입력에 "Get" 노드 사용:**
* 입력 파라미터를 함수 내에서 복사하여 사용 시 깔끔한 코드 구성.
* **액터 색상 지정 (Actor Coloration):**
* 특정 속성을 가진 액터를 시각적으로 구분.
* **자산의 텍스처를 업데이트 할 때 자동 가져오기:**
* `에디터 설정` > `자동 가져오기 설정`에서 폴더 지정 시 텍스처 변경 시 자동 업데이트.
* **색조 조절 노드 (Desaturate Node) 활용:**
* 음수 값 사용 시 색상 채도 조절 가능.
* **컨트롤 리그 (Control Rig) 애니메이션:**
* 블루프린트에서 사인 노드로 컨트롤 리그 애니메이션 구동.
* **로컬 체인 다이내믹스 (Local Chain Dynamics) 노드:**
* 뼈 체인의 부드러운 움직임 구현.
* **하모닉스 노드 (Harmonics Node):**
* 주기적인 움직임 생성.
* **카메라 추적 (Camera Tracking):**
* 특정 액터를 카메라가 계속 추적하도록 설정.
* **구형 툴바 (Old Toolbar):**
* `도구 메뉴 (Tool Menus)` > `뷰포트 (Viewports)` > `툴바 (Toolbars)` > `0`으로 설정 시 이전 버전 툴바 사용 가능.
* **빌드 그래프 (Build Graph) 예시:**
* Lyra, Titan, CitySample 등에서 활용 예시 확인 가능.
* **물 시뮬레이션 베이킹:**
* 나이아가라 기반 물 시뮬레이션을 컴포넌트로 베이킹하여 성능 향상.
* **`bug it` 명령:**
* 현재 카메라 위치를 복사하여 다른 사람에게 버그 보고 시 공유.
* **자산의 썸네일 회전:**
* 에셋 브라우저의 썸네일 편집 모드에서 에셋 썸네일 각도 조절.
* **N`iagara` 활용 (VFX 외):**
* 군대 시뮬레이션, 발자국 시스템, 덩굴 물리, 텍스처 생성 등 다양한 용도로 활용.
* **정적인 데이터 저장:**
* 자주 사용되는 정적인 데이터는 Map에 저장하여 성능 최적화.
---
**총 팁 수: 109가지**