언리얼5에서 멀티플레이 게임을 제작 중 몽타주 Multicast 실행이 안되는 상황에 마주쳤다.
처음에 PlayerController에서 ServerPlayMontage, MulticastPlayMontage를 만들어서 멀티캐스트 처리하도록 했었다.
그런데 서버에서 몽타주를 실행하면 다른 클라이언트에서 보이지 않았다.
클라이언트에서 실행하면 다른 클라나 서버에서 잘 보였는데 말이다.
아무리 다른 변수들의 Replication을 설정하고 함수를 수정해봐도 고쳐지지 않았다.
다른 유튜브 영상을 참고했지만 모두 BP에서만 다루기만 했다.
https://www.youtube.com/watch?v=s8j0RhW7xKE&ab_channel=GorkaGames
그런데 영상을 보면 플레이어 캐릭터에 함수를 만들어서 적용하는 것을 파악했다.
혹시나 싶어 같은 함수를 플레이어 컨트롤러 BP에 옮겨서 실행했더니 몽타주 복제가 안됐다!
바로 C++에서 컨트롤러에 있던 함수를 플레이어 캐릭터로 옮겨서 빌드하니 바로 해결이 되었다.
왜 그런가 싶어 PlayerController 문서를 찾아보니 아래와 같은 내용이 있었다.
즉, 컨트롤러는 remote 폰한테는 존재하지 않으므로 멀티캐스트를 해도 처리가 안되었던 것이다!
이를 해결하려면 컨트롤러도 복제하거나(하지만 이러면 입력 처리 등이 복잡해질 수 있다),
기본적으로 복제되는 캐릭터에다가 멀티캐스트 함수를 쓰는 것이 좋을 것 같다.
'게임개발 > Unreal Engine' 카테고리의 다른 글
[UE5] C++ AActor::Destroy() not working in BeginPlay() (0) | 2025.02.06 |
---|---|
[UE5] Unreal Engine C++ API References (2) | 2024.08.20 |
[UE5] Root Motion with custom mesh not working (0) | 2024.07.17 |
[Unreal Engine 5] Package Error 정복하기(malformed tag, unknown structure, modify UObject) (1) | 2023.12.08 |