통합 단계 2: 첫 번째 NavData 생성

게임에서 Gameware Navigation의 주요 용도 대부분은 NavData에 따라 달라집니다. NavData는 최적화된 데이터 구조로, 게임 지세에서 탐색 가능한 영역 및 토폴로지 연결을 나타냅니다. NavData는 게임에서 사용하는 각 지세 또는 레벨을 생성해야 하는 중요한 리소스입니다.

일반적으로 NavData 생성 시스템의 API를 사용하여 NavData 프로덕션을 아티스트가 게임 레벨을 만들기 위해 사용하는 동일한 게임 편집기 도구로 직접 통합합니다. 이렇게 하면 데이터 프로덕션이 자동화되고 NavData가 언제나 지세 자체의 최신 변경 사항과 일치하도록 보장합니다. 그러나 이 통합에는 설정을 위한 시간과 노력이 어느 정도 필요합니다. 따라서 Navigation Lab을 사용하여 일부 초기 NavData를 생성하고 나중에 통합 단계 6: NavData 생성 API 사용에서 데이터 생성 API의 통합으로 돌아옵니다.

Navigation Lab을 사용하여 NavData를 생성하려면

  1. 지세를 .obj 파일로 내보냅니다. 이 파일 형식에 대한 자세한 내용은 여기를 참조하십시오.

    이 파일의 메시에는 캐릭터가 경로 찾기 및 경로 따르기에서 고려해야 하는 장면의 파괴 불가능한 모든 정적 오브젝트가 포함되어 있어야 합니다. 여기에는 지면 또는 하이트맵(heightmap), 건물, 나무, 가로등 기둥, 벽, 벤치, 울타리 등이 포함됩니다. 차량 또는 상자와 같이 기타 파괴 가능한 장애물 및/또는 동적 장애물은 .obj 파일에 포함되지 않아야 합니다. 이러한 유형의 동적 오브젝트는 런타임 시 World에 추가됩니다.

    .obj 파일의 사용은 데이터 생성 시스템 자체가 아닌 독립 실행형 Navigation Lab 도구의 요구 사항입니다. NavData 생성 시스템을 자체 코드에 통합하도록 선택하면 .obj 파일을 사용할 필요가 없습니다. 그러나 원하는 경우 사용할 수도 있습니다.

    지금은 런타임 시 전체로 로드할 작은 지세를 선택합니다. 기본적으로 Navigation Lab에서는 전체 지세에 대한 NavData를 포함하는 단일 출력 파일을 만듭니다. 이 초기 통합 튜토리얼을 완료한 후에는 지세를 여러 섹터로 분할하는 다양한 방법에 따라 게임의 다른 데이터 유형에 사용된 스트리밍 논리를 반영하고 런타임 시 로드해야 하는 데이터의 양을 줄일 수 있습니다.

  2. Navigation Lab을 시작합니다.
  3. .obj 파일을 Navigation Lab의 3D 보기로 드래그 앤 드롭합니다.

    게임에 사용되는 좌표계를 설정할 수 있는 대화상자가 표시됩니다. 게임의 좌표계에서 Up, Right 및 Front 좌표에 대해 사용되는 축을 나타냅니다. 또한 OneMeter 컨트롤을 사용하여 최대 1미터를 추가하는 게임에 측정 단위 수를 설정합니다. 이는 지세가 측정되는 배율을 제어합니다.

    Navigation Lab이 좌표계 설정에서 가능한 오류를 탐지하는 경우 편집기 창에 나열합니다.

  4. 지세는 올바른 방향으로 나타나야 합니다. 방향이 올바르지 않은 경우 필요에 따라 좌표계를 조정합니다. 지세가 올바르게 보이는 경우 Coordinate System Editor를 닫습니다.

  5. 주 Navigation Lab 창의 오른쪽에 있는 Generation 패널을 엽니다.

    • Output 섹션에서 출력 파일을 만들려는 위치를 설정합니다.

      NavGenProj File 설정은 생성을 기록하기 위해 Navigation Lab이 만드는 프로젝트 파일의 위치를 결정합니다. 언제든지 이 .NavGenProj 파일을 다시 열어 종료한 위치를 선택할 수 있습니다.

      Base output directory를 모든 NavData 출력 파일을 만들려는 절대 경로로 설정합니다. 게임에 대한 데이터를 생성할 때마다 이 값을 동일하게 유지합니다.

      이 레벨에 대해 NavData를 만들려는 기본 출력 디렉토리 아래의 경로로 Relative Directory를 설정합니다. 이 상대 디렉토리는 출력 NavData에 저장되며 게임에서 현재 로드된 레벨에 대해 시각적 디버깅이 자동으로 데이터를 검색하는 경우 사용할 수 있습니다.

    • 또한 Parameters 섹션에서, 게임에서 이 NavData를 사용하는 캐릭터의 치수와 일치하도록 Entity heightEntity radius 값을 설정합니다.

    이 창의 다른 설정은 지금은 별로 중요하지 않지만 나중에라도 언제든지 되돌아갈 수 있습니다.

  6. Generate를 클릭합니다. Navigation Lab은 지세에 대해 NavMesh를 생성하고 생성이 완료되면 3D 보기에 표시합니다.

    생성 프로세스에 대한 통계가 Log 패널에 표시됩니다.

    선택한 지세에 따라 게임에서 캐릭터가 이동하지 않기를 원하는 위치(예: 지붕 꼭대기, 나무 꼭대기, 벽의 맨 위)에서 생성된 NavMesh를 볼 수 있습니다. 지금은 문제가 되지 않지만 결국에는 여러 가지 가능한 방법을 사용하여 원하지 않는 영역을 제외시키고자 할 것입니다. 이동 가능한 영역 식별을(를) 참조하십시오.

    참고: 생성 프로세스가 실패하거나 오래 걸리는 경우 지세에 대한 좌표계 매핑을 설정할 때 OneMeter 컨트롤에서 지세의 배율을 잘못 구성한 것일 수 있습니다. 더 큰 OneMeter 값을 사용하여 다시 시도하십시오.

  7. 이제 NavMesh가 있으므로 Navigation Lab에서 직접 지세에 대해 쿼리를 수행할 수 있습니다. 또한 자체 게임 레벨에서 봇, 장애물 및 스마트 오브젝트 생성을 제어하기 위해 LabGame을 시작하여 게임에 지세를 보낼 수 있습니다. LabGame 사용, 샘플 시작, 쿼리 실행에 대한 소개는 Navigation Lab 시작하기을(를) 참조하십시오.

출력 파일

생성 출력 파일

출력 디렉토리에서 다음 확장자를 가진 여러 가지 새 파일을 볼 수 있습니다.

  • .ClientInput: 생성 시스템에 전달된 형상의 레코드를 포함합니다.
  • .GenIO: 생성 프로세스에서 사용된 섹터 정의 및 구성 매개변수 값의 레코드를 포함합니다. 데이터 생성 API를 직접 사용하는 경우 이 파일을 사용하여 이전 데이터 생성 실행에서 설정을 다시 만들 수 있습니다.
  • .DataIndex: 이 섹터에 대해 생성된 데이터의 검색 가능한 레코드를 포함합니다. 이 파일의 컨텐츠에서 새 Kaim::DatabaseDescriptorIndex 오브젝트를 만들고 해당 API를 사용하여 해당 섹터에 대해 생성된 데이터 오브젝트를 찾고 로드할 수 있습니다.
  • .NavData: 사용 레벨의 최종 NavMesh로, 런타임 시 사용할 게임에 로드됩니다.

가장 중요한 파일은 .NavData 파일이며 다음 통합 단계를 완료하려면 이 파일이 필요합니다.

Navigation Lab 출력 파일

Navigation Lab의 생성 프로젝트를 저장할 수 있습니다. 생성을 수행하기 위해 사용된 모든 정보는 .NavGenProj 확장자를 가진 파일에 기록되며 생성 설정의 XML 표현 및 입력 .obj 파일을 포함합니다.

Navigation Lab에서 데이터를 생성할 때 Navigation Lab은 투명하게 이 파일을 명령줄 NavGenLauncher 도구에 전달합니다. 또한 Navigation Lab의 외부에서 생성을 다시 실행하려면 NavGenLauncher 도구를 직접 호출하고 이 파일에 전달합니다. NavGenLauncher를 참조하십시오.