UE5

UE Multi AnimMontage 동기화

우대비 2023. 5. 3. 14:59
반응형

Animation Montage의 경우 클라이언트에서 개별적으로 실행한 후

서버에 보고하는 방식으로 하면 안됨

 

서버에 Animation Montage 실행 사실을 알리고

Server가 각 클라이언트에게 알리는 방식으로 해야함

UFUNCTION(Server, Reliable)
    void PlayMontageInServer(class UAnimMontage* AM);
    void PlayMontageInServer_Implementation(class UAnimMontage* AM);

UFUNCTION(NetMulticast, Reliable)
    void MulticastAnimMontage(class UAnimMontage* AM);
    void MulticastAnimMontage_Implementation(class UAnimMontage* AM);
myPlayer->PlayMontageInServer(CharacterFireAM);

클라이언트는 실행할 Animation Montage를 Server형님에게 부탁하기 위해

PlayMontageInServer를 호출 ->

 

 

void ATPSPlayer::PlayMontageInServer_Implementation(UAnimMontage* AM)
{
	MulticastAnimMontage(AM);
}

Server는 AnimationMontage를 확인하고 클라이언트에게로 Multicast함

 

void ATPSPlayer::MulticastAnimMontage_Implementation(UAnimMontage* AM)
{
	GetMesh()->GetAnimInstance()->Montage_Play(AM);
}

각 클라이언트의 캐릭터들은 Montage_Play함수를 실행함으로써 AnimMontage가 실행됨

 

 

요건 및 주의사항

RPC 의 정상 작동을 위해 충족시켜야 하는 요건이 몇 가지 있습니다:

  1. Actor 에서 호출되어야 합니다.
  2. Actor 는 빈드시 replicated 여야 합니다.
  3. 서버에서 호출되고 클라이언트에서 실행되는 RPC 의 경우, 해당 Actor 를 실제 소유하고 있는 클라이언트에서만 함수가 실행됩니다.
  4. 클라이언트에서 호출되고 서버에서 실행되는 RPC 의 경우, 클라이언트는 RPC 가 호출되는 Actor 를 소유해야 합니다.
  5. Multicast RPC 는 예외입니다:
    • 서버에서 호출되는 경우, 서버에서는 로컬에서 실행될 뿐만 아니라 현재 연결된 모든 클라이언트에서도 실행됩니다.
    • 클라이언트에서 호출되는 경우, 로컬에서만 실행되며, 서버에서는 실행되지 않습니다.
    • 현재 멀티캐스트 이벤트에 대해 단순한 스로틀 조절 메카니즘이 있습니다. 멀티캐스트 함수는 주어진 액터의 네트워크 업데이트 기간동안 두 번 이상 리플리케이트되지 않습니다. 장기적으로 크로스 채널 트래픽 관리 및 스로틀 조절 지원을 개선시킬 계획입니다.

다음 표는 호출 액터의 소유권(가장 왼쪽 열)에 따라 주어진 유형의 RPC 실행 위치를 나타냅니다.

https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/Networking/Actors/RPCs/

 

RPC

네트워크를 통한 함수 리플리케이션 지정하기 입니다.

docs.unrealengine.com

 

반응형
LIST

'UE5' 카테고리의 다른 글

UE5 Multi SetTimer 안될때  (1) 2023.05.04
UE Multi Niagara Spawn  (0) 2023.05.03
UE Multi UserWidget 중복되지 않게 화면에 띄우기  (0) 2023.05.03
UE Muliti Server/Client 체크 법  (0) 2023.05.02
UE 멀티플레이 변수 Replicate  (0) 2023.05.02