[UE5] Net Update Frequency 수정하기

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
'⭐ Unreal Engine > UE Multiplayer FPS TPS + ListenServer' 카테고리의 다른 글
[UE5] 크로스헤어 Crosshair (0) | 2023.10.01 |
---|---|
[UE5] 무기 시스템 만들기(무기, 발사체 타입무기, 발사체) (0) | 2023.09.27 |
[UE5] 무기 줍기 - RPC 고려하기 (0) | 2023.09.21 |
[UE5] 플레이어 Role 머리 위에 띄우기 (0) | 2023.09.18 |
[UE] Multiplayer 11: Menu Subsystem 수정하기 (0) | 2023.07.17 |
댓글
이 글 공유하기
다른 글
-
[UE5] 크로스헤어 Crosshair
[UE5] 크로스헤어 Crosshair
2023.10.01 -
[UE5] 무기 시스템 만들기(무기, 발사체 타입무기, 발사체)
[UE5] 무기 시스템 만들기(무기, 발사체 타입무기, 발사체)
2023.09.27Projectile 방식의 무기와 Hit Scan 방식의 무기는 동작 원리에 따라 크게 차이가 있다. Projectile 방식의 무기는 발사체(Projectile)를 생성하고, 이 발사체가 일정 속도로 움직이며 목표물에 도달할 때까지 시간이 필요하다. Hit Scan 방식의 무기는 "즉시적인" 충돌 감지 메커니즘을 사용한다. 목차 Component 구조 만들기 CombatComponent CombatComponent.h더보기 CombatComponent.cpp더보기 Q. UFUNCTION(Server, Reliable)void ServerFire(const FVector_NetQuantize& TraceHitTarget); 와 같이 서버에 TraceHitTarget을 보내는 이유는?… -
[UE5] 무기 줍기 - RPC 고려하기
[UE5] 무기 줍기 - RPC 고려하기
2023.09.21목차 무기 줍기 BaseCharacter BaseCharacter.h더보기#pragma once#include "CoreMinimal.h"#include "GameFramework/Character.h"#include "BaseCharacter.generated.h"UCLASS()class MULTIPLAYER_API ABaseCharacter : public ACharacter{ GENERATED_BODY()public: ABaseCharacter(); virtual void Tick(float DeltaTime) override; virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override… -
[UE5] 플레이어 Role 머리 위에 띄우기
[UE5] 플레이어 Role 머리 위에 띄우기
2023.09.18
댓글을 사용할 수 없습니다.