TickBudgetInMilliseconds

TickBudgetInMilliseconds

#Overview

name: TickBudgetInMilliseconds

The value of this variable can be defined or overridden in .ini config files. 2 .ini config files referencing this setting variable.

It is referenced in 9 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of TickBudgetInMilliseconds is to control the time allocation for the Epic Online Services (EOS) SDK’s tick function. This setting variable is used to manage the performance impact of EOS operations within the game engine.

TickBudgetInMilliseconds is primarily used by the EOS SDK Manager and related subsystems, including the Online Subsystem EOS and EOS Voice Chat plugin. These modules are part of the online services integration in Unreal Engine 5.

The value of this variable is typically set in the engine’s configuration files (GEngineIni) and can be accessed or modified through the EOS Settings system. It’s also initialized in various places within the EOS-related code.

This variable interacts with other EOS configuration options, particularly those related to platform initialization and management. It’s often used alongside other settings like RTCBackgroundMode, bEnableOverlay, and various platform-specific options.

Developers should be aware that:

  1. Setting TickBudgetInMilliseconds too low may limit EOS functionality.
  2. Setting it too high might impact overall game performance.
  3. The value is in milliseconds, so even small changes can have noticeable effects.

Best practices for using this variable include:

  1. Start with a conservative value (e.g., 1 ms) and adjust based on performance needs.
  2. Monitor the impact on both EOS functionality and overall game performance when changing this value.
  3. Consider different values for development/debug and release builds.
  4. Ensure the value is appropriate for the target platform and the game’s performance requirements.
  5. Document any changes to this value and the reasoning behind them for future reference.

#Setting Variables

#References In INI files

Location: <Workspace>/Projects/Lyra/Config/Custom/EOS/DefaultEngine.ini:21, section: [/Script/OnlineSubsystemEOS.EOSSettings]

Location: <Workspace>/Projects/Lyra/Config/Custom/SteamEOS/DefaultEngine.ini:26, section: [/Script/OnlineSubsystemEOS.EOSSettings]

#References in C++ code

#Callsites

This variable is referenced in the following C++ source code:

#Loc: <Workspace>/Engine/Plugins/Online/EOSShared/Source/EOSShared/Private/EOSSDKManager.cpp:376

Scope (from outer to inner):

file
function     const FEOSSDKPlatformConfig* FEOSSDKManager::GetPlatformConfig

Source code excerpt:

	GConfig->GetBool(*SectionName, TEXT("bWindowsEnableOverlayOpenGL"), PlatformConfig->bWindowsEnableOverlayOpenGL, GEngineIni);
	GConfig->GetBool(*SectionName, TEXT("bEnableRTC"), PlatformConfig->bEnableRTC, GEngineIni);
	GConfig->GetInt(*SectionName, TEXT("TickBudgetInMilliseconds"), PlatformConfig->TickBudgetInMilliseconds, GEngineIni);
	GConfig->GetArray(*SectionName, TEXT("OptionalConfig"), PlatformConfig->OptionalConfig, GEngineIni);

	UE_LOG(LogEOSSDK, Verbose, TEXT("Loaded platform config: %s"), *PlatformConfigName);
	return PlatformConfig;
}

#Loc: <Workspace>/Engine/Plugins/Online/EOSShared/Source/EOSShared/Private/EOSSDKManager.cpp:584

Scope (from outer to inner):

file
function     IEOSPlatformHandlePtr FEOSSDKManager::CreatePlatform

Source code excerpt:

	}

	PlatformOptions.TickBudgetInMilliseconds = PlatformConfig->TickBudgetInMilliseconds;
	PlatformOptions.TaskNetworkTimeoutSeconds = nullptr;

	EOS_Platform_RTCOptions PlatformRTCOptions = {};
	PlatformRTCOptions.ApiVersion = 2;
	UE_EOS_CHECK_API_MISMATCH(EOS_PLATFORM_RTCOPTIONS_API_LATEST, 2);
	PlatformRTCOptions.PlatformSpecificOptions = nullptr;

#Loc: <Workspace>/Engine/Plugins/Online/EOSShared/Source/EOSShared/Public/IEOSSDKManager.h:34

Scope: file

Source code excerpt:

	bool bWindowsEnableOverlayOpenGL = false;
	bool bEnableRTC = true;
	int32 TickBudgetInMilliseconds = 1;
	TArray<FString> OptionalConfig;
};

DECLARE_MULTICAST_DELEGATE_OneParam(FEOSSDKManagerOnPreInitializeSDK, EOS_InitializeOptions& Options);
DECLARE_MULTICAST_DELEGATE_TwoParams(FEOSSDKManagerOnDefaultPlatformConfigNameChanged, const FString& NewName, const FString& OldName);
DECLARE_MULTICAST_DELEGATE_TwoParams(FEOSSDKManagerOnPreCreateNamedPlatform, const FEOSSDKPlatformConfig& Config, EOS_Platform_Options& Options);

#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/EOSSettings.cpp:132

Scope (from outer to inner):

file
function     FEOSSettings::FEOSSettings

Source code excerpt:

	: SteamTokenType(TEXT("Session"))
	, RTCBackgroundMode(EOS_ERTCBackgroundMode::EOS_RTCBM_KeepRoomsAlive)
	, TickBudgetInMilliseconds(0)
	, TitleStorageReadChunkLength(0)
	, bEnableOverlay(false)
	, bEnableSocialOverlay(false)
	, bEnableEditorOverlay(false)
	, bPreferPersistentAuth(false)
	, bUseEAS(false)

#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/EOSSettings.cpp:181

Scope (from outer to inner):

file
function     const FEOSSettings& UEOSSettings::ManualGetSettings

Source code excerpt:

			LexFromString(CachedSettings->RTCBackgroundMode, *RTCBackgroundModeStr);
		}
		GConfig->GetInt(INI_SECTION, TEXT("TickBudgetInMilliseconds"), CachedSettings->TickBudgetInMilliseconds, GEngineIni);
		GConfig->GetInt(INI_SECTION, TEXT("TitleStorageReadChunkLength"), CachedSettings->TitleStorageReadChunkLength, GEngineIni);
		GConfig->GetBool(INI_SECTION, TEXT("bEnableOverlay"), CachedSettings->bEnableOverlay, GEngineIni);
		GConfig->GetBool(INI_SECTION, TEXT("bEnableSocialOverlay"), CachedSettings->bEnableSocialOverlay, GEngineIni);
		GConfig->GetBool(INI_SECTION, TEXT("bEnableEditorOverlay"), CachedSettings->bEnableEditorOverlay, GEngineIni);
		GConfig->GetBool(INI_SECTION, TEXT("bPreferPersistentAuth"), CachedSettings->bPreferPersistentAuth, GEngineIni);
		GConfig->GetBool(INI_SECTION, TEXT("bUseEAS"), CachedSettings->bUseEAS, GEngineIni);

#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/EOSSettings.cpp:213

Scope (from outer to inner):

file
function     FEOSSettings UEOSSettings::ToNative

Source code excerpt:

		LexFromString(Native.RTCBackgroundMode, *RTCBackgroundMode);
	}
	Native.TickBudgetInMilliseconds = TickBudgetInMilliseconds;
	Native.TitleStorageReadChunkLength = TitleStorageReadChunkLength;
	Native.bEnableOverlay = bEnableOverlay;
	Native.bEnableSocialOverlay = bEnableSocialOverlay;
	Native.bEnableEditorOverlay = bEnableEditorOverlay;
	Native.bPreferPersistentAuth = bPreferPersistentAuth;
	Native.bUseEAS = bUseEAS;

#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/EOSSettings.h:73

Scope: file

Source code excerpt:

	FString SteamTokenType;
	EOS_ERTCBackgroundMode RTCBackgroundMode;
	int32 TickBudgetInMilliseconds;
	int32 TitleStorageReadChunkLength;
	bool bEnableOverlay;
	bool bEnableSocialOverlay;
	bool bEnableEditorOverlay;
	bool bPreferPersistentAuth;
	bool bUseEAS;

#Loc: <Workspace>/Engine/Plugins/Online/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Public/EOSSettings.h:115

Scope (from outer to inner):

file
class        class UEOSSettings : public URuntimeOptionsBase

Source code excerpt:

	/** Used to throttle how much time EOS ticking can take */
	UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="EOS Settings")
	int32 TickBudgetInMilliseconds = 0;

	/** Set to true to enable the overlay (ecom features) */
	UPROPERTY(Config, EditAnywhere, BlueprintReadOnly, Category="EOS Settings")
	bool bEnableOverlay = false;

	/** Set to true to enable the social overlay (friends, invites, etc.) */

#Loc: <Workspace>/Engine/Plugins/Online/VoiceChat/EOSVoiceChat/Source/EOSVoiceChat/Private/EOSVoiceChat.cpp:147

Scope (from outer to inner):

file
function     void FEOSVoiceChat::Initialize

Source code excerpt:

					PlatformOptions.Flags = EOS_PF_DISABLE_OVERLAY;
					PlatformOptions.CacheDirectory = nullptr;
					PlatformOptions.TickBudgetInMilliseconds = 1;
					PlatformOptions.IntegratedPlatformOptionsContainerHandle = nullptr;
					PlatformOptions.TaskNetworkTimeoutSeconds = nullptr;
#if UE_EDITOR
					//PlatformCreateOptions.Flags |= EOS_PF_LOADING_IN_EDITOR;
#endif