개요
이 페이지에서는 뮤터블(Mutable) 을 사용하여 프로젝트의 캐릭터를 생성 하는 다양한 방법을 설명하고 비교합니다. 프로젝트마다 요구 사항이 다르며, 다양한 에셋에 한 가지 방법 또는 여러 가지 방법을 조합하여 뮤터블을 사용할 수 있습니다.
1. 플레이어 커스터마이징
플레이어 커스터마이징은 게임에서 플레이어가 자기 캐릭터 파라미터를 변경하거나, 반려동물, 무기, 집의 가구 같은 다른 게임 오브젝트를 변경하는 가장 일반적인 시나리오입니다. 이는 커스터마이징 로비처럼 게임플레이별 시나리오에서 실시간 으로 게임 내에서 발생하거나, 레벨에 로딩할 때나 다른 플레이어가 커스터마이징한 오브젝트가 관련이 있는 경우 런타임 때 발생합니다.
단계:
- 에디터에서: 플레이어가 변경할 수 있는 파라미터를 사용하여 CustomizableObject 에셋을 생성합니다.
- 에디터에서: CustomizableObject에서 각 파라미터의 디폴트값을 설정합니다. 아니면 플레이어를 위한 시작 포인트로서 여러 예시 디폴트값이 있는 CustomizableObjectInstances를 생성합니다.
- 에디터에서: 플레이어가 파라미터를 수정할 수 있는 모든 시나리오의 오브젝트 상태와 게임 내 캐릭터 버전에 대한 추가 상태를 생성합니다.
- 게임플레이 코드에서: 커스터마이징 시나리오에 게임플레이 상태와 UI를 추가합니다. 필요에 따라 확장성을 높이고 개발 반복작업을 줄이기 위해 데이터 기반 UI 를 사용할 수 있습니다.
- 패키징할 때 CustomizableObject 및 CustomizableObjectInstance 에셋이 쿠킹됩니다.
2. 게임플레이 이펙트
플레이어 커스터마이징과 비슷하지만, 플레이어가 아닌 게임플레이 코드 가 오브젝트 파라미터를 변경한다는 점이 다릅니다. 캐릭터가 게임에서 발견한 헬멧 파워업을 장착하거나 캐릭터가 진흙 웅덩이에 들어가서 더러워지는 등의 상황에 사용할 수 있습니다.
단계:
- 에디터에서: 게임 코드가 변경할 수 있는 파라미터를 사용하여 CustomizableObject 에셋을 생성합니다.
- 에디터에서: 게임플레이 코드가 파라미터를 수정할 수 있는 모든 시나리오에 오브젝트 상태를 생성합니다.
- 게임플레이 코드에서: 런타임 때 다양한 CustomizableObjectInstance를 생성하고 상태를 관리하여 필요에 따라 파라미터를 변경합니다.
- 패키징할 때 CustomizableObject 에셋이 쿠킹됩니다.
3. 사전 정의된 인스턴스
이 시나리오에서는 아티스트나 디자이너가 게임 내에서 파라미터가 변경되지 않는 다양한 인스턴스를 생성하기를 원합니다. 이 방법은 세밀한 컨트롤이 필요 없는 NPC나 여러 가지 버전의 플레이어 캐릭터를 생성하는 데 사용할 수 있습니다. 인스턴스는 여전히 뮤터블 데이터에서 런타임 때 생성됩니다.
단계:
- 에디터에서: 플레이어가 변경할 수 있는 파라미터를 사용하여 CustomizableObject 에셋을 생성합니다.
- 에디터에서: 아티스트가 모든 NPC의 오브젝트 등을 커스터마이징하는 CustomizableObjectInstance 에셋을 생성할 수 있습니다.
- 게임플레이 코드에서: 필요에 따라 CustomizableObjectInstances를 로드하고 생성합니다.
- 패키징할 때 CustomizableObject 및 CustomizableObjectInstance 에셋이 쿠킹됩니다.
4. 구워진 인스턴스
3번째 시나리오와 비슷하지만, 이 경우에는 에디터에서 표준 언리얼 에셋에 인스턴스를 굽습니다. 뮤터블로 인한 모든 퍼포먼스 영향은 제거되지만, 인스턴스끼리 메시 데이터를 공유하지 않으므로 중복 데이터가 발생할 수 있습니다.
단계:
- 에디터에서: 플레이어가 변경할 수 있는 파라미터를 사용하여 CustomizableObject 에셋을 생성합니다.
- 에디터에서: 아티스트가 모든 NPC의 오브젝트 등을 커스터마이징하는 CustomizableObjectInstance 에셋을 생성할 수 있습니다.
- 에디터에서: 모든 CustomizableObjectInstance 에셋을 표준 언리얼 에셋에 굽습니다.
- 게임플레이 코드에서: 필요에 따라 구운 에셋을 사용합니다.
- 패키징할 때 구운 스켈레탈 메시, 머티리얼 및 텍스처 에셋이 쿠킹됩니다.
비교
이 테이블에서 오브젝트 란 CustomizableObject 에셋을, 인스턴스 란 CustomizableObjectInstance 에셋을 말합니다.
| 1. 플레이어 커스터마이징 | 2. 게임플레이 이펙트 | 3. 사전 정의된 인스턴스 | 4. 구워진 인스턴스 | |
|---|---|---|---|---|
| 커스터마이징하는 주체 | 플레이어 | 게임플레이 코드 | 아티스트/디자이너 | 아티스트/디자이너 |
| 파라미터 설정 시점 | 게임 | 게임플레이 프로그래밍 | 에디터 | 에디터 |
| 뮤터블 실행 시점 | 게임 | 게임 | 게임 | 에디터 |
| 게임 내 에셋 타입 | 오브젝트, 머티리얼 | 오브젝트, 머티리얼 | 오브젝트, 인스턴스, 머티리얼 | 스켈레탈 메시, 머티리얼, 텍스처 |
| 게임 내 영향 | 인스턴스 생성 | 인스턴스 생성 | 인스턴스 생성 | 없음 |
| 쿠킹 영향 | 오브젝트 컴파일 | 오브젝트 컴파일 | 오브젝트 컴파일 | 없음 |
| 에디터 영향 | 없음 | 없음 | 없음 | 인스턴스 수동 굽기 |
| 퀄리티 | 보통 | 보통 | 보통 | 높음 |
이 테이블의 게임 내 에셋 타입 행에는 CustomizableObjects를 사용할 때 항상 게임에 포함되는 패스스루 텍스처, 피직스 에셋, 클로스 에셋, 레퍼런스 메시가 포함되지 않습니다.