プレイヤーの動きをオンラインでテストする

確認済のバージョン: 5.3

-

難易度: 中級

ホスト上でプレイヤーの動きをテストする

この時点では、Player ゲームオブジェクトはクライアント上でしか動きません。

ネットワークには一切接続されていない状態です。

テストを行うには、

  • Play モードを開始してください。

Play モードで、NetworkManagerHUD はデフォルトのユーザーインターフェースを表示します。

参考画像

  • ゲーム内 UI の LAN Host ボタンをクリックすると、ホストとしてゲームが開始されます。

NetworkManager が、参照先のプレイヤープレハブから新しいプレイヤーゲームオブジェクトをシーン内に作成します。NetworkManagerHUD の表示が変化し、サーバーがアクティブになったことを示します。

参考画像

このゲームは「ホスト」として実行されています。つまりサーバーであると同時にクライアントでもあります。詳しくはネットワークシステムの概念をご覧ください。

シーン内でプレイヤーゲームオブジェクトを動かすテストを行うには、

  • WASD キーまたは方向キーを押すとプレイヤーの移動と方向転換を行えます。

ゲームのホスティングを終了するには、

  • ゲーム内 UI の “Stop” ボタンを選択します。

ゲームがオフラインモードに戻ります。

テストを終了するには、

  • エディターで Play モードを終了してください。

クライアント上でプレイヤーの動きをテストする

クライアント上でプレイヤーの動きをテストするには、ゲームのインスタンスが 2 つ同時に実行されている必要があります。そのうちのひとつがホストになります。インスタンスのひとつはエディターから実行できますが、2 つ目はゲームのビルドから実行する必要があります。そのため、クライアント上で動きのテストを行う場合は、まず現在のプロジェクトのビルドを作成する必要があります。

  • Main シーンをビルド設定(Build Settings)ウィンドウに追加してください。
  • プロジェクトを保存してください。
  • このシーンの "Build and Run" (ビルドおよび実行)を、スタンドアロンの アプリケーションとしてのみ行ってください。
  • ビルドの実行中に windowed チェックボックスを選択してください。解像度はエディターと同時に開いておくために十分な低さを選択してください。

スタンドアロンのプレイヤーが開始され、NetworkManagerHUD からゲーム内 UI が表示されます。

  • ゲーム内 UI から Host ボタンをクリックすると、このゲームがホストとして開始されます。

NetworkManager によってプレイヤーゲームオブジェクトが 1 つ作成されます。シーン内でホストのプレイヤーゲームオブジェクトのテストを行うには以下を行ってください。

  • WASD キーまたは方向キーを押すとプレイヤーの移動と方向転換を行えます。

シーン内でプレイヤーゲーオブジェクトを動かした後に、

  • Unity に戻ってください。
  • Play モードを開始してください。

ゲームがエディター上で実行され、NetworkManagerHUD からゲーム内 UI が表示されます。

  • ゲーム内 UI から LAN Client ボタンをクリックすると、クライアントとしてホストに接続されます。

2 つのプレイヤーゲーオブジェクトが存在しているはずです。ひとつはホスト上のローカルプレイヤー用、もうひとつはクライアント上のリモートプレイヤー用です。

シーン内でクライアントのプレイヤーゲーオブジェクトの動きをテストするには、

  • WASD キーや方向キーを押すと、クライアントのプレイヤーを動かしたり方向転換したりできます。

同じ入力によって、2 つのプレイヤーゲーオブジェクトの両方がシーン内で動くことにご注目ください。

  • スタンドアロンプレイヤーに切り替えてください。

プレイヤーゲーオブジェクトの位置が、ホスト上とクライアント上で異なることにご注目ください。

これは、PlayerController スクリプトがネットワークを認識しないためです。この段階では、2 つのプレイヤーゲーオブジェクトの両方に同じスクリプトが添付されています。この 2 つは同じ入力を、ゲームの別々のインスタンス内で処理しています。ホストとクライアントは互いに認識し合っており、NetworkManager によってプレイヤーゲーオブジェクトが各インスタンス内に 1 つずつ、それぞれのプレイヤー用に作成されています。しかし、どちらのプレイヤーゲーオブジェクトもホストとの通信を行っていないため、それらの位置は NetworkManager によってトラッキングされておらず、したがって同期されていません。

  • スタンドアロンプレイヤーを終了してください。
  • Unity に戻ってください。
  • Play モードを終了してください。

関連ドキュメント