Navigation Lab 시작하기

Navigation Lab은 게임에서 성공적으로 Gameware Navigation을 사용하기 위한 주요 도구입니다. 통합 및 개발 과정에서 Navigation Lab을 사용하여 자체 지세에 대해 NavData를 생성하고 라이브 연결을 통해 실시간으로 게임의 진행 상황을 시각적으로 디버그할 수 있습니다.

이 페이지의 튜토리얼은 두 가지 중요한 용도로 사용됩니다.

단계 1: Navigation Lab 시작

bin/win<platform>_<toolset>_release-md/NavigationLab.exe를 엽니다. Navigation Lab의 주 창이 표시됩니다.

인터페이스의 주 요소를 나타내는 일련의 안내 도면이 나타납니다.

이러한 안내 도면의 페이지를 넘겨보면 Navigation Lab에서 제공하는 여러 워크플로우에 관련된 컨트롤을 개략적으로 살펴볼 수 있습니다. 언제든지 컨트롤에 대한 자세한 정보가 필요한 경우 인터페이스의 툴팁을 참조하십시오.

단계 2: LabGame에 연결

LabGame은 Gameware Navigation과 사전에 통합된 간단한 게임 엔진이 들어 있는 작은 콘솔 응용 프로그램입니다. Navigation Lab에서 보내는 명령을 허용하고 자체 게임에 통합할 동일한 라이브 시각적 디버깅 시스템을 통해 명령에 따른 결과를 Navigation Lab에 표시합니다.

로컬 호스트에서 LabGame을 시작하고 연결하려면

LabGame은 Gameware Navigation에서 지원되는 모든 플랫폼에서 실행됩니다. 네트워크의 콘솔 또는 다른 시스템에서 시작하고 TCP를 통해 Navigation Lab을 연결할 수 있습니다.

다른 호스트에서 LabGame을 시작하고 연결하려면

  1. bin 디렉토리의 하위 디렉토리 중 하나에서 대상 플랫폼에 대한 LabGame 실행 파일을 찾습니다. 대상 호스트에 이 실행 파일을 배포하고 실행합니다.
  2. Navigation Lab의 Remote Application 도구상자에서 Connect를 클릭합니다.

    연결하려는 호스트에 대한 일부 정보를 제공하라는 메시지가 표시됩니다.

  3. 게임을 실행하는 호스트가 Detected Servers 목록에 표시되면 해당 호스트를 선택하고 Connect를 클릭합니다.

    그렇지 않으면 Address 필드에 호스트의 IP 주소를 입력합니다. 기본 포트 번호를 그대로 둡니다.

실행 중인 게임에 대한 연결을 시작하면 Remote application 도구상자의 Disconnect 버튼이 강조 표시됩니다. 언제든지 이 버튼을 클릭하여 연결을 끊거나 실패한 연결 시도를 다시 수행하는 것을 중지할 수 있습니다.

Log 창 및 LabGame이 콘솔에 인쇄한 출력에 성공한 연결이 표시됩니다.

단계 3: SDK 샘플 사용

LabGame에 성공적으로 연결하면 Navigation Lab에서 제공한 SDK 샘플 탐색을 시작할 수 있습니다. 이러한 샘플은 주 3D 보기의 왼쪽에 있는 Samples 패널에 나열됩니다.

avoidance 폴더를 열고 FrontAvoidance 항목을 클릭합니다.

Navigation Lab에서 샘플의 용도에 대한 설명, 디스크에서 샘플의 위치 및 샘플 코드를 표시하는 새 창이 열립니다.

코드는 일련의 명령(예: labopenfile, gamespawnbot, gamespawnboxobstacle, gamebotsetroute)으로 구성됩니다. 샘플을 시작하면 lab 접두사가 붙은 명령이 Navigation Lab에서 실행되고 game 접두사가 붙은 명령은 LabGame으로 전송되어 게임 엔진에서 실행됩니다. 또한 샘플 과정 중 명령을 직접 수행할 수도 있습니다. 나중에 이를 수행하는 여러 방법을 살펴보겠습니다.

Start 버튼을 클릭하여 샘플을 시작합니다. LabGame에 아직 연결되지 않은 경우 로컬 컴퓨터에서 시작할지를 묻는 메시지가 표시됩니다. 샘플이 로드되면 옆으로 걸어가는 두 그룹의 봇(노란색 원통)이 있는 도시 거리의 오버헤드 보기가 표시됩니다. 봇이 이동하면 신속하게 궤적을 변경하여 서로를 피하고 이동하는 주황색 장애물 및 보행 불가능으로 태그가 지정된 여러 개의 정적 볼륨(NavMesh가 포함되지 않은 자주색 윤곽의 영역)을 피합니다.

동작 및 명령에 대한 참고 사항

3D 보기 바로 위에 있는 동작 패널에는 여러 종류의 오브젝트를 생성하고 해당 오브젝트와 상호 작용하며 게임 엔진에서 발생하는 현상을 제어하는 다양한 명령을 제공하는 여러 개의 탭이 있습니다.

이러한 동작의 대부분은 Navigation Lab이 LabGame에 연결된 경우에만 작동합니다. 이들은 주로 SDK 샘플에서 재생하기 위한 간단한 방법을 제공하기 위한 것입니다.

자체 게임에 연결하면 기본적으로 이러한 동작이 영향을 주지 않습니다. 사용자는 3D 보기에서 렌더링되는 데이터, 타임라인, 기록 및 재생 등의 조작을 완벽하게 제어할 수 있지만, Navigation Lab에서 게임까지의 데이터 전송은 제한적으로 가능하며 게임에서 발생하는 상황을 수정할 수 없습니다(LabEngine 프로젝트의 명령 프레임워크를 자체 게임으로 통합하도록 선택하지 않은 경우).

주요 예외로는 Generation 탭이 있으며, 이 탭은 Navigation Lab이 게임 엔진에 연결되지 않은 경우에만 작동합니다.

단계 4: 카메라 이동

기본적으로 Flying 카메라를 사용하고, 화살표 키 또는 키보드의 왼쪽 맨 위에 있는 키(영어 키보드의 WASD 키)를 통해 Flying 카메라를 앞으로, 뒤로 및 옆으로 움직일 수 있습니다. 마우스를 사용하여 보기를 회전하고 마우스 휠을 사용하여 수직 축 위아래로 이동합니다.

다른 카메라 모드 및 구성 값은 주 창의 맨 위에 있는 Camera 도구상자에서 사용할 수 있습니다. 3D 보기에서 이동을(를) 참조하십시오.

단계 5: 보려는 데이터 선택

단계 6: 오브젝트 선택 및 제어

3D 보기에서 Ctrl 키를 누른 상태에서 시각적 디버깅 오브젝트를 클릭하여 선택합니다. 3D 보기는 축에 정렬된 녹색의 선택 표시기 상자로 오브젝트를 둘러싸고 선택한 오브젝트에 대한 다른 정보를 렌더링할 수 있습니다.

선택한 오브젝트에 대한 속성 목록을 보려면 3D 보기 오른쪽에 있는 해당 패널을 엽니다.

또한 3D 보기 위에 있는 동작 패널의 SelectedBot 탭 에서 명령을 사용하여 선택한 오브젝트를 제어할 수 있습니다. 이 탭에서는 봇이 이동하는 위치, 봇이 Navigation Lab에 보내는 시각적 디버깅 정보의 레벨을 제어하고 게임에서 봇을 완전히 제거하는 명령 등을 제공합니다. 예를 들어 Set target을 선택하여 새 대상으로 봇을 보내거나 Set route를 선택하여 봇이 따라갈 새로운 중간 지점 세트를 만들 수 있습니다.

명령 뒤에 키보드 바로 가기가 있으면 상황별 메뉴를 열지 않고 바로 가기를 사용할 수 있습니다. 예를 들어 간단하게 위치를 가리키고 t 키를 눌러 선택한 봇을 새 위치에 보낼 수 있습니다.

단계 7: 새 게임 오브젝트 생성

LabGame에 연결되어 있는 동안 장면에 새 오브젝트를 생성할 수 있습니다(예: 봇, 동적 장애물, TagVolume). 오브젝트를 생성하려면 동작 패널의 탭 중 하나에서 적절한 명령을 선택합니다.

예를 들어 새 봇을 생성하면 Bots > Bot 명령을 선택하거나 b 키를 누르기만 하면 됩니다. 새 봇의 생성 지점을 선택하려면 커서로 NavMesh의 아무 데나 가리키라는 메시지가 표시됩니다. 스페이스바를 눌러 명령을 완료합니다. Navigation Lab에서 LabGame에 봇을 만드는 명령을 보냅니다. 이 명령은 Log 창에 표시됩니다.

LabGame에서 새 봇을 만들고 임의 대상(또는 경로를 가진 봇을 생성하는 경우 제공한 중간 지점 사이)에 대한 경로를 찾고 따르도록 설정합니다. 그런 다음 해당 봇에 대한 시각적 디버깅 데이터를 Navigation Lab으로 다시 보내기 시작합니다. 그러면 봇이 3D 보기에 나타나고 해당 경로의 첫 번째 세그먼트를 따르기 시작하는 것을 볼 수 있습니다.

동작 기본값 변경

동작 패널에서는 동작 버튼 옆에 있는 아이콘을 클릭하여 많은 동작, 특히 생성 동작을 구성할 수 있습니다.

예를 들어 기본적으로 채널 기반 경로 따르기 시스템을 사용하도록 새 봇을 구성할 수 있습니다. Bots 탭에서 Bot [b] 동작 오른쪽에 있는 아이콘을 클릭합니다. Bot 창에서 Trajectory 탭을 선택하고 trajectoryMode 컨트롤을 "Channel"로 설정합니다.

창을 닫은 후에도 지금부터 새 봇을 생성할 때마다 새 봇은 이러한 새 설정을 자동으로 사용합니다. 원래 설정으로 다시 되돌리려면 창을 다시 열고 Reset 버튼을 클릭합니다.

명령행에서 명령 실행

또한 Log 창의 맨 위에 있는 Command line 필드에 명령을 직접 붙여넣을 수 있습니다. 이렇게 하면 명령에서 보낸 모든 값을 사용자 정의하거나 이전 명령을 재실행할 수 있습니다. 명령행에서 지정하는 모든 매개변수는 동작에 대한 기본값을 재정의합니다.

단계 8: 스마트 오브젝트 배치

스마트 오브젝트는 사용자 정의 이동을 트리거하거나 사용자 정의 애니메이션을 재생하기 위해 캐릭터가 경로를 따르는 방식을 자동으로 제어할 수 있는 오브젝트입니다.

스마트 오브젝트는 일반적으로 각 게임으로 한정되며 게임 플레이 시나리오에 대한 세부 사항, 게임에서 사용되는 애니메이션, 물리적 및 운동 하위 시스템에 대한 기술적 고려 사항에 크게 의존합니다. Gameware Navigation SDK는 일반 스마트 오브젝트를 포함하지 않고 가능한 한 쉽게 사용자가 자체 스마트 오브젝트를 만들 수 있도록 해주는 도구를 제공합니다.

그러나 LabEngine에는 엘리베이터, 문 및 점프 지점과 같이 일반 유형의 오브젝트를 시뮬레이션하는 몇 가지 샘플 스마트 오브젝트가 들어 있습니다. Navigation Lab을 LabGame에 연결하면 언제든지 이러한 스마트 오브젝트를 생성할 수 있습니다. 예를 들어 다음 단계는 봇이 지붕 꼭대기에 올라가기 위해 사용할 수 있는 스마트 오브젝트를 만듭니다.

  1. 동작 패널에서 SmartObjects 탭을 엽니다.
  2. Jump 동작을 클릭합니다.
  3. 커서로 거리 레벨에 있는 지면의 아무 지점이나 가리킨 다음 스페이스바를 누릅니다. 지붕 꼭대기에서 NavMesh를 가리키고 스페이스바를 다시 누릅니다. 마지막으로 Enter 키를 눌러 점프를 마무리합니다.

    두 점 사이에 새 NavGraph의 가장자리를 나타내는 녹색 화살표가 표시됩니다. NavGraph에 대한 자세한 내용은 NavData을(를) 참조하십시오.

    또한 새 NavGraph는 자동으로 스마트 오브젝트와 관련된 사용자 정의 데이터 값으로 태그가 지정됩니다. 해당 경로에서 NavGraph를 사용하는 경우 스마트 오브젝트가 캐릭터에게 따르도록 하게 하는 궤적을 나타내는 녹색 호가 보입니다.

  4. 동작 패널에서 Plank 동작을 클릭합니다.
  5. 커서로 동일한 지붕 꼭대기의 아무 지점이나 가리킨 다음 스페이스바를 누릅니다. 다른 지붕 꼭대기의 NavMesh를 가리키고 스페이스바를 다시 누릅니다. 마지막으로 Enter 키를 눌러 판자를 마무리합니다.

    두 개의 지붕 꼭대기를 연결하는 또 하나의 새로운 NavGraph 가장자리를 볼 수 있으며 관련된 스마트 오브젝트의 위치를 시각화하는 자주색 직사각형이 표시됩니다.

  6. Ctrl 키를 누른 상태에서 봇을 클릭하여 선택하고 두 번째 지붕 꼭대기에 마우스 커서를 놓고 t 키를 눌러 해당 지붕 꼭대기를 봇의 대상으로 설정합니다.

    봇은 점프 오브젝트 및 판자가 포함된 새 경로를 계획합니다. 경로를 따라갈 때 점프와 같은 스마트 오브젝트가 사용자 정의 궤적을 따르도록 봇의 이동을 완벽하게 제어할 때마다 봇이 파란색으로 변합니다. 판자를 가로지를 때는 봇이 파란색으로 변하지 않습니다. 판자는 캐릭터의 이동을 완벽하게 제어하지 않고 기본 경로 따르기 시스템을 통해 캐릭터가 NavGraph를 따라 판자의 다른 쪽 끝으로 가도록 안내합니다.

또한 스마트 오브젝트는 NavMesh 영역에서 이동을 제어할 수 있습니다. 예를 들면 다음과 같습니다.

  1. 동작 패널에서 Lava 동작을 클릭합니다.
  2. 각 모서리의 위치를 가리키고 스페이스바를 눌러 용암 웅덩이의 범위를 설정합니다. 거리 중간에 배치하면 봇이 거기서 동적 장애물을 횡단합니다. 작업을 마쳤으면 Enter 키를 누릅니다.

    해당 영역의 NavMesh는 스마트 오브젝트의 존재를 반영하기 위해 자동으로 수정됩니다. Spawn Lava 명령은 스마트 오브젝트와 관련된 사용자 정의 데이터 태그로 해당 영역을 표시하는 TagVolume을 만듭니다. 이 스마트 오브젝트는 모든 봇이 해당 경로에서 이것을 사용할 때마다 태그가 지정된 영역에서 점프하도록 합니다. 예를 들어 다음 이미지에서 파란색 봇은 스마트 오브젝트가 해당 봇에 대해 계산한 궤적(빨간색으로 표시)을 따라 점프하는 중입니다. 그 동안 그 아래의 노란색 봇은 태그가 지정된 영역으로 접근하고 있습니다.

LabGame 및 LabEngine의 스마트 오브젝트 예를 더 보려면 Samples 패널에서 smartobjects 범주의 샘플을 참조하십시오.

자체 게임에서 자체 스마트 오브젝트 구현에 대한 자세한 내용은 스마트 오브젝트 만들기을(를) 참조하십시오.

선택 사항: LabGame에서 자체 지세 사용

Navigation Lab을 사용하여 자체 게임 레벨에 대해 NavData를 생성하고 LabGame에 보낼 수 있으며, 샘플 프레임워크에서 제공된 명령을 사용하여 자체 지세에서 직접 봇, 장애물 및 스마트 오브젝트까지도 생성할 수 있습니다. 프로토타이핑을 빠르게 구현하거나 단지 샘플을 실행해 보기 위해서라면 이것이 유용하다는 것을 알게 될 것입니다.

자체 지세에 대해 NavData 생성에 대한 자세한 내용은 통합 단계 2: 첫 번째 NavData 생성을(를) 참조하십시오.

선택 사항: 새 샘플 추가

Samples 패널에 나열된 모든 예에 대한 소스 코드는 data₩NavigationLab₩examples 하위 디렉토리에서 찾을 수 있습니다. 각 샘플은 자체 .LabSample 파일에 있으며 여기에는 Navigation Lab에서 실행되거나 실행을 위해 LabGame에 보낸 명령 목록이 들어 있습니다.

이 디렉토리에서 새 .LabSample 파일을 만들거나 기존 .LabSample 파일을 복사하고 해당 명령을 수정하여 자체 샘플을 만들 수 있습니다.

Samples 패널의 트리 보기는 examples 디렉토리의 현재 내용을 반영하므로 Navigation Lab에서 쉽게 새 파일을 시작할 수 있습니다.