ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Actor Replication Frequency & Interpolation
    Unreal Engine 2024. 4. 20. 16:52

    NetUpdateFrequency: 리플리케이션 빈도의 최대치를 설정함

    - 1초당 몇 번 리플리케이션을 시도할지 지정한 값

    - 기본 값은 100이며, 이론적으로 서버는 0.01초 간격으로 리플리케이션을 시도함

    - 다만, 이는 최대치일 뿐 이를 보장하지 않으며 서버의 성능으로 복제됨

     

     

     

    리플리케이션 빈도를 줄이고, 서버에서 데이터를 받지 않는 공백에 움직임을 보간하는 작업을 추가하면 부드러운 움직임을 낼 수 있음.

     

     

    public:
    	float RotationRate = 30.0f; 
    	float ClientTimeSinceUpdate = 0.0f; // 서버로부터 패킷을 받은 후 지난 시간
    	float ClientTimeBetweenLastUpdate = 0.0f; // 서버로부터 패킷을 받은 후 다음 패킷을 받을 때까지 걸린 시간
    void AABFountain::Tick(float DeltaTime)
    {
    	Super::Tick(DeltaTime);
    
    	if (HasAuthority())
    	{
    		AddActorLocalRotation(FRotator(0.0f, RotationRate * DeltaTime, 0.0f));
    		ServerRotationYaw = RootComponent->GetComponentRotation().Yaw;
    	}
    	else
    	{
    		ClientTimeSinceUpdate += DeltaTime;
    		if (ClientTimeBetweenLastUpdate < KINDA_SMALL_NUMBER)
    		{
    			return;
    		}
    
    		const float EstimateRotationYaw = ServerRotationYaw + RotationRate * ClientTimeBetweenLastUpdate;
    		const float LerpRatio = ClientTimeSinceUpdate / ClientTimeBetweenLastUpdate;
    
    		FRotator ClientRotator = RootComponent->GetComponentRotation();
    		const float ClientNewYaw = FMath::Lerp(ServerRotationYaw, EstimateRotationYaw, LerpRatio);
    		ClientRotator.Yaw = ClientNewYaw;
    		RootComponent->SetWorldRotation(ClientRotator);
    	}
    }

     

     

    적응형 네트워크 업데이트(Adaptive Network Update)

    - 유의미한 업데이트가 없으면 빈도를 줄여서 부하를 줄이는 기법

    - MinNetUpdateFrequency: 리플리케이션 빈도의 최소치 설정을 사용함

    - 최소 값과 최대 값 사이에서 현재 액터에 맞는 최적의 전송 타이밍을 설정하며, 직접 활성화시켜 줘야 사용 가능

     

    DefaultEngine.ini

    [SystemSettings]

    net.UseAdaptiveNetUpdateFrequency=1

     

     

     

     

    'Unreal Engine' 카테고리의 다른 글

    Actor Priority & Dormancy(휴면)  (0) 2024.04.20
    Actor Replication's Relevancy  (0) 2024.04.20
    Unreal Insight  (0) 2024.04.20
    1초마다 실행하는 함수  (0) 2024.04.18
    Actor Replication  (0) 2024.04.18
Designed by Tistory.