How can i assign an actor spawned from server to a client variable?

Hey all,
i have some some very basic knowledge of UE4 multiplayer, i’m trying to spawn an AI controlled character from my player character and assign it to a pointer variable, i’m spawning it with a RPC function from BeginPlay like this

void AEVPlayerCharacter::BeginPlay()
{
	Super::BeginPlay();

	...other stuff...
	

       // Prevent multiple spawn
	if(IsLocallyControlled())
		SpawnAICharacter();	
}

and here the SpawAICharacter function (and relative RPC).

.h

class AEVAICharacter* AIPlayer;

UPROPERTY(EditDefaultsOnly, meta = (AllowPrivateAccess = "true"))
class TSubclassOf<AEVAICharacter> AIPlayerClass;

void SpawnAICharacter();

UFUNCTION(Server, Reliable, WithValidation)
void ServerSpawnAICharacter();

.cpp

void AEVPlayerCharacter::SpawnAICharacter()
{
	ServerSpawnAICharacter();
}

void AEVPlayerCharacter::ServerSpawnAICharacter_Implementation()
{
	FActorSpawnParameters SpawnParams;
	SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
	FTransform Tr = GetActorTransform();
	AIPlayer = Cast<AEVAICharacter>(GetWorld()->SpawnActor(AIPlayerClass, &Tr, SpawnParams));
	AIPlayer->MovementCompleteDelegate.AddDynamic(this, &AEVPlayerCharacter::OnMovementCompleteCallback);
}

bool AEVPlayerCharacter::ServerSpawnAICharacter_Validate()
{
	return true;
}

but the variable AIPlayer will never be set on client, any suggestion?

Shame on me, i had to replicate the variable, i did it previously but for some reasons didn’t worked, now i tried again and with a clean rebuild all work fine.

Solution:

.h

UPROPERTY(Replicated)
class AEVAICharacter* AIPlayer;

.cpp

void AEVPlayerCharacter::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
	Super::GetLifetimeReplicatedProps(OutLifetimeProps);

	DOREPLIFETIME(AEVPlayerCharacter, AIPlayer);
}