TutorialPath

TutorialPath

#Overview

name: TutorialPath

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

It is referenced in 3 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of TutorialPath is to store the path or location of tutorial content within the Unreal Engine 5 ecosystem. This variable is primarily used for guiding developers and users through various aspects of the engine or project-specific tutorials.

The TutorialPath variable is utilized by the following Unreal Engine subsystems and modules:

  1. IntroTutorials plugin (GuidedTutorials)
  2. TurnkeySupport module
  3. Core module’s DataDrivenPlatformInfoRegistry

The value of this variable is typically set in different contexts:

  1. In the IntroTutorials plugin, it’s derived from the UEditorTutorial asset’s outer package name.
  2. In the TurnkeySupport module, it’s obtained from platform-specific checks.
  3. In the DataDrivenPlatformInfoRegistry, it’s loaded from an INI file configuration.

The TutorialPath variable interacts with other variables and systems:

  1. It’s used to generate analytics event names in the IntroTutorials plugin.
  2. It’s part of the platform requirements check in the TurnkeySupport module.
  3. It’s stored as part of the FDataDrivenPlatformInfo structure in the Core module.

Developers should be aware of the following when using this variable:

  1. The path format may vary depending on the context (asset path, URL, or file system path).
  2. It may be platform-specific, especially when used in the TurnkeySupport and DataDrivenPlatformInfoRegistry contexts.
  3. The variable might be empty or undefined in some cases, so proper null checks should be implemented.

Best practices when using this variable include:

  1. Ensure the path is valid and exists before attempting to load or display tutorial content.
  2. Use platform-agnostic path handling functions when manipulating the TutorialPath.
  3. Consider localization requirements if the tutorials are available in multiple languages.
  4. Implement proper error handling and fallback mechanisms if the tutorial content is not found or accessible.
  5. Keep the tutorial content up-to-date with the current version of the engine or project to maintain relevance.

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/Android/DataDrivenPlatformInfo.ini:17, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/Linux/DataDrivenPlatformInfo.ini:18, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/LinuxArm64/DataDrivenPlatformInfo.ini:21, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/Mac/DataDrivenPlatformInfo.ini:18, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/TVOS/DataDrivenPlatformInfo.ini:11, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Config/Windows/DataDrivenPlatformInfo.ini:24, section: [DataDrivenPlatformInfo]

Location: <Workspace>/Engine/Platforms/VisionOS/Config/DataDrivenPlatformInfo.ini:11, section: [DataDrivenPlatformInfo]

#References in C++ code

#Callsites

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

#Loc: <Workspace>/Engine/Plugins/Editor/GuidedTutorials/Source/IntroTutorials/Private/IntroTutorials.cpp:56

Scope (from outer to inner):

file
function     FString FIntroTutorials::AnalyticsEventNameFromTutorial

Source code excerpt:

FString FIntroTutorials::AnalyticsEventNameFromTutorial(UEditorTutorial* Tutorial)
{
	FString TutorialPath = Tutorial->GetOutermost()->GetFName().ToString();

	// strip off everything but the asset name
	FString RightStr;
	TutorialPath.Split( TEXT("/"), NULL, &RightStr, ESearchCase::IgnoreCase, ESearchDir::FromEnd );

	return RightStr;
}

TSharedRef<FExtender> FIntroTutorials::AddSummonBlueprintTutorialsMenuExtender(const TSharedRef<FUICommandList> CommandList, const TArray<UObject*> EditingObjects) const
{

#Loc: <Workspace>/Engine/Source/Editor/TurnkeySupport/Private/TurnkeySupportModule.cpp:859

Scope (from outer to inner):

file
function     static void ShowInstallationHelp

Source code excerpt:

// 	EBuildConfiguration Configuration;
// 	bool bRequiresAssetNativization;
// 	FString TutorialPath, DocumentationPath;
// 	FText LogMessage;
// 
// 	Platform->CheckRequirements(bProjectHasCode, Configuration, bRequiresAssetNativization, TutorialPath, DocumentationPath, LogMessage);

	FTurnkeyEditorSupport::ShowInstallationHelp(IniPlatformName, FDataDrivenPlatformInfoRegistry::GetPlatformInfo(IniPlatformName).SDKTutorial);
}

static void TurnkeyInstallSdk(FString IniPlatformName, bool bPreferFull, bool bForceInstall, FString DeviceId)
{

#Loc: <Workspace>/Engine/Source/Runtime/Core/Private/Misc/DataDrivenPlatformInfoRegistry.cpp:366

Scope (from outer to inner):

file
function     static void LoadDDPIIniSettings

Source code excerpt:


	DDPIGetString(IniFile, TEXT("AutoSDKPath"), Info.AutoSDKPath);
	DDPIGetString(IniFile, TEXT("TutorialPath"), Info.SDKTutorial);
	DDPIGetName(IniFile, TEXT("PlatformGroupName"), Info.PlatformGroupName);
	DDPIGetName(IniFile, TEXT("PlatformSubMenu"), Info.PlatformSubMenu);


	DDPIGetString(IniFile, TEXT("NormalIconPath"), Info.IconPaths.NormalPath);
	DDPIGetString(IniFile, TEXT("LargeIconPath"), Info.IconPaths.LargePath);