読者です 読者をやめる 読者になる 読者になる

tanaka's Programming Memo

プログラミングについてのメモ。

UNET5.1.3までに遭遇した不具合(一通り解決)

専門学校の資料を作成するにあたり、主にUNET5.1.0で作業していましたが、現在も発生中の不具合も含めてのメモです。

5.1.0で発生したバグ。5.1.1へのバージョンアップで治る

  • NetworkTransformで同期内容をRigidbodyにすると動きがガタガタになる
  • SyncVarの破損
  • Ping関連のエラーが発生して接続できなくなる
  • 再接続に失敗

5.1.1で発生したバグ。5.1.2へのバージョンアップで治る

  • 1つのゲームオブジェクトに同じ種類のネットワークコンポーネントがアタッチできない
  • ClientRpcの不測の呼び出し
  • ClientRpcの呼び出しがローカルのクライアント上にあるゲームオブジェクトで実行されない
  • 引数のある RPC をゲームオブジェクトのコンポーネントに送信した時に例外が発生
  • NetworkManagerから派生したクラスでクライアントコネクションのコールバックが呼び出されないことによるUpdate()の不具合
  • アイドル状態のコネクションを検出できない
  • 応答が長くなる

他のPCから接続に失敗する

macwindowsで通信しようとした時などに不具合が発生していました。

原因1

  • Unityのバージョン不統一
対策
  • Unityのバージョンを揃える

原因2

  • NetworkManagerの一部の設定の不一致
対策
  • NetworkManagerのAdvanced Configurationに接続数の設定があるが、これが不一致だと接続できないので、同じにする

原因3

  • 不明
対策
  • windowsのホストへmacのクライアントから接続すると失敗するが、macのホストへwindowsのクライアントから接続すると成功する
  • 一度成功すると、その後はwinのホストへmacからも接続できるようになる
  • 成功したら、mac無線LANでもOK

macをホスト、windowsをクライアントにすると、確実に接続できるようになりました。うちの環境の問題の可能性も高いのでなんとも言えませんが、もし同様の環境で接続ができない場合は、macをサーバーやホストにしてみてください。

その他注意点

  • NetworkBehaviourが持てるSyncVarは32コまで
  • 同じシーン内に複数のNetworkManagerがあってはいけない
  • NetworkIdentityはルートのオブジェクトに設定

まとめ

5.1.1以前のバージョンは致命的なバグがあります。同じPC上では結構動くのですが、他のPCをつなぐと安定しません。最新版にしましょう。

UNetはこれまでのものよりもはるかに利用しやすくなっていますが、プレビュー版ということもあってまだ安心感はありません。実験以上の目的ではまだ利用するのは難しい感じです。

5.1.3で目立った不具合は一先ずなくなりました。また何か出たら追記します。(2015/8/27)