Getting curve value from animation sequence return zero

It seems that dedicated server can’t get curve value from animation sequence, always return 0. I have wrote a test project and shared it below.
This project calls “GetCurveValue” from animation and modifies the material color of the character.If you start it as “Play as Standalone” mode, the character will flash according the value read from curve data. But if you start as “Play as Client” mode, it will fail.

Download Project: Dropbox - CurveTest.rar - Simplify your life

Hi! I have the same problem when using custom anim curves. My animBP is always returning 0. Have you already find a solution?

I have solved this problem. The specifics of the tick behaviour depend on this setting.

The default value is “Always Tick Pose”, which means some functionaity will continue to work(like notifies), but other functionality will not, such as the generation of the pose(the generation of curve data which is sampled when the bone transforms are sampled).
“Always Tick Pose and Refresh Bones” value would always tick and evaluate the animinstance.

Sadly this did not work for me. I even tried matching all settings against ALS V4. I can see the debug curves as part of a debug toggle pose watch. So I know that the curves are evaluated at some level but the curves still return 0. And yes I have this as base values:

	GetMesh()->bUpdateJointsFromAnimation = true;
	GetMesh()->SetAllowAnimCurveEvaluation(false);
	GetMesh()->VisibilityBasedAnimTickOption = EVisibilityBasedAnimTickOption::AlwaysTickPoseAndRefreshBones;```

I have tried any number of combinations with these options, in conjunction with switching them on the BP directly too.  Still no luck  Anyone have any other ideas?

In the animation instance when I run the following:

TArray<FName> Curves;
	GetAllCurveNames(Curves);
	for (FName CurvName : Curves)
	{
		GEngine->AddOnScreenDebugMessage(-1, .1f, FColor::Red, CurvName.ToString());
	}

I can see that all of the curves are there also, but every single one returns 0.

This ended up being the correct answer for me… and the order was important (slightly ammended from previous answer)

GetMesh()->bEnableUpdateRateOptimizations = false;
	GetMesh()->bUpdateJointsFromAnimation = true;
	GetMesh()->VisibilityBasedAnimTickOption = EVisibilityBasedAnimTickOption::AlwaysTickPoseAndRefreshBones;
	GetMesh()->SetAllowAnimCurveEvaluation(true);	

When moving SetAllowAnimCurveEvaluation(true) to the end (after visibility / update joins and enable rate optimization) things started working. The interesting part here is that I even ran a manual reset at some point which I thought would at least do a re-evaluation of properties but it did not. Hopefully this helps some other folks that get stuck on it.

i am a bit late to the party but hopefully this will solve the issue for most people as it did for me. Basically the skeleton you are using for your Anim Bp, and the one you character is using need to be the exact same. For me the problem was the i was using a character with the UE4 mannequin skeleton, and animations with their own skeleton(which had all the bones of UE4 mannequin so was compatible with my character). So make sure that your Character is using the skeleton with the exact same directory as your animations. I repeat it needs to be the exact same and have the same directory.

I met the same issue, and final found the solution.
In the animation that I set curve, I have set the additive type → Local Space → Seleted animation frame, and I choose the first frame of the same animation.
After I changed the animation frame to another animation, the curve value become 1, instead of 0 before. I guess if I choose the same animation, the curve value may offset each other.
Im poor in English, I dont know if I make it clear. Hope this can help you!