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
'프로그래밍 > 언리얼엔진' 카테고리의 다른 글
| [언리얼5.4] Learning Agents 개요 (4) | 2024.09.28 |
|---|---|
| [언리얼] CharacterMovementComponent 파이프라인-1- (1) | 2024.09.12 |
| [언리얼] 각도에 따른 힘(Force)의 크기 보정하기 (2) | 2024.08.12 |
| [언리얼5] 카메라시퀀스 적용해보기 (애니메이션/컷씬) -인디게임 제작기 4- (1) | 2024.07.27 |
| [언리얼5] 애니메이션 적용시키기 (인디게임 제작기 3) (3) | 2024.07.13 |