지세 섹터 지정

대부분의 프로젝트에서 상대적으로 작은 지세 청크는 게임 코스에서 지정된 시간에만 로드해야 합니다. 이러한 청크 또는 섹터는 필요에 따라, 즉 일반적으로 플레이어 캐릭터의 움직임에 따라 메모리에서 지속적으로 교환됩니다. 섹터 사용 여부 및 이러한 섹터를 구성해야 하는 방법은 대개 프로덕션 워크플로우, 게임 플레이 디자인, 엔진 내부의 하위 시스템에 대한 기술적인 고려 사항(예: 물리 법칙 또는 렌더링)에 의해 결정됩니다.

섹터 지정 방법

NavData 생성 프레임워크는 다중 섹터를 처리하는 매우 유연한 시스템을 제공하며, 이 시스템은 일반적인 프로덕션 워크플로우와도 원활하게 통합되고 런타임 시 처리하기 쉽도록 설계되었습니다.

단일 섹터 지세

Gameware Navigation에서 반드시 다중 섹터를 사용해야 하는 것은 아닙니다. 전체 지세를 한 번에 NavData 생성 시스템에 자유롭게 전달하고 전체 지세를 다루는 단일 NavMesh를 생성할 수 있습니다. 그러나 다음 사항에 주의해야 합니다.

  • 모든 데이터를 보관하기 위해 많은 양의 런타임 메모리가 필요할 수 있습니다. 데이터의 메모리 크기는 표현하는 영역이 커질수록 빠르게 증가합니다.
  • 데이터 세트의 크기가 커지면 상당히 많은 수의 정점 및 가장자리를 탐색하게 될 수 있으므로 경로 찾기 프레임워크의 성능이 저하될 수도 있습니다. 도달할 수 없는 대상에 대한 경로를 계산하려는 경우 NavMesh의 모든 삼각형을 탐색해야 하므로 특히 이런 문제가 발생할 수 있습니다.

단일 섹터 지세에 대해 생성된 NavData는 두 세트의 NavData가 3D 공간에서 겹치는 경우에도 런타임 시 다른 NavData에 자동으로 연결할 수 없습니다.

사용자 정의 섹터

대부분의 프로젝트에서 인접 섹터 간의 경계는 게임 플레이에 의해 결정됩니다. 예를 들어 플레이어 캐릭터가 특정 경계를 지날 때 이전 영역에 대해서는 충돌 월드 및 텍스처가 스트리밍되지 않고 새 영역에 대해서는 충돌 월드 및 텍스처가 스트리밍됩니다. 또한 섹터 경계는 동일한 지세에서 평행으로 작업하는 아티스트 및 레벨 디자이너 간의 분업에 의해 설정되며, 이때 각 작업자는 런타임 시 게임 코스에서 일정한 청크로 꾸준히 스트리밍되는 개별 메시 또는 하위 레벨에서 작업합니다.

이런 상황에서 사용자는 NavData 섹터가 다른 종류의 데이터에 사용하는 섹터나 하위 레벨과 대략 동일한 경계를 따르기를 희망할 수 있습니다. 섹터 간 구분은 사용자가 지세 메시의 삼각형을 Gameware Navigation 시스템에 전달하는 방식에 따라 명시적으로 정의되므로 이는 NavData 생성 도구에서 투명하게 지원됩니다.

이러한 방식으로 만들어진 인접 섹터를 런타임 시 메모리로 로드할 경우 관련 NavData가 어디서 겹쳐지든 자동으로 함께 연결됩니다.

NavData 생성 도구에서 섹터 만들기

NavData 생성 도구마다 섹터 지정을 약간 다르게 처리합니다. 분명히 NavData 생성 프레임워크의 API가 가장 유연한 방법을 제공하지만 언제나 그렇듯 프로덕션 파이프라인의 필요성에 적합한 도구를 선택할 수 있습니다.

섹터 및 Navigation Lab

현재 Navigation Lab은 각 .obj 파일에 대해 하나의 섹터를 만듭니다.

그러나 여러 .obj 파일로 구성된 <sector> 정의를 포함하는 .navgenproj 파일을 로드하는 경우 Navigation Lab이 해당하는 모든 입력 .obj 파일의 모든 삼각형을 병합합니다.

섹터 및 NavData 생성 API

NavData 생성 시스템의 API를 직접 사용하는 경우 지세 섹터 지정을 전체적으로 제어할 수 있습니다. 각 섹터에 대해 하나의 GeneratorSectorConfig 오브젝트를 구성하고 Generator에 제공하는 GeneratorInputOutput 구조에 모든 섹터를 추가합니다.

  • 단일 섹터 지세 만들기: Generator에 대해 한 섹터만 정의하고 해당 섹터에 전체 지세의 삼각형 세트를 모두 제공하여 단일 섹터 지세를 만들 수 있습니다.
  • 다중 사용자 정의 섹터 만들기: 경계와 내용을 명시적으로 설정하는 다중 섹터를 만들 수 있습니다. Generator에 대해 개별적으로 만들 각 섹터를 정의하고 각 섹터에 해당 섹터에서 고려해야 하는 부분의 삼각형만 제공합니다.

Generator가 NavData를 만들 때 자동으로 서로에 대해 인접한 섹터를 감지하고 겹치는 영역을 처리하며 런타임 시 자동 연결을 위해 데이터를 준비합니다. 런타임 시 인접 섹터를 함께 연결하려면 공통 경계 주위의 삼각형이 서로 매우 가까이 있거나 겹쳐 있어야 합니다. 섹터 겹침 처리을(를) 참조하십시오.