인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

themoon007님의 프로필 이미지

작성한 질문수

이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해

11강 움직임 리플리케이션

캐릭터 클래스의 mesh 관련

작성

·

54

0

캐릭터 클래스는 처음부터 캡슐, 메시, 캐릭터 무브먼트 컴포넌트가 있는데요.

 

무브먼트 컴포넌트가 클라이언트와 동기화시키고 보정하는 기능이 있는 건 알 것 같기도 한데 이게 mesh도 영향을 받나요?

 

리슨 서버에선 클라이언트 소유 캐릭터의 mesh를 강제로 이동시키기나 add relative rotation 해도 default 값에서 변하지 않고 고정됩니다.

 

반면에 서버 환경에서 서버 소유 캐릭터나 클라이언트 환경에서 클라 소유 캐릭터의 mesh를 이동/회전 시키면 일단 적용은 됩니다.

(다만 동기화는 안됩니다.)

 

리슨서버에서 클라이언트 소유 캐릭터의 mesh를 transform 수정 가능하게 할 방법은 아예 없나요?

답변 2

0

이득우님의 프로필 이미지
이득우
지식공유자

우선 캐릭터 무브먼트는 루트컴포넌트인 캡슐의 움직임과 회전을 조작합니다. 메시는 그 자식 컴포넌트이기 때문에 원하는 설정을 독립적으로 하기가 쉽지 않죠.

캡슐을 회전하지 않고, 메시만 회전시키려는 이유는 잘 모르겠지만 ( 일반적으론 권장하진 않습니다. ) 분수대 회전시키는 것처럼 프로퍼티 리플리케이션을 사용해 갱신될 때마다 업데이트해주면 될 것 같습니다.

themoon007님의 프로필 이미지
themoon007
질문자

vr 에서 컨트롤러 회전과 별개로 머리 움직임으로 인한 회전을 메시에 별도로 적용해보려고 했었습니다.
서버에선 클라 소유 캐릭터의 mesh를 add relative rotation을 하든 set local rotation을 하든 transform이 초기값에서 절대 바뀌지 않아서 교육 샘플 프로젝트에서도 테스트 해봐도 동일하고 강의도 다시 듣다가 관련 내용이 없는것 같아 질문드렸습니다..

 

아무래도 캐릭터 무브먼트 컴포넌트가 계속 덮어 씌우는 것같은데 리플리케이트 과정 코드 다시 보려고 합니다

 

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. themoon007님.

캐릭터 클래스의 Mesh는 기본적으로 CharacterMovementComponent에 의해 애니메이션과 이동이 조화롭게 처리되도록 동기화 됩니다. CharacterMovementComponent는 캐릭터의 물리적인 움직임을 처리하며, 네트워크 환경에서는 이러한 움직임이 서버와 클라이언트 간에 올바르게 동기화 되도록 여러 가지 기능을 제공합니다.

클라이언트 소유 캐릭터의 Mesh Transform 문제

  • 리슨 서버에서 클라이언트가 소유한 캐릭터의 Mesh를 강제로 이동하거나 회전시키려 할 때, 기본적으로 Hierarchy의 제약이나 Netcode 때문에 Mesh가 변하지 않을 수 있습니다.
  • 클라이언트 소유 캐릭터의 Mesh를 변경하기 위해서는 서버의 승인이 필요하거나, 클라이언트 자체에서 수행한 변경이 서버와 동기화되지 않았기 때문에 변경이 보이지 않을 수 있습니다.

해결 방안

  1. 서버에서의 트랜스폼 조정: 서버에서 Mesh의 트랜스폼을 변경하고 이를 모든 클라이언트에 전파하는 방식으로 처리할 수 있습니다. 이 경우, 직접적인 변경 사항이 서버에서 처리되고 클라이언트에게 전파되기 때문에 모든 클라이언트에서 동일한 변경을 확인할 수 있습니다.

  2. RPC 사용하기: 클라이언트에서 Mesh의 변경사항을 서버에 Remote Procedure Call (RPC)를 통해 요청하고, 서버에서 이를 수용하여 모든 클라이언트에 동기화할 수 있습니다.

아래 유사한 문제를 다룬 질문을 참고하시면 도움이 될 것입니다:

추가적으로, 코드나 설정에 대한 세부적인 부분을 함께 제공해 주시면 더 구체적인 해결책을 찾는데 도움이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.