Physics Mover 駆動のプレイヤーによるマルチプレイでサーバークラッシュ

クラッシュが発生する数秒前にプレイヤーの接続が切れてキックしているため、何らかの発生要因になっている可能性はございます。

<br/>

参加しているプレイヤー(クライアント)は常時ロコモーションを行っておりました。

不意にクライアント同期が行われなくなり、ほどなく切断され、ゲームデフォルトのマップに遷移した形です。

投稿を確認したところ、いくつかの記載内容が紛失しているようでしたので、こちらで補足させていただきます。

エンジンバージョンは UE 5.5 で、GitHub の Oculus Fork 版 (5.5.3-0+oculus-5.5.3-release-1.108.0-v76.0) です。

Physics Mover でマルチプレイを行うため、Tick Async Physics を有効にしております。

その他の物理まわりのプロジェクト設定はデフォルトから特に変更しておりません。

最新版 UE 5.6 の Physics Mover の修正で、レースコンディション関連のものをいくつか確認しておりますが、こちらもその類ではないかと疑っております。

既に UE 5.6 で修正されているようでしたら、その修正箇所をご教示いただけると幸いです。

お忙しい中恐れ入りますが、ご確認よろしくお願いいたします。

先ほど、UE 5.6 の変更箇所を確認していたところ、該当箇所の修正を確認しました。

`bool FCharacterGroundConstraintProxy::PullFromPhysicsState(const FDirtyCharacterGroundConstraintData& Buffer, const int32 SolverSyncTimestamp)
{
if (Constraint_GT != nullptr && Constraint_GT->IsValid())
{
Constraint_GT->SolverAppliedForce = Buffer.Force;
Constraint_GT->SolverAppliedTorque = Buffer.Torque;

if (Buffer.bDataChanged)
{
Constraint_GT->ConstraintData.Modify(false, Constraint_GT->DirtyFlags, Constraint_GT->Proxy, [&Buffer](FCharacterGroundConstraintDynamicData& Data) {
Data = Buffer.Data;
});
}

if (Buffer.bSettingsChanged)
{
Constraint_GT->ConstraintSettings.Modify(false, Constraint_GT->DirtyFlags, Constraint_GT->Proxy, [&Buffer](FCharacterGroundConstraintSettings& Settings) {
Settings = Buffer.Settings;
});
}

// Temporarily disabling the write back of the ground particle until we can fix it crashing with an invalid proxy

//if (Buffer.bGroundParticleChanged)
//{
// if (Buffer.GroundParticle && (Buffer.GroundParticle->ParticleIdx != INDEX_NONE))
// {
// FSingleParticlePhysicsProxy* NewGroundProxy = (FSingleParticlePhysicsProxy*)(Buffer.GroundParticle->PhysicsProxy());
// Constraint_GT->GroundProxy.Modify(false, Constraint_GT->DirtyFlags, Constraint_GT->Proxy, [NewGroundProxy](FParticleProxyProperty& Data)
// {
// Data.ParticleProxy = NewGroundProxy;
// });
// }
// else
// {
// Constraint_GT->GroundProxy.Modify(false, Constraint_GT->DirtyFlags, Constraint_GT->Proxy, (FParticleProxyProperty& Data)
// {
// Data.ParticleProxy = nullptr;
// });
// }
//}
}

return true;
}`本家 UE 5.6 でも一時的にコメントアウトで対応しているとのことで、プロジェクトで使用している UE 5.5 にも同様の対応を行ったところ、クラッシュが発生しなくなりました。

より良い対応策があれば引き続きご教示いただけると幸いです。

同様のコールスタックを持ったクラッシュが弊社タイトルでも発生しており内部向けにバグ登録がありました。

ご指摘の修正部分が含まれている修正CLは38631429としてエンジンにマージされております。