Help us understand the problem. What is going on with this article?

UE4.22からUE4.23にしたらOnlineSubsystemOculusで接続できなかったので対応した

More than 1 year has passed since last update.

作成中のプロジェクトをUE4.22からUE4.23.1にアップデートしようとしたらOnlineSubsystemOculusで接続しようとすると接続できない現象が発生したので対応した。
ここでは対応の内容を記録する。

発生した現象

UE4.23.1にアップデートするとクライアントからJoinSessionすると処理は成功するがサーバー側に接続できない。

原因と対応結果

以下のバグが原因だった。
https://issues.unrealengine.com/issue/UE-82549

プロジェクトに取り込んでいたOnlineSubsystemOculusに上記リンク先に書いてある以下の修正を適用すると接続できるようになった。

Change line 186 in IpAddressOculus.h (ToString) from:
return OculusId.ToString();
to
return FString::Printf(TEXT("%s.oculus"), *OculusId.ToString());

現象の調査過程

ログの調査

  • 正常に接続できるUE4.22のログと比較するとサーバー側で以下のようなログが出ているのが原因っぽかった。
[2019.10.04-02.21.56:650][ 96]LogEngine: Changing dynamic resolution state.
[2019.10.04-02.22.14:924][735]LogHandshake: SendConnectChallenge. Timestamp: 28.507830, Cookie: 039125221129068025073170116200035043157184180036126099049244
[2019.10.04-02.22.14:952][735]LogPackageName: SearchForPackageOnDisk took   0.028s, but failed to resolve [Oculus ID].umap.
[2019.10.04-02.22.14:952][735]LogNet: Warning: There is no connection to: 0
[2019.10.04-02.22.14:952][735]LogNet: Warning: Server failed post-challenge connection from: [Oculus ID]
[2019.10.04-02.22.14:952][735]LogNet: Warning: There is no connection to: [Oculus ID]

PackageNameまわりのコード調査

エラーメッセージを出している
Engine/Source/Runtime/CoreUObject/Private/Misc/PackageName.cpp 
をよんでみたりするが[Oculus ID].umapというようなマップがないので原因がわからず。

VSからのデバッグによる調査

VisualStudioでプロセスにアタッチしてデバッグしてみようと、起動したウィンドウから切り替えるとエラーで落ちる現象が発生した。
エラーメッセージで調べてみるとこちらのバグがひっかかったのでコミット内容をエディタに適用してビルドするとエラーがでなくなった。

プロセスをアタッチしてデバッグしてみたところ。
PackageNameのコードが以下のように呼び出されていることがわかった。

>    Laplace-Win64-DebugGame.exe!FURL::FURL(FURL * Base, const wchar_t * TextURL, ETravelType Type) Line 144    C++
     Laplace-Win64-DebugGame.exe!UOculusNetDriver::LowLevelSend(TSharedPtr<FInternetAddr const ,0> Address, void * Data, int CountBits, FOutPacketTraits & Traits) Line 294    C++
...

少しコードも読んでみてOnlineSubsystemOculusのバグっぽいことを確認した。

バグの調査

issuesでOculusのキーワードを入れるとこちらのバグがひっかかった。
内容があてはまったので書いてある修正内容を適用してみる接続できるようになった。

mechamogera
https://github.com/mechamogera/MyTips/wiki で技術メモを登録してましたが使いやすそうなので引っ越してみました。 保有資格:CSM、EXIN Agile Scrum Foundation、AWS認定ソリューションアーキテクトプロフェッショナル、Ruby技術者認定試験Silver/Gold、SJC-P/SJC-D、ソフトウェア開発技術者、基本情報技術者
https://github.com/mechamogera/MyTips/wiki
jrits
信頼と魅力のある先進のITをもとに、お客様のワークスタイル・イノベーションの実現を目指します。
http://www.jrits.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away