Net Update Frequency는 네트워크 오브젝트가 얼마나 자주 업데이트되어야 하는지를 설정하는 변수다. 이 값은 초당 업데이트 수를 결정한다.예를 들어, "Net Update Frequency"가 10으로 설정된 경우, 해당 오브젝트는 초당 최대 10번까지 서버에 의해 클라이언트에게 업데이트 된다. 

 

목차

     

     


     

     

    Net Update Frequency 수정하기

     

    Net Update Frequency는 네트워크 오브젝트가 얼마나 자주 업데이트되어야 하는지를 설정하는 변수다. 이 값은 초당 업데이트 수를 결정한다.

    예를 들어, "Net Update Frequency"가 10으로 설정된 경우, 해당 오브젝트는 초당 최대 10번까지 서버에 의해 클라이언트에게 업데이트 된다. 높은 업데이트 빈도는 실시간 동기화에 도움이 될 수 있지만, 네트워크 대역폭을 많이 사용하므로 성능 문제가 발생할 수 있다.

    반대로 낮은 "Net Update Frequency" 값은 네트워크 대역폭을 절약할 수 있지만, 게임 오브젝트의 동기화 지연을 초래할 수 있습니다. 따라서 이 값을 조정할 때는 성능과 게임 플레이 품질 사이의 균형을 찾아야 한다.

    많은 멀티플레이어 게임에서 "Net Update Frequency"는 중요한 최적화 요소다. 이 값으로 인해 클라이언트와 서버 간의 데이터 전송량과 타이밍을 제어하여 전체적인 네트워크 성능과 게임 경험을 개선할 수 있다.


     

    BP_BaseCharacter

     

     

     

    FPS 게임에 적합하도록 수치를 수정해준다.  

    • Net Update Frequency: 66.0
    • Min Net Update Frequency: 33.0

    아래 두 개의 값이 낮으면 게임 플레이 중 lag이 발생한다. ex. Player1의 동작이 Player2의 화면에서는 뚝뚝 끊겨서 보인다.

     

     

    BaseCharacter.cpp

    ABaseCharacter::ABaseCharacter()
    {
    	//...
    	NetUpdateFrequency = 66.0f;
    	MinNetUpdateFrequency = 33.0f;
    }

     

     


     

     

    DefaultEngine.ini  수정하기

     

    DefaultEngine.ini 맨 아래에 다음 코드 추가하기 

    [/Script/OnlineSubsystemUtils.IpNetDriver]
    NetServerMaxTickRate=60

    NetServerMaxTickRate은 서버가 클라이언트에게 보내는 업데이트 횟수(=number of updates)다.

    인터넷 속도가 충분히 빠르면 클라이언트는 해당 수치만큼 업데이트하고 인터넷이 느리면 해당 수치보다 업데이트 횟수가 낮게 나온다.  

     

     

    DefaultEngine.ini

    더보기
    [/Script/EngineSettings.GameMapsSettings]
    GameDefaultMap=/Game/BP/TestLevel.TestLevel
    EditorStartupMap=/Game/BP/TestLevel.TestLevel
    GlobalDefaultGameMode=/Game/BP/Character/BP_GameMode_Test.BP_GameMode_Test_C
    TransitionMap=/Game/Maps/TransitionMap.TransitionMap
    
    [/Script/IOSRuntimeSettings.IOSRuntimeSettings]
    MinimumiOSVersion=IOS_14
    
    [/Script/Engine.RendererSettings]
    r.Shadow.Virtual.Enable=1
    r.Mobile.EnableNoPrecomputedLightingCSMShader=1
    
    
    r.GenerateMeshDistanceFields=True
    
    r.DynamicGlobalIlluminationMethod=1
    
    r.ReflectionMethod=1
    
    [/Script/HardwareTargeting.HardwareTargetingSettings]
    TargetedHardwareClass=Desktop
    AppliedTargetedHardwareClass=Desktop
    DefaultGraphicsPerformance=Maximum
    AppliedDefaultGraphicsPerformance=Maximum
    
    [/Script/WindowsTargetPlatform.WindowsTargetSettings]
    DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
    
    [/Script/Engine.Engine]
    +ActiveGameNameRedirects=(OldGameName="TP_ThirdPerson",NewGameName="/Script/Multiplayer")
    +ActiveGameNameRedirects=(OldGameName="/Script/TP_ThirdPerson",NewGameName="/Script/Multiplayer")
    +ActiveClassRedirects=(OldClassName="TP_ThirdPersonGameMode",NewClassName="MultiplayerGameMode")
    +ActiveClassRedirects=(OldClassName="TP_ThirdPersonCharacter",NewClassName="MultiplayerCharacter")
    
    [/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings]
    bEnablePlugin=True
    bAllowNetworkConnection=True
    SecurityToken=0EE075DC4E9840DD7FB23B839AD4B854
    bIncludeInShipping=False
    bAllowExternalStartInShipping=False
    bCompileAFSProject=False
    bUseCompression=False
    bLogFiles=False
    bReportStats=False
    ConnectionType=USBOnly
    bUseManualIPAddress=False
    ManualIPAddress=
    
    [/Script/Engine.GameEngine]
    +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
    
    [OnlineSubsystem]
    DefaultPlatformService=Steam
    
    [OnlineSubsystemSteam]
    bEnabled=true
    SteamDevAppId=480
    bInitServerOnClient=true
    
    [/Script/OnlineSubsystemSteam.SteamNetDriver]
    NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"
    
    [/Script/OnlineSubsystemUtils.IpNetDriver]
    NetServerMaxTickRate=60