좌표 전투에서는 게임플레이 중 세 가지 서로 다른 좌표 공간을 사용합니다.
월드 스페이스: Verse API 함수를 통해 게임 월드에 오브젝트를 배치하는 데 사용되는 좌표 공간입니다.
보드 스페이스: 플레이어 게임보드 위에 오브젝트 위치를 지정하는 데 사용되는 좌표 공간입니다.
미니보드 스페이스: 플레이어에게 보드를 보여주는 데 사용되는 좌표 공간입니다.
이 좌표 공간은 모두 합쳐져 플레이어에게 현재 게임 상태 및 게임플레이 퍼포먼스를 정확히 보여줍니다.
포괄적인 좌표 공간 관리를 설계하려면 계획과 생각이 필요합니다. 작업 대부분은 좌표 공간 사이를 변환하여 월드 스페이스의 벡터를 게임보드의 좌표와 미니보드의 좌표에 안정적으로 매핑한 뒤 돌아올 수 있게 하는 것입니다.
보드 스페이스는 위 이미지 중앙에서 게임보드로 나타난 것을 볼 수 있고 (1) 미니보드 스페이스는 위 이미지 좌측 상단의 미니보드로 나타난 것을 볼 수 있습니다 (2).
월드 스페이스는 UEFN과 Verse API 함수의 기반이 되는 일관적인 좌표계입니다. UEFN에서는 왼쪽-위쪽-앞쪽(LUF) 3차원 좌표계를 사용합니다.
이 좌표계에 대한 자세한 내용은 왼쪽-위쪽-앞쪽 좌표계 문서를 참고하세요.
좌표 공간
본 경험 내 각 좌표 공간의 경우, 월드 내에 올바르게 게임 오브젝트를 배치하려면 다른 표면 및 유형으로의 위치 변환이 필요합니다. 아래는 각 공간에 대한 설명입니다. 이 튜토리얼에서는 이후 심도 있게 알아봅니다.
월드 스페이스
월드 스페이스는 UEFN과 Verse에서 게임 월드 내 오브젝트 위치 지정을 위해 사용되는 기본 공간입니다. 이 게임 예시에서는 주로 creative_device 오브젝트를 사용합니다. 결과적으로 게임 월드 내에서 장치 위치를 나타내기 위해 사용된 Verse 클래스는 /UnrealEngine.com/Temporary/SpatialMath 모듈의 transform입니다. 정의는 다음과 같습니다.
transform<public> := struct<concrete><computes>:
Scale<public>:vector3
Rotation<public>:rotation
Translation<public>:vector3
vector3는 다음과 같이 정의됩니다.
vector3<public> := struct<concrete><computes><persistable>:
X<public>:float
Y<public>:float
Z<public>:float
transform은 오브젝트의 위치(Translation), 방향(Rotation), 크기(Scale)을 정의합니다.
creative_object 클래스에서 파생된 모든 오브젝트는 Verse API 함수에 액세스하여 다음을 수행할 수 있습니다.
GetTransform: 오브젝트의 현재 트랜스폼 데이터를 구합니다.TeleportTo: 오브젝트를 애니메이션 없이 입력 대상으로 이동합니다.MoveTo: 입력 대상으로 이동 애니메이션을 적용합니다.
이러한 API 함수에 더불어 transform의 정의는 게임 월드 내 오브젝트의 위치를 정의하고 배치하는 데 필요한 모든 것을 제공합니다.
보드 스페이스
보드 스페이스는 좌표 전투에서 사용되는 주된 게임보드로, 위 이미지에서 콜아웃 (1)로 나타나 있습니다. 이 공간은 게임보드 중앙에 맞춰 보드 위에 공간 또는 타일을 지정하는 데 사용됩니다.
미니보드 스페이스
미니보드는 플레이어에게 보드를 보여줍니다. 적중 마커는 보드 타일이 공격을 받았고 적이 해당 타일에 있는 폰을 파괴하는 데 성공했음을 나타냅니다. 빗나감 마커는 보드 타일이 공격을 받았지만 적이 아무것도 맞히지 못했음을 나타냅니다. 미니보드 자체는 게임플레이 카메라에 따라 배치되는 스태틱 메시이므로, 게임 유저 인터페이스의 일부로 표시됩니다.
건설 단계
세 가지 좌표 공간을 함께 사용하여 효과적인 게임플레이를 만들려면 다음을 수행해야 합니다.
보드 스페이스에서 타일 표현을 정의합니다.
보드 스페이스의 제한을 정의합니다.
월드 스페이스 내에서 보드 스페이스의 위치를 정의합니다.
보드 스페이스와 월드 스페이스 간 변환합니다.
보드의 특정 위치에 폰을 배치합니다.
보드에서 폰을 가져옵니다.
보드에서 폰을 제거합니다.
보드 위에 모든 폰을 랜덤 배치합니다.
미니보드 스페이스에서 타일 표현을 정의합니다.
미니보드 스페이스의 제한을 정의합니다.
월드 스페이스 내에서 미니보드 스페이스의 위치를 정의합니다.
미니보드에 마커를 배치합니다.
미니보드 스페이스, 보드 스페이스, 월드 스페이스 간 변환합니다.
게임 행동을 정의합니다.
게임 루프를 생성합니다.
승리 조건이 언제 충족되는지 결정합니다.