무버(Mover) 플러그인은 캐릭터 무브먼트 컴포넌트(Character Movement Component, CMC) 시스템을 계승하기 위해 개발되었습니다. 이 문서에서는 두 시스템의 차이점을 이해하기 쉽게 설명합니다.
개괄적인 비교
| 무버 | CMC |
|---|---|
|
|
리플리케이션 모델의 차이점
CMC를 사용하면 소유 클라이언트가 입력과 상태의 조합을 클라이언트의 프레임 레이트에 맞춰'이동'으로 전송합니다. 서버는 이를 수신하여 동일한 이동을 즉시 수행합니다. 그런 다음 서버는 상태를 비교하여 보정이 필요한지 결정하고 이동의 승인 또는 수정 상태 데이터 블록을 사용하여 응답합니다.
무버 및 네트워크 예측을 통해 서버와 클라이언트는 공유된 타임라인에서 시뮬레이션하며, 클라이언트는 서버보다 약간 먼저 예측적으로 실행됩니다. 클라이언트는 특정 시뮬레이션 기간 동안 입력을 생성하며, 클라이언트에서 서버로 전송하는 것은 이 입력뿐입니다. 서버는 시뮬레이션 시간이 될 때까지 이 입력을 버퍼링합니다. 모든 무브먼트 업데이트를 수행한 후 서버는 상태를 모든 클라이언트에 브로드캐스트합니다. 클라이언트는 롤백 또는 재시뮬레이션을 통한 보정이 필요한지 결정합니다.
CMC와 달리 무버 액터의 상태는 언제든지 외부에서 직접 수정할 수 있는 것은 아닙니다. 예를 들어 직접 조작할 수 있는 속도 프로퍼티가 제공되지 않습니다. 대신 개발자는 모드, 인스턴트 이펙트 및 기타 메커니즘을 사용하여 다음으로 사용할 수 있는 시뮬레이션 틱 동안 변경사항을 적용해야 합니다. 또한 이동 입력 및 버튼 입력 등 플레이어가 제공한 입력은 무버 액터의 상태에 즉시 영향을 미치지 않으며, 무브먼트 시뮬레이션 틱에 대해 단일 입력 명령으로 결합해야 합니다.
프로젝트 세팅에 따라 다양한 게임 월드 프레임의 플레이어 입력이 단일 무브먼트 시뮬레이션 틱에 영향을 미칠 수 있습니다.
이 다이어그램은 네트워크 예측 모델만 보여주지만, 카오스의 네트워크 피직스 리플리케이션도 이와 유사하게 작동합니다.
기타 중요한 비교 항목
- 무브먼트 모드는 두 시스템에서 유사하지만 무버의 경우 모듈형입니다.
- 무버의 레이어드 이동은 CMC의 루트 모션 소스(Root Motion Source, RMS)와 유사합니다.
- 트랜지션, 인스턴트 이펙트, 무브먼트 모디파이어는 무버에서 새롭게 구현된 콘셉트입니다.
- CMC에서는 컨트롤러 및 폰이 기본 이동 입력을 처리합니다. 무버는 입력에 대한 추정을 하지 않으며, 프로젝트에서 입력을 무브먼트 시뮬레이션으로 변환합니다.
- 무버에서는 모드의 무브먼트와 레이어드 이동을 혼합할 수 있습니다.
- 무버를 사용하면 플러그인과 런타임에서도 커스텀 무브먼트 모드를 손쉽게 추가할 수 있습니다.
- MoverComponent는 시각적 표현에서 스켈레탈 메시를 필요로 하거나 추정하지 않습니다.
- MoverComponent는 루트 SceneComponent를 필요로 하지만, 단일 수직 방향 캡슐이거나 PrimitiveComponent일 필요는 없습니다. 이는 특히 개나 말 등 비인간형 캐릭터를 생성하는 경우에 유용합니다.
- 콜리전 프리미티브 없이도 무버를 사용하여 무버 액터를 생성할 수 있습니다.
- 무버에서는 양의 Z축이 반드시 위쪽일 필요가 없습니다.