エディタ上でマルチプレイをしていると頻繁にエディタがクラッシュします。
何度プレイしても発生する時もあれば、発生しない時もあり、再現性は悪いですが、かなりの頻度で起こります。
発生のタイミングもつかめていません。
原因がわからなかったので、VisualStudioから起動してみたところ、
SWidget::~SWidget()
{
if (FSlateApplicationBase::IsInitialized())
{
for (const auto& ActiveTimerHandle : ActiveTimers)
{
FSlateApplicationBase::Get().UnRegisterActiveTimer(ActiveTimerHandle);
}
}
} ←
の矢印の部分でブレークが発生しました。
ひととおり変数の値を確認してみましたが、ActiveTimers(型はTArray < TSharedRef < FActiveTimerHandle > > )の中のDataがNULLになっており、そこが怪しいのではと考えています。
原因が不明なので、何の情報をお伝えすれば良いのかわからないですが、どなたか解決方法を知っている方はいますか?
ブレークが発生したときにエディタのアウトライナ上には無名のアクタがあります。もしかしたら、アクタの生成や破棄のタイミングで発生しているのかと思い、確認してみましたが、
プレイするたびに、かなりの頻度でスポーンに失敗しているのか、無名のアクタが現れます。
アクタのスポーンやデストロイ時に何か対策処理が必要なのでしょうか。
nullponull
(nullponull)
3
パッケージした状態で試されたほうが良いですよ。
PIEでは推奨されていなかったはずです。
alwei
(alwei)
4
私もPIE上でマルチプレイヤーゲームを何度か作っていますが、そこまで酷いクラッシュに遭遇したことはありません。
お手数かもしれませんが、再現方法を載せていただくか、確実に症状の発生するプロジェクトをどこかにアップロードしてもらえれば対処方法がわかるかもしれません。
DebugGameでパッケージ化してみましたが、パッケージ化した状態でも同様の症状のようなフリーズを確認しました。
ネットワークマルチプレイのときのみの症状のようです。マルチプレイはローカルネットワーク上の有線LANでコマンドのIP指定で行っています。
私自身パッケージ化した後のデバッグについてまだ未経験なので、デバッグ方法について模索中ですが、ご存知でしたら参考に教えて頂けないでしょうか。
alwei
(alwei)
6
スポーンも条件によっては失敗します。IsValidなどを使ってアクターの正当性チェックしておく必要があります。
特にC++を使っている場合には無効状態なアクターにアクセスするだけでクラッシュします。ポインターの場合にはnullチェックが必要です。
原因が独自に作成したプラグインを適用することで起こる症状であることがわかりましたが、依然として修繕方法がわかりません。
数分程度プレイして頂くか、プレイと停止を2、3度行うと症状が現れます。
別のQuestionとしてPostしましたので、そちらの方をご参照してください。ソースコードとプラグインを公開しています。
https://answers.unrealengine.com/questions/364603/自作したフラクインかネットワークマルチフレイ時のみにクラッシュする.html
独自に作成したプラグインを適用・使用時にネットワークマルチプレイ上で発生する症状であることを特定できましたが、依然として修繕方法がわかっていません。
別のQuestionとしてPostしました。ソースコードとプラグインをこちらからgithub上に公開しています。ご参照ください。
https://answers.unrealengine.com/questions/364603/自作したフラクインかネットワークマルチフレイ時のみにクラッシュする.html
独自に作成したプラグインを適用・使用時に症状が発生することが特定できましたが、依然として修繕方法がわかっていません。
別のQuestionとしてPostいたしました。こちらにソースコードとプラグインを公開しています。ご参照ください。
https://answers.unrealengine.com/questions/364603/自作したフラクインかネットワークマルチフレイ時のみにクラッシュする.html
独自に作成したプラグインを適用・使用時に発生する症状であることが特定できました。しかし、依然として修繕方法がわかっていません。
別のQuestionとしてPostいたしました。そちらの方を通じてgithub上でソースコードとプラグインの公開をしています。ご参照ください。
https://answers.unrealengine.com/questions/364603/自作したフラクインかネットワークマルチフレイ時のみにクラッシュする.html
nullponull
(nullponull)
11
であれば、C++の実装の問題だと思いますよ。
alweiさんが仰るとおりC++で作る場合タイミングによってはエラーで落ちることがあるのでチェックする構造を必ず作らないといけないかと。
これはネットワーク云々の話ではなくそもそもローカルでもやらないと行けないと思いますよ。
中身が見れないのでこれ以上の回答を得るのは難しいと思います。
ありがとうございます。C++の実装部をチェックしてみます。
何度か返信を入れているのですが、AnswerHubのバグかコメントが表示されないのでこちらから失礼いたします。
プロジェクト全体でチェックをしてみたところ、独自に作成したプラグインを適用・利用時にネットワークマルチプレイを行うと症状が発生することが特定できました。しかし、まだ修繕方法がわかっていません。
Plugin内のC++実装部でご意見いただけた部分について確認してみます。
こちらに別のQuestionとしてPostいたしました。ソースコードとプラグインをgithubで公開していますので、参考にご覧ください。
https://answers.unrealengine.com/questions/364603/自作したフラクインかネットワークマルチフレイ時のみにクラッシュする.html
ありがとうございます。C++の実装部をチェックしてみます。
何度か返信を入れているのですが、AnswerHubのバグかコメントが表示されないのでこちらから失礼いたします。
プロジェクト全体でチェックをしてみたところ、独自に作成したプラグインを適用・利用時にネットワークマルチプレイを行うと症状が発生することが特定できました。しかし、まだ修繕方法がわかっていません。
Plugin内のC++実装部でご意見いただけた部分について確認してみます。
こちらに別のQuestionとしてPostいたしました。ソースコードとプラグインをgithubで公開していますので、参考にご覧ください。
https://answers.unrealengine.com/questions/364603/自作したフラクインかネットワークマルチフレイ時のみにクラッシュする.html
ありがとうございます。C++の実装部をチェックしてみます。
何度か返信を入れているのですが、AnswerHubのバグかコメントが表示されないのでこちらから失礼いたします。
プロジェクト全体でチェックをしてみたところ、独自に作成したプラグインを適用・利用時にネットワークマルチプレイを行うと症状が発生することが特定できました。しかし、まだ修繕方法がわかっていません。
Plugin内のC++実装部でご意見いただけた部分について確認してみます。
こちらに別のQuestionとしてPostいたしました。ソースコードとプラグインをgithubで公開していますので、参考にご覧ください。
https://answers.unrealengine.com/questions/364603/自作したフラクインかネットワークマルチフレイ時のみにクラッシュする.html