뮤터블 파퓰레이션(Populations)은 기존 뮤터블 오브젝트에서 커스터마이징된 군중 또는 인구를 자동으로 생성하는 추가적인 플러그인입니다.
파퓰레이션 에디터(Population Editor)에서 무작위성을 조절하여 실시간으로 또는 프로덕션 파이프라인에서 다양한 베리에이션과 콘텐츠를 생성할 수 있습니다. 또한, 이 에디터를 사용하여 각기 다른 인구 생성 규칙을 정의하여 공통 출신, 문화, 길드를 소통하는 응집력 있는 그룹을 만들 수도 있습니다. 릴리즈 후, 새 에셋에 태그를 지정하여 기존 인구의 변동성을 자동으로 높일 수 있습니다.
이 플러그인은 뮤터블로 인구를 생성하는 방법의 예로 제공됩니다. 프로젝트마다 구체적인 내용은 달라질 수 있으며, 자신만의 시스템을 생성하는 템플릿으로 사용할 수 있습니다.
커스터마이저블 오브젝트, 클래스 및 파퓰레이션
뮤터블 파퓰레이션은 파퓰레이션 클래스와 상대적 출현 확률로 구성된 내부 환경설정에 따라 커스터마이저블 오브젝트 인스턴스(Customizable Object Instances)를 무작위로 생성합니다.
각 파퓰레이션 클래스는 단일 커스터마이저블 오브젝트(Customizable Object)에 기반하여 일반적인 특성을 정의합니다. 이를 정의하려면 무작위 커스터마이저블 오브젝트 인스턴스에서 생성할 파라미터(Parameter) 값과 빈도를 선택하면 됩니다.
커스터마이저블 파퓰레이션 클래스
커스터마이저블 파퓰레이션 클래스(Customizable Population Class)는 언리얼 엔진에 추가된 새로운 에셋 타입입니다. 파퓰레이션 클래스는 그 기반이 되는 커스터마이저블 오브젝트와 특성(Characteristics)이 무엇인지 정의합니다.
각 특성은 하나의 파라미터에 허용되는 여러 가지 옵션 범위와 이 파퓰레이션 클래스에 기반하여 인구에 의해 생성된 무작위 커스터마이저블 오브젝트 인스턴스에 나타날 상대적 확률입니다. 이는 파라미터 타입에 따라 특정 옵션을 찾는 빈도를 설정하거나, 단일 값을 유효한 값으로 선택하거나, 곡선을 사용하여 연속적인 숫자 값의 출현 가능성을 정의하는 데 사용됩니다. 또한 이 클래스는 전역적으로든 개별 파라미터에든 태그를 통해 integer와 boolean 파라미터의 거부 목록과 허용 목록을 사용할 수도 있습니다.
콘텐츠 브라우저의 신규 추가(Add New) 메뉴에서 커스터마이저블 파퓰레이션 클래스를 생성할 수 있습니다.
커스터마이저블 파퓰레이션
선택한 파퓰레이션 클래스와 사용 빈도에 따라 무작위로 커스터마이저블 오브젝트 인스턴스를 생성하는 새로운 에셋 타입입니다.
하나의 인구는 여러 개의 커스터마이저블 오브젝트 인스턴스들을 생성할 수 있는데, 서로 다른 커스터마이저블 오브젝트들로부터 생성할 수도 있고, 동일한 커스터마이저블 오브젝트의 서로 다른 파퓰레이션 클래스들로부터 생성할 수도 있습니다.
콘텐츠 브라우저의 신규 추가 메뉴에서 커스터마이저블 파퓰레이션을 생성할 수 있습니다.
커스터마이저블 파퓰레이션은 파퓰레이션 또는 파퓰레이션 클래스가 저장될 때마다 커스터마이저블 오브젝트 인스턴스 생성 알고리즘을 업데이트하는데, 이때 각 파퓰레이션 클래스의 커스터마이저블 오브젝트의 파라미터를 사용하여 업데이트합니다. 또한 프로젝트를 패키지로 만들 때마다 최신 상태를 유지하기 위해 업데이트합니다.
파퓰레이션 클래스 에디터
왼쪽 패널에는 파퓰레이션 클래스 옵션이 있습니다.
기반이 되는 커스터마이저블 오브젝트를 선택합니다.
해당 클래스의 특성을 정의합니다.
글로벌 클래스 태그 허용 목록 및 거부 목록을 설정합니다.
커스터마이저블 오브젝트는 파라미터당 하나의 특성이 있습니다.
각 특성은 컨스트레인트를 사용하여 정의됩니다. 컨스트레인트는 파퓰레이션 클래스의 무작위 커스터마이저블 오브젝트 인스턴스에서 각 파라미터마다 발견되는 값과 그 확률을 정의합니다.
파라미터 타입에 따라 다양한 타입의 컨스트레인트가 특성 정의에 사용됩니다.
하나의 특성에 여러 컨스트레인트를 사용할 수 있으며, 각 컨스트레인트는 가중치에 따라 다른 컨스트레인트보다 적용될 확률이 상대적으로 달라집니다.
유효한 특성이 지정되지 않은 파라미터는 파퓰레이션 클래스에 의해 랜덤화되며, 각 옵션은 파퓰레이션 클래스에서 생성된 커스터마이저블 오브젝트 인스턴스에 포함될 확률이 동일합니다.
중앙 패널에는 커스터마이저블 오브젝트의 인구 태그가 정의되어 있습니다. 이러한 태그는 이 커스터마이저블 오브젝트를 공유하는 모든 파퓰레이션 클래스에서 사용하고 수정할 수 있습니다. 태그는 글로벌 허용 목록 및 거부 목록 또는 '태그(Tag)' 타입의 컨스트레인트를 사용하는 특성을 설정하여 무작위 커스터마이저블 오브젝트 인스턴스에 포함되는 항목을 제어하는 데 사용됩니다.
패널에는 다음이 포함됩니다.
4. 태그를 사용하기 위해 추가하거나 제거합니다. 텍스트 박스에 새로운 태그를 추가할 수 있습니다. 그 아래에는 기존 태그의 목록이 있어 태그를 삭제할 수 있습니다.
5. 태그를 설정할 파라미터를 선택합니다.
6. 열거형의 각 옵션에 적용할 수 있는 태그를 정의합니다.
커브 에디터(Curve Editor)는 오른쪽 상단 패널(12)에 있습니다. 에디터에서 열기(Open in Editor) 버튼을 누른 마지막 커브 컨스트레인트가 표시되며, 커브의 미세조정에 사용할 수 있습니다.
오른쪽 아래 패널(7)에는 현재 세팅으로 생성되는 내용의 프리뷰를 보여줍니다. 이는 파퓰레이션 클래스 테스트(Test Population Class) 버튼(8)을 누를 때마다 생성됩니다. 커스터마이저블 오브젝트 인스턴스가 생성되는 양은 버튼 옆의 아래쪽 화살표를 사용하여 정의할 수 있으며, 기본값은 10입니다.
여기에서 인스턴스를 선택하여 검사할 수 있으며, 이 이미지에서는 가장 왼쪽의 인스턴스가 선택되었습니다. 인스턴스 검사(Inspect Instance)(10) 버튼을 사용하면 에디터에서 선택한 커스터마이저블 오브젝트 인스턴스를 확인하고 수정할 수 있습니다. 스켈레탈 메시 검사(Inspect Skeletal Mesh)(11) 버튼을 사용하면 스켈레탈 메시 결과를 확인할 수 있습니다.
인스턴스 생성(Generate Instances) 버튼(9)을 사용하여 무작위 커스터마이저블 오브젝트 인스턴스 에셋을 생성할 수 있습니다. 이는 에디터에서 게임 에셋으로 사용할 일반 커스터마이저블 오브젝트 인스턴스이며, 생성 후 무작위로 추가 생성되는 것은 없습니다.
무작위 커스터마이저블 오브젝트 인스턴스를 런타임 때 생성하려면 인구 에셋에 있는 인구 생성(Generate Population) 및 인구 재생성(Regenerate Population) 함수를 사용하면 됩니다.
인구 태그
태그는 태그 매니저 텍스트 박스를 사용하여 생성합니다. 태그는 열거형 파라미터의 각 옵션에 개별적으로 할당되도록 설계되었습니다. 그런 다음, 파퓰레이션 클래스에서 특정 파라미터 옵션을 찾을 수 있는지 여부를 나타내는 데 사용됩니다. 이는 태그를 허용 목록에 추가하거나 거부하는 방식으로 이루어집니다. 이는 이 섹션의 끝에 진리표로 정의되어 있으며 이 방법으로 파퓰레이션 클래스에서 사용할 파라미터를 필터링할 수 있습니다.
태그를 사용하려면 태그를 생성한 후(4) 일부 파라미터 옵션을 할당하고(6)(5) 마지막으로 허용 목록과 거부 목록에서 전역적으로 사용하거나(3) 단일 파라미터에 영향을 미치는 컨스트레인트에 사용합니다(2).
태그는 커스터마이저블 오브젝트에 저장되므로, 동일한 커스터마이저블 오브젝트의 서로 다른 파퓰레이션 클래스들은 동일한 파라미터 및 파라미터 옵션의 동일한 태그에 액세스할 수 있습니다.
각 열거형 옵션에 태그를 할당하는 것이 인구 태그의 주목적이며, 태그를 거부 목록 및 허용 목록과 함께 사용하면 옵션이 추가되거나 제거될 때마다 이에 의존하는 각 파퓰레이션 클래스 컨스트레인트를 수동으로 수정하지 않고도 점점 늘어나는 옵션을 관리할 수 있습니다.
각 파퓰레이션 클래스에는 일반 허용 목록과 거부 목록이 있으므로 해당 파퓰레이션 클래스로 생성한 커스터마이저블 오브젝트 인스턴스에서 찾을 수 있거나 없는 항목을 광범위하게 정의할 수 있습니다.
integer 및 boolean 파라미터에도 태그 컨스트레인트를 설정할 수 있습니다. 이러한 컨스트레인트는 글로벌 허용 목록과 거부 목록을 오버라이드하지만 태그 컨스트레인트를 정의하는 특정 특성에 대해서만 재정의합니다. 이를 통해 일반 허용 목록 및 거부 목록에 대한 예외 항목을 지정하여 파퓰레이션 클래스의 특정 파라미터를 미세조정할 수 있습니다.
태그 목록은 특정 조건이 적용될 때까지 아래 논리를 따릅니다.
열거형 옵션의 태그가 이 파라미터의 태그 목록에 없다면, 해당 열거형의 모든 옵션이 동일한 확률로 나타납니다.
한 열거형 옵션의 태그 하나가 이 파라미터의 컨스트레인트 목록에 있다면, 오직 컨스트레인트 거부 목록에 아무런 태그가 없는 열거형 옵션만 나타납니다. 열거형 옵션 태그가 하나라도 허용 목록에 있다면, 태그가 허용 목록에는 있고 거부 목록에는 없는 옵션만 나타납니다. 끝에 있는 진리표에서 결과를 설명합니다.
2번과 동일하지만 글로벌 목록에 적용됩니다. 한 열거형 옵션의 태그 하나가 이 파라미터의 글로벌 목록에 있다면, 오직 글로벌 거부 목록에 아무런 태그가 없는 열거형 옵션만 나타납니다. 열거형 옵션 태그가 하나라도 허용 목록에 있다면, 태그가 허용 목록에는 있고 거부 목록에는 없는 옵션만 나타납니다. 끝에 있는 진리표에서 결과를 설명합니다.
허용 목록 및 거부 목록의 진리표입니다.
| 열거형 옵션의 허용 목록에 태그가 있습니다. | 열거형 옵션의 거부 목록에 태그가 있습니다. | 동일한 열거형의 다른 옵션은 허용 목록에 태그가 있습니다. | 이 열거형 옵션이 무작위 커스터마이저블 오브젝트 인스턴스에 나타날 수 있습니까? |
|---|---|---|---|
하지 않음 | 하지 않음 | 하지 않음 | 예 |
예 | 하지 않음 | 하지 않음 | 예 |
하지 않음 | 예 | 하지 않음 | 하지 않음 |
하지 않음 | 하지 않음 | 예 | 하지 않음 |
예 | 예 | 하지 않음 | 하지 않음 |
예 | 하지 않음 | 예 | 예 |
하지 않음 | 예 | 예 | 하지 않음 |
예 | 예 | 예 | 하지 않음 |