언리얼 리플리케이션(Replication) : 클라이언트와 서버의 사이의 복제
서버와 클라이언트 통신을 위해 RPCs와 RepNotify를 사용하고, 서버와 클라이언트의 동기화를 위해 Actor Replication을 사용
UPROPERTY(Replicated)
int32 PlayerHealth = 100;
UPROPERTY(ReplicatedUsing=OnRep_HealthChange)
int32 PlayerHealth = 100;
UFUNCTION()
void OnRep_HealthChange();
=> ✅ Actor Replication과 RepNotify는 UPROPERTY()와 지정자만 잘 선언하면 자동으로 됨
UFUNCTION(Server, Reliable) // Reliable = TCP
void ServerFireWeapon();
UFUNCTION(NetMulticast, Unreliable) // Unreliable = UDP
void MulticastPlayExplosionEffect();
UFUNCTION(Server) = 서버에서 실행해야 할 함수(클라이언트가 요청) = BP에서 Run On Server
UFUNCTION(Client) = 클라이언트에서 실행해야 할 함수(서버가 요청) = BP에서 Run On owning Client
UFUNCTION(NetMulticast) = 서버에서 먼저 호출된 다음, 모든 클라이언트에서도 호출되는 함수 = BP에서 Multicast
=> ✅ RPCs는 UFUNCTION()의 지정자에 따라 동작하는 게 달라짐, 그리고 때에 맞게 수동으로 호출해야함
참조 사이트
1. https://dev.epicgames.com/documentation/ko-kr/unreal-engine/networking-overview-for-unreal-engine
2. https://dev.epicgames.com/documentation/ko-kr/unreal-engine/networking-overview-for-unreal-engine#%EC%95%A1%ED%84%B0%EB%A6%AC%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98
3. https://dev.epicgames.com/documentation/ko-kr/unreal-engine/event-dispatchers-in-unreal-engine