help

help

#Overview

name: help

This variable is created as a Console Variable (cvar).

It is referenced in 19 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of “help” is to provide assistance and information to users or developers about available commands, options, or functionalities within the Unreal Engine 5 environment. It serves as a built-in documentation and guidance system accessible through various interfaces.

This setting variable is utilized across multiple Unreal Engine subsystems, plugins, and modules, including:

  1. Core Engine functionality
  2. Console command system
  3. Build Patch Tool
  4. Plastic Source Control plugin
  5. MainFrame editor module
  6. Automation tools
  7. UnrealPackageTool
  8. UnrealTraceServer

The value of this variable is typically set when a user or system requests help, often through console commands, command-line arguments, or UI interactions.

Other variables that interact with “help” include various command-line switches and options specific to different tools and modules.

Developers should be aware that:

  1. The “help” functionality is implemented differently across various tools and modules.
  2. It’s often used as a default action when no specific command is provided.
  3. In some cases, it’s tied to command-line parsing and can affect the execution flow of tools.

Best practices when using this variable:

  1. Ensure comprehensive and up-to-date help documentation for all commands and tools.
  2. Implement consistent help formatting across different modules for a unified user experience.
  3. Use the help system to provide context-sensitive information based on the current state or module.
  4. Consider implementing different levels of help (e.g., basic and advanced) for different user types.
  5. Regularly review and update help content to reflect changes in functionality or new features.

#References in C++ code

#Callsites

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

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/UnrealEngine.cpp:5541

Scope: file

Source code excerpt:

}
static FAutoConsoleCommandWithWorld GConsoleCommandHelp(
	TEXT("help"),
	TEXT("Outputs some helptext to the console and the log"),
	FConsoleCommandWithWorldDelegate::CreateStatic(DumpHelp)
);

bool UEngine::HandleDumpConsoleCommandsCommand( const TCHAR* Cmd, FOutputDevice& Ar, UWorld* InWorld )
{

#Loc: <Workspace>/Engine/Plugins/CmdLinkServer/Source/CmdLinkServer/Private/CmdLinkServer.cpp:296

Scope (from outer to inner):

file
function     bool FCmdLinkServerModule::Execute

Source code excerpt:

	{
		// if a command wasn't sent, assume they need help
		Command = TEXT("help");
	}

	// try running command on every command executor until one is successful (this allows us to run both engine and python commands)
	TArray<IConsoleCommandExecutor*> CommandExecutors = IModularFeatures::Get().GetModularFeatureImplementations<IConsoleCommandExecutor>(TEXT("ConsoleCommandExecutor"));
	for (IConsoleCommandExecutor* CommandExecutor : CommandExecutors)
	{

#Loc: <Workspace>/Engine/Plugins/Developer/PlasticSourceControl/Source/PlasticSourceControl/Private/PlasticSourceControlConsole.cpp:29

Scope (from outer to inner):

file
function     void FPlasticSourceControlConsole::ExecutePlasticConsoleCommand

Source code excerpt:

	if (a_args.Num() < 1)
	{
		ExecutePlasticConsoleCommand(TArray<FString>({TEXT("help")}));
		return;
	}

	FString Results;
	FString Errors;
	const FString Command = a_args[0];

#Loc: <Workspace>/Engine/Source/Editor/MainFrame/Private/Frame/MainFrameActions.cpp:677

Scope (from outer to inner):

file
function     void FMainFrameActionCallbacks::BrowseCVars

Source code excerpt:

void FMainFrameActionCallbacks::BrowseCVars()
{
	GEditor->Exec(GEditor->GetEditorWorldContext().World(), TEXT("help"));
}

void FMainFrameActionCallbacks::VisitCommunityHome()
{
	FString URL;
	if (FUnrealEdMisc::Get().GetURL(TEXT("CommunityHomeURL"), URL))

#Loc: <Workspace>/Engine/Source/Programs/BuildPatchTool/Private/ToolModes/AutomationMode.cpp:131

Scope (from outer to inner):

file
class        class FAutomationToolMode : public IToolMode
function     bool ProcessCommandline

Source code excerpt:

		FCommandLine::Parse(FCommandLine::Get(), Tokens, Switches);

		bHelp = ParseOption(TEXT("help"), Switches);
		if (bHelp)
		{
			return true;
		}
		if (!PARSE_SWITCH(TestList) || TestList.Contains(TEXT(";")))
		{

#Loc: <Workspace>/Engine/Source/Programs/BuildPatchTool/Private/ToolModes/ChunkDeltaOptimiseMode.cpp:70

Scope (from outer to inner):

file
class        class FChunkDeltaOptimiseMode : public IToolMode
function     bool ProcessCommandline

Source code excerpt:

		FCommandLine::Parse(FCommandLine::Get(), Tokens, Switches);

		bHelp = ParseOption(TEXT("help"), Switches);
		if (bHelp)
		{
			return true;
		}

		// Get all required parameters.

#Loc: <Workspace>/Engine/Source/Programs/BuildPatchTool/Private/ToolModes/CompactifyMode.cpp:67

Scope (from outer to inner):

file
class        class FCompactifyToolMode : public IToolMode
function     bool ProcessCommandline

Source code excerpt:

		FCommandLine::Parse(FCommandLine::Get(), Tokens, Switches);

		bHelp = ParseOption(TEXT("help"), Switches);
		if (bHelp)
		{
			return true;
		}

		// Get all required parameters

#Loc: <Workspace>/Engine/Source/Programs/BuildPatchTool/Private/ToolModes/DiffManifestMode.cpp:90

Scope (from outer to inner):

file
class        class FDiffManifestToolMode : public IToolMode
function     bool ProcessCommandLine

Source code excerpt:

		FCommandLine::Parse(FCommandLine::Get(), Tokens, Switches);

		bHelp = ParseOption(TEXT("help"), Switches);
		if (bHelp)
		{
			return true;
		}

		// Get all required parameters.

#Loc: <Workspace>/Engine/Source/Programs/BuildPatchTool/Private/ToolModes/EnumerationMode.cpp:69

Scope (from outer to inner):

file
class        class FEnumerationToolMode : public IToolMode
function     bool ProcessCommandline

Source code excerpt:

		FCommandLine::Parse(FCommandLine::Get(), Tokens, Switches);

		bHelp = ParseOption(TEXT("help"), Switches);
		if (bHelp)
		{
			return true;
		}

		// Check for deprecated ManifestFile param.

#Loc: <Workspace>/Engine/Source/Programs/BuildPatchTool/Private/ToolModes/MergeManifestMode.cpp:61

Scope (from outer to inner):

file
class        class FMergeManifestToolMode : public IToolMode
function     bool ProcessCommandline

Source code excerpt:

		FCommandLine::Parse(FCommandLine::Get(), Tokens, Switches);

		bHelp = ParseOption(TEXT("help"), Switches);
		if (bHelp)
		{
			return true;
		}

		// Get all required parameters

#Loc: <Workspace>/Engine/Source/Programs/BuildPatchTool/Private/ToolModes/PackageChunksMode.cpp:100

Scope (from outer to inner):

file
class        class FPackageChunksToolMode : public IToolMode
function     bool ProcessCommandline

Source code excerpt:

		FCommandLine::Parse(FCommandLine::Get(), Tokens, Switches);

		bHelp = ParseOption(TEXT("help"), Switches);
		if (bHelp)
		{
			return true;
		}

		// Grab the FeatureLevel. This is required param but safe to default, we can change this to a warning after first release, and then an error later, as part of a friendly roll out.

#Loc: <Workspace>/Engine/Source/Programs/BuildPatchTool/Private/ToolModes/PatchGenerationMode.cpp:242

Scope (from outer to inner):

file
class        class FPatchGenerationToolMode : public IToolMode
function     bool ProcessCommandline

Source code excerpt:

		FCommandLine::Parse(FCommandLine::Get(), Tokens, Switches);

		bHelp = ParseOption(TEXT("help"), Switches);
		if (bHelp)
		{
			return true;
		}

		// Grab the FeatureLevel. This is required param but safe to default, we can change this to a warning after first release, and then an error later, as part of a friendly roll out.

#Loc: <Workspace>/Engine/Source/Programs/BuildPatchTool/Private/ToolModes/VerifyChunksMode.cpp:58

Scope (from outer to inner):

file
class        class FVerifyChunksToolMode : public IToolMode
function     bool ProcessCommandline

Source code excerpt:

		FCommandLine::Parse(FCommandLine::Get(), Tokens, Switches);

		bHelp = ParseOption(TEXT("help"), Switches);
		if (bHelp)
		{
			return true;
		}

		// Get all required parameters.

#Loc: <Workspace>/Engine/Source/Programs/UnrealPackageTool/UnrealPackageTool.cpp:1263

Scope (from outer to inner):

file
function     INT32_MAIN_INT32_ARGC_TCHAR_ARGV

Source code excerpt:

			if (App.get_subcommands().size() == 0)
			{
				Out->Logf(TEXT("%s"), UTF8_TO_TCHAR(App.help().c_str()));
			}
		}
	}
    catch (CLI::CallForAllHelp& e) 
	{
		Out->Logf(TEXT("%s"), UTF8_TO_TCHAR(App.help("", CLI::AppFormatMode::All).c_str()));
		Ret = e.get_exit_code();	
    }
	catch (CLI::CallForHelp& e)
	{
		Out->Logf(TEXT("%s"), UTF8_TO_TCHAR(App.help().c_str()));
		Ret = e.get_exit_code();	
	}
	catch (CLI::Error& e)
	{
		Out->Logf(TEXT("%s"), UTF8_TO_TCHAR(e.what()));
		Ret = e.get_exit_code();

#Loc: <Workspace>/Engine/Source/Programs/UnrealTraceServer/src/Main.cpp:264

Scope (from outer to inner):

file
function     void PrintHelp

Source code excerpt:

		if (!CurrentCommand)
		{
			HelpText = Options.help({"dummy"});
		}
		else
		{
			std::vector<std::string> HelpGroups;
			for (auto Group : CurrentCommand->HelpGroups)
			{
				HelpGroups.push_back(Group);
			}
			HelpText = Options.help(HelpGroups);
		}

		fputs(HelpText.c_str(), stdout);
	}

#Loc: <Workspace>/Engine/Source/Programs/UnrealTraceServer/thirdparty/cxxopts/src/example.cpp:79

Scope (from outer to inner):

file
function     void parse

Source code excerpt:

    if (result.count("help"))
    {
      std::cout << options.help({"", "Group"}) << std::endl;
      exit(0);
    }

    if (apple)
    {
      std::cout << "Saw option ‘a’ " << result.count("a") << " times " <<

#Loc: <Workspace>/Engine/Source/Programs/UnrealTraceServer/thirdparty/cxxopts/test/options.cpp:743

Scope: file

Source code excerpt:

  });

  cxxopts::Option help{"h,help", "Help"};

  options.add_options("TEST_GROUP", {
    {"t, test", "test option"},
    help
  });

  Argv argv({
      "test",
      "--address",
      "10.0.0.1",

#Loc: <Workspace>/Engine/Source/Programs/Unsync/Private/UnsyncMain.cpp:398

Scope (from outer to inner):

file
function     UNSYNC_THIRD_PARTY_INCLUDES_END namespace unsync { static FPath GExePath; int InnerMain
function     int InnerMain

Source code excerpt:

	if (Cli.get_subcommands().size() == 0)
	{
		wprintf(L"%hs", Cli.help().c_str());
	}

	FTimingLogger TimingLogger("Total time", ELogLevel::Info);

	// Configure default output mehtod based on subcommand.
	// In machine-readable mode, all verbose logging is directed to stderr.

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/UnrealEngine.cpp:5278

Scope (from outer to inner):

file
function     bool UEngine::HandleStatCommand

Source code excerpt:

{
#if STATS
	if (FParse::Command(&Cmd, TEXT("help")))
	{
		const TSet<FName>& StatGroupNames = FStatGroupGameThreadNotifier::Get().StatGroupNames;
		TArray<FString> StatNames;
		for (const FName& StatName : StatGroupNames)
		{
			FString StatNameStr = StatName.ToString();