This document is about: QUANTUM 2
SWITCH TO

예측 영역

개요

PredictionAreaSystemPredictionAreaInfo에서 제공하는 로컬 플레이어 메타데이터를 기반으로 Quantum의 예측 영역을 업데이트하는 역할을 합니다. 런타임에 유니티는 Register.cs에서 데이터를 제공하고 업데이트하는데, 이 서비스는 SimulationContext.User.csSimulationContextService목록에 추가된 서비스입니다.

빠르게 진행되는 게임에서의 예측

기본적으로 예측 영역은 유니티에서 설정되며 다음을 제공합니다.

  • 세계 공간에서 위치, 일반적으로 로컬 플레이어의 위치, 그리고
  • 반지름, 일반적으로 로컬 플레이어의 뷰 필드를 나타냄

그러나 이것은 캐릭터가 매우 빠르게 움직이는 빠른 속도의 게임에서는 예측에 적합하지 않습니다.

문제점

로컬 플레이어가 충분히 빠르게 움직이면 다음 예측 시뮬레이션 틱에 사용되는 예측 영역을 벗어납니다. 그러면 다음 예측 프레임에서 로컬 플레이어는 전혀 시뮬레이션이 되지 않습니다. 유니티의 움직임은 최신 예측 프레임에 의존하기 때문에 액터 엔티티를 애니메이션화합니다. 예측 영역이 로컬 플레이어를 따라잡을 때까지 다음으로 확인된 프레임이 시뮬레이션될 때까지 기다려야 하므로 움직임이 버벅거립니다.

해결 방법

예측 영역에 항상 로컬 플레이어가 포함되도록 하기 위해 로컬 플레이어의 EntityRef가 유니티의 FPS 템플릿 API로 연결되어 있습니다. 이를 통해 Quantum은 각 예측 프레임의 시작 부분에서 예측 영역의 중심을 조정하여 로컬 플레이어 엔티티가 예측 프레임의 일부로 시뮬레이션되도록 할 수 있습니다.

따라서 FPS 템플릿은 이 솔루션을 구현하기 위해 다음 단계를 진행합니다.

  1. Quantum 시뮬레이션 틱은 플레이어 위치를 예측 영역의 중심으로 실행합니다.
  2. 틱이 끝나면 실행은 유니티로 다시 전달되어 자체(액터 엔티티의 이동 애니메이션 포함)를 업데이트할 수 있습니다.
  3. 유니티는 로컬 플레이어의 현재 위치를 업데이트하고 보간법을 추가합니다.
  4. FrameContextUser내의 PredictionAreaInfo가 새 위치와 로컬 플레이어 액터 엔티티의 EntityRef로 업데이트됩니다.
  5. Quantum은 다시 다음 예측 틱을 시뮬레이션합니다.
    • PredictionAreaInfo에 제공된 EntityRef가 유효하면 PredictionAreaSystem은 이 기능을 사용하여 엔티티의 Transform3D를 잡고 예측의 중심으로 위치를 설정합니다.
    • EntityRef가 유효하지 않거나 EntityRef.None으로 설정된 경우, PredictionAreaInfo에서 유니티가 제공한 위치를 사용합니다. 이 시나리오는 일반적으로 방금 죽은/사라진 액터 엔티티와 관련이 있습니다.
Back to top