現在OnlineSessionノードを使ってLAN内でのマルチプレイゲームを作成しています。
iniファイルに[OnlineSubsystem] DefaultPlatformService=Nullを追加し、ブループリントのみでのマルチプレイはできました。
ですが、プラグインの導入に伴いC++クラスを作成したところCreate SessionやFInd SessionがOn Failureにしかならないという現象が発生してしまいC++とブループリントでのOnlineSessionノードの共存ができないという状態です。
また、PIEでのテストでは問題は発生せずパッケージ化したときのみこの現象が発生します。
新規プロジェクト作成し
1 iniファイル編集
2 レベルBPでCreate Session およびその結果の表示
※この時点でのパッケージでは問題なくセッションの作成ができます。
3 新規C++クラスを作成
という最低限の環境でおこなってもパッケージ化するとOn Failureになってしまいます。
visualStudio2015の問題化と思い、4.9で2013を使用しましたが結果は変わりませんでした。
UE4でC++を使用したマルチプレイゲームは数多くあるはずですがこのような問題が発生していないので原因がわからずお手上げです。
解決策がわかる方がおりましたら教えて頂けたら幸いです。
中身を見ないとなんともいえませんが、UE4の公式が用意しているシューターゲームやアンリアルトーナメント中身は確認されましたか?
やりたいこととは違うかもしれませんが、動く物を参考にしてみてはいかがでしょうか?
C++の実装が間違っている可能性もありますし、BPと共存できない可能性もあります。
現状の情報では判断できないので、まずはもっとたくさんの情報を出してもらうか、最初に上げた方法で別のやり方で行ってみてはいかがでしょうか?
ありがとうございます。
今回の状況と近いと思われるMultiPlayerShootoutでiniファイルをNullにして確認したところ同じ現象がおきました。
また、C++の実装は何も行っておりません。
クラスを作成しただけです。
新規プロジェクトを作成し上記の1~3以外の変更は行っておりません。
恐れ入りますがどのあたりの設定の情報が必要などといったものがあれば教えて頂ければ幸いです。
やはり、C++を使用する場合はOnlineSession関係はC++で実装しないといけないのでしょうか…
少し調べてみますね。
それから、実行時のログとかあれば助かります。
問題がわかりました。
C++を追加するとmodule構成をちゃんと作ってあげないといけません。
LogModuleManager:Warning: ModuleManager: Module ‘OnlineSubsystemNull’ not found - its StaticallyLinkedModuleInitializers function is null.
上記のようなエラーメッセージが出ます。
理由としてはC++プロジェクトにするとOnlineSubsystemNullでもmodule構成を作る必要があります。
下記のAnswerHubで解決します。
PROJECTNAME.Build.csにOnlineSubsystemNullのmoduleを追加してください。