1 minute read



1. CMC 개요


image

캐릭터가 VectorsEventsCMC로 보내면 CMC는 이 입력값들을 캐릭터의 위치를 조종하는데 활용한다.

CMC는 기본적으로 캐릭터의 입력에 따른 이동 Modes를 제공한다(Walking, Swimming, Flying …). 기본 CMC를 활용하는 것도 좋지만, 커스텀 CMC로 확장하는 것을 더 권장한다고 한다!


커스텀 CMC에서 dashsprint와 같은 다양한 이동 모드를 구현할 수 있다.

단, CMC는 캐릭터 클래스에 유일해야 한다. 생각해보면 너무 당연한 말이다.

또, CMC를 확장하려면 C++ 코드를 사용해야 한다고 한다. 블루프린트로 CMC를 확장하기는 어려울 것 같다.



2. CMC를 활용하는 게임 유형


Single Player / Co-op General MultiPlayer Non-Humaniod
네트워크를 사용하지 않거나, 클라이언트 권한이 필요하지 않음 서버 권한 부여 + Client-side prediction 플레이어를 캐릭터 프레임워크에 맞출 것인지 고려
블루프린트 조정만으로 활용 가능 블루프린트 조정이 제대로 동작하지 않음 커스텀 솔루션을 만들어 Pawn에서 파생
가장 쉬운 방법 사용자 지정 CMC가 필수! CMC 없이는 네트워킹이 어려움


싱글 게임

싱글 플레이어 게임 모드에서, 일반적인 움직임만을 구사하고자 한다면 기본으로 제공하는 CMC만으로도 충분하다. 달리기 기능은 캐릭터의 이동 속도를 조정해 간단히 구현할 수 있다. 단, WallRun이나 HangGliding과 같은 복잡한 이동을 구현하려면 기본 CMC만으로는 제약 사항이 많을 것이다. 초반부에 커스텀 CMC에 투자하는 게 좋다.


멀티 게임

물론, 멀티 게임이라도 기본 CMC가 제공하는 기능 이외의 다른 움직임을 사용하지 않는다면 커스텀할 필요가 없다!(진짜 기본 움직임만 사용한다던지, 마우스 클릭으로 캐릭터가 이동하는 게임이라던지…) 단, 싱글 게임보다 블루프린트로 움직임을 조정하는 것이 어려우므로, 싱글 게임보다 커스텀 CMC 사용을 권장한다.


Non-Humanoid

논 휴머노이드나 물리학 기반의 플레이어 캐릭터를 활용해 오프라인 게임을 만든다면, CMC나 캐릭터 클래스를 사용하지 않고도 이동 로직을 구현할 수 있다. 그러나 멀티 플레이어 게임을 만든다면, 캐릭터 클래스와 플레이어 모델이 알맞지 않더라도 CMC를 확장하고 캐릭터 클래스를 사용하는 것이 바람직하다. 캐릭터 클래스의 캡슐 콜리전만 플레이어 모델에 맞게 변경하면 되겠다!




3. CMC 특징


  • Solid Framework
    • 이동 관련 로직 관리 및 움직임 역학을 구현하기 위한 구조 제공
  • Server-Authoritative + Client Side Prediction
    • 서버 권한 제공 + 클라이언트 예측 기능
    • 멀티플레이어 게임을 개발할 경우, 클라이언트 예측 기능을 직접 구현하려면 기본적으로 수개월 이상의 시간이 소요됨
  • Root Motion Compatibility
    • 루트 모션 애니메이션을 사용하기 위해 일시적으로 캐릭터의 위치 제어
  • Replay System
    • 캐릭터의 이동을 재생하는 기능
  • Remote Proxy Replication
    • 클라이언트의 위치가 CMC를 통해 자동으로 복제됨
  • Nav Movement and ROV Avoidance - bot and ai
    • 내비게이션 메시에서 이동하는 봇이나 인공지능을 위한 Nav MovementROV 기능 제공

Leave a comment