Hello everyone,
I am trying to create a new stand-alone program that can edit uasset
files. In particular, those uasset
files that stores only UDataAsset
.
The purpose of the program is to enable editing such uasset
files without launching the Editor.
I start by copying the BlankProgram
project and add Engine
to its PrivateDependencyModuleNames
, this leads to more and more dependencies to compile the program, and the Build.cs
file finally becomes:
public DataAssetEditor(ReadOnlyTargetRules Target) : base(Target)
{
PublicIncludePaths.Add("Runtime/Launch/Public");
PrivateIncludePaths.Add("Runtime/Launch/Private"); // For LaunchEngineLoop.cpp include
PrivateDependencyModuleNames.AddRange(
new string[] {
"AutomationController",
"AutomationWorker",
"Core",
"CoreUObject",
"DerivedDataCache",
"Engine",
"HeadMountedDisplay",
"InstallBundleManager",
"MediaUtils",
"MoviePlayer",
"MoviePlayerProxy",
"PreLoadScreen",
"ProfilerService",
"Projects",
"SessionServices",
"SlateNullRenderer",
"SlateRHIRenderer",
"TaskGraph",
}
);
}
The main function is the same as that of the BlankProgram
project:
INT32_MAIN_INT32_ARGC_TCHAR_ARGV()
{
GEngineLoop.PreInit(ArgC, ArgV);
UE_LOG(LogDataAssetEditor, Display, TEXT("Hello World"));
FEngineLoop::AppExit();
return 0;
}
However, I can not launch the program properly. It triggers a assert and then the program complains:
Game files required to initialize the global shader library are missing from:
Engine/Programs/DataAssetEditor/Content
Please makesure the game is installed correctly.
To solve this problem I create a symbolic link to the Content
directory at the described directory, but this does not solve the problem.
I am so confused. There is no documentation or tutorial about how to create a stand-alone program that depends on the Engine
module. I need the Engine
module because I need the types defined by it, such as UDataAsset
and UAnimMontage
. I also want to utilize functions such as LoadPackage
to load uasset
files. However, I do not need any other modules since I am just trying to create a console program, but compiling with the Engine
module inevitably requires the other dependencies that make things more complicated.
I have tried use ReplicationSystemTest
as another starting point and template, but that does not lead to success neither.
Do I have to depends on the Engine
module to achieve my purpose?
Hope I can get some help here.