Hints to properly package UE5 Lyra Client/Server

Using a source build, Lyra runs fine in the editor and launches the “mode choosing” level right away.

Trying to produce a packaged client ( so I can properly test some changes I’m making) has resulted in a hanging load sceen. What am I missing? I am familiar with UE4 ShooterGame but this has a lot more going on. I am almost positive I am just missing a checkbox or particular asset.

  • I only need the Elimination mode with its associated maps to be playable for now. What maps do I need to make sure are included in the packaging? I’ve included the default editor map along with the front end, plus the core Elimination map ( L_Expanse).

  • Do I need a transition map?

  • There is the ability to package as LyraGame in addition to the Client. What does this mean?

  • Anything else I could be missing?

Thanks!

1 Like

Bump. Totally stuck here, cannot figure out what it would run in-editor and not as a client. I should say it doesn’t matter if it’s standalone or in VS, the client is stuck on the loading screen. I’ve tried pretty much every default map, etc but cannot figure it out.

Resinstalling VS2022 seemed to do the trick.

Also encountering this. But I doubt re-installing VS will do much because I can see in the code that an experience is only loaded in LyraExperienceManagerComponent.cpp if it’s a server in ServerSetCurrentExperience. So from a client perspective, what can I do so that it reaches the main menu and doesn’t hang on the loading screen?

3 Likes

How reinstalling Studio answers all this questions?
Also how reinstalation helps the fact that code of experiance loading is marked as server?

#if WITH_SERVER_CODE
void ULyraExperienceManagerComponent::ServerSetCurrentExperience(FPrimaryAssetId ExperienceId)
{
	ULyraAssetManager& AssetManager = ULyraAssetManager::Get();
	FSoftObjectPath AssetPath = AssetManager.GetPrimaryAssetPath(ExperienceId);
	TSubclassOf<ULyraExperienceDefinition> AssetClass = Cast<UClass>(AssetPath.TryLoad());
	check(AssetClass);
	const ULyraExperienceDefinition* Experience = GetDefault<ULyraExperienceDefinition>(AssetClass);

	check(Experience != nullptr);
	check(CurrentExperience == nullptr);
	CurrentExperience = Experience;
	StartExperienceLoad();
}
#endif