How to set different Pawn Data Assets per team for Lyra in the Experience Definition?

So I’m trying to tweak Lyra’s Elimination Experience so that I can have different Pawn Data Assets for each team (2), but I’m struggling.

The idea is that I want there to be 2 separate teams - one team essentially using the basic Third Person Shooter setup (that is already in the game), whilst the second team will have different abilities and pawn data that can be assigned in the lobby. The second team will be quite different too - they won’t use weapons, will be mostly ability based, and will have multiple different Pawn Classes to choose from (i.e. ghost, spider, etc.), and therefore different skeletons and animation blueprints.

In the Elimination Experience Definition (B_ShooterGame_Elimination), you can only have 1 Default Pawn Data asset (currently HeroData_ShooterGame), and within that pawn data asset you can only have one pawn class (currently B_Hero_ShooterMannequin). Most other modules within the Lyra Data Assets can have multiple inputs, but these seem somewhat restricted.

I understand the B_PickRandomCharacter Component adds a character part to the cosmetic system and changes the displayed mannequin, however as I’m using different skeletons, and some of them will be too different to retarget the Lyra animations, I don’t believe this will work.

Does anyone have any ideas of where to start trying to set this up? Thanks very much in advance

Hey there! Did you find a solution for this? I’m kinda having the same doubts as you did apparently. I would greatly apreciate any directions you might give me, thanks!

1 Like

While this doesn’t seem possible in Lyra, as pawn data is set by experience on playerstate and then initialized on pawnextensioncomp in GameMode spawn method, I did this:

  1. Moved PawnData from PlayerState to Character:
UPROPERTY(ReplicatedUsing = OnRep_PawnData, EditAnywhere, BlueprintReadOnly,
		meta=(AllowPrivateAccess="true", ExposeOnSpawn="true"))
	const UECRPawnData* PawnData;
  1. Initialized on pawnextcomp not from gamemode, but from Character::PossessedBy:
void AECRCharacter::PossessedBy(AController* NewController)
{
	Super::PossessedBy(NewController);

	PawnExtComponent->HandleControllerChanged();

	UE_LOG(LogTemp, Warning, TEXT("Pawn data is %s"), *(GetNameSafe(PawnData)));

	if (GetWorld()->GetNetMode() < NM_Client)
	{
		UE_LOG(LogTemp, Warning, TEXT("Initting pawn data as server"));
		PawnExtComponent->SetPawnData(PawnData);
		InitPawnData();
	}
}

More details: Use custom classes via config, moved pawndata from PlayerState to ECR… · JediKnightChan/EternalCrusadeResurrection@d3c74be · GitHub
UPD: Fix for crash on listen servers: Fix: on listen servers init pawn data now doesn't crash · JediKnightChan/EternalCrusadeResurrection@2d1e5e6 · GitHub

1 Like

Is this still the only and best option, Im not a c++ programmer and this stuff
is confusing. But I Am advanced in Blueprints. I for the life of me do not know why Epic released such an amazing project like Lyra and made the entry bar too high for most to even use it.
I mean there should at a bare minimum be options to set teams and an Option to have different characters that do not rely on the player character BP like requested above. I also just want the bots to remain as they are, and use a custom BP character THAT I CREATED OUTSIDE OF LYRA

Just a simple option to add other bot classes to the experience definition would be huge