RPC 키워드 사용법
- RPC 키워드
Server, Client, NetMulticast 키워드를 통해 수행될 위치를 정해줄 수 있다
그리고 추가적으로 Reliable/Unreliable 키워드와 WithValidation 키워드를 이용해
옵션을 설정할 수 있다
- Reliable
기본값은 Unreliable이다
RPC가 Remote Machine에서 확실히 실행되게하려면 Reliable을 작성해야한다
이펙트나 사운드의 경우는 일부 씹혀도 되기 때문에 Unreliable을 작성하는 경우가 많다
물리나 스폰의 경우에는 반드시 수행되어야 하기에 Reliable을 작성하는 것이 일반적이다
- WithValidation
RPC는 패킷의 전달이 발생하게 된다
이러한 과정을 만약 검증하지 않으면 위변조 가능성이 있다
그래서 WithValidation 키워드를 사용해 구현함수 외에 또다른 검증용 함수를 정의할 수 있다
검증용 함수를 통해 위변조가 발생하지 않도록 검증하거나
시스템 차단 알림 로직을 작성할 수 있다
class STUDYPROJECT_API ASPlayerCharacter : public ASCharacter
{
...
public:
...
private:
...
UFUNCTION(Server, Reliable, WithValidation)
void SpawnLandMine_Server();
protected:
...
};
void ASPlayerCharacter::SpawnLandMine(const FInputActionValue& InValue)
{
SpawnLandMine_Server();
}
bool ASPlayerCharacter::SpawnLandMine_Server_Validate()
{
// 추가적인 검증 로직 작성 가능
return true;
}
void ASPlayerCharacter::SpawnLandMine_Server_Implementation()
{
if (true == ::IsValid(LandMineClass))
{
FVector SpawnedLocation = (GetActorLocation() + GetActorForwardVector() * 200.f) - FVector(0.f, 0.f, 90.f);
ASLandMine* SpawnedLandMine = GetWorld()->SpawnActor<ASLandMine>(LandMineClass, SpawnedLocation, FRotator::ZeroRotator);
SpawnedLandMine->SetOwner(GetController());
}
'게임 엔진 > [코드조선] 언리얼 데디서버' 카테고리의 다른 글
Replicated, ReplicatedUsing 키워드 (0) | 2025.03.07 |
---|---|
함수 내부에서의 구분 (0) | 2025.03.07 |
RPC 활용 (0) | 2025.03.07 |
RPC (Remote Procedure Call) (0) | 2025.03.07 |
언리얼 멀티플레이 개념 (0) | 2025.03.07 |