프로그래밍/언리얼엔진

[언리얼] 엔진 분석 Character Movement Component -0-

하바사 2024. 8. 30. 23:09

https://youtu.be/urkLwpnAjO0?si=j0MJuRO1m7Agyvzu

 

[Unreal Engine] Do you need it? Intro to Series | Character Movement Component In-Depth

 

캐릭터 무브먼트 컴포넌트(CMC)란

캐릭터로부터 전달된 인풋(Input)을 바탕으로 캐릭터의 위치를 조작해주는 컴포넌트이다. Walking, Swimming, Flying 세 모드가 존재하며 각 모드는 각기 다른 인풋에 의해 실행될 수 있다. 

좀더 원하는 캐릭터 무브를 구현하기 위해 이 컴포넌트를 커스텀할 수 있다. 이를 테면 스프린팅(달리기)이나 대쉬 같은 걸 예로 들 수 있다. CMC 하나만으로 캐릭터 이동 로직을 전부 처리할 수 있다. 

 

 

CMC를 커스텀해야하는 경우

Single Player / Co-op MultiPlayer(협동멀티)의 경우

  • Not Networked or Client Authoritative
    타 플레이어의 핵 내 버그플레이를 신경쓸 필요가 없다. 클라이언트 단에서 포지션을 체크하면 된다. 인간형 캐릭터로 일반적으로 움직이는 게임을 만든다면 디폴트 CMC를 쓰면 된다. 
  • Blueprint tweaks will work
    만일 기본적으로 제공해주지 않는 움직임이 필요하다면 블루프린트에서 쉽게 구현할 수 있다. 달리기는 Max Walk Speed 만 높이면 된다. 다만  이런 식의 간단한 해결법들은 오프라인 게임 위주로 쓰일 법다. 
  • Easiest Solution
    벽타기, 행잉 글라이딩 같이 더 복잡한 움직임을 구현하고 싶다면 매달릴 때 중력값(gravity) 낮추거나 하는 식으로 만들 순 있지만 한계에 도달하는 경우가 많다. 고로 커스텀 CMC를 직접 만드는 편이 낫다. 

 

General MultiPlayer(일반적인 멀티게임 FPS, mmo, 배틀로얄..)의 경우

  • Server Authoriative + Client Predicted
  • Blueprint tweaks will not work - BP 소용 No No
  • Custom CMC Required - 커스텀으로 만드세요. 움직임이 겁나 단순하거나 죄다 피직스 처리할 거 아니면! 

 

Non-Humanoid(인간형 캐릭터가 없는 게임) - 캐릭터가 탱크라든지.. 아니면 동물이든지.. 피직스 무브일 수도 있고. 

Try to fit your player into the character framework?

Alternative: Derive from Pawn with custom solution - 오프라인 게임이면 원하는 걸로 해도 좋음.

  • Extremely hard to network without CMC - 네트워킹 게임이면 CMC 쓰는 게 낫다(장점이 많음). 다만 CMC가 캡슐 콜리전 가지고 있는 게 조금 거슬릴 수 있음. 그러면 수치 조정해서 Sphere 콜리전으로 만들면 그만! 

 

이러니저러니 해서 CMC 쓰는 거 고수하면 좋은 점

  • Solid Framework 용이한 프레임워크
  • Server Authoritative - prevent cheaters / Client Side Prediction - hides latency
    서버 단에서 관리해서 클라이언트 제어하기가 좋다.
  • Root Motion Compatibility 루트 모션과 호환 가능. 루트 모션은 애니메이션에 있는 위치 정보를 이용하여 캐릭터 움직임 이동을 수월히 만들어주는 기능이다.  
  • Replay System 리플레이 시스템이 필요할 때 용이
  • Remote Proxy Replication 내 게 아닌 다른 클라이언트 위치값이 자동으로 리플리케이트된다. 
  • Nav Movement and ROV Avoidance - bots and ai 네비메시에서 움직이는 봇 있을 때 유용(하다고 함)
  • Networked Character Teleportation