RakeupGame サンプル (ClientSide)

目次

  概要
  複数クライアント動作のための準備
  アプリケーションの作成
  複数クライアントで動作させてみる


概要

「サーバサイドプログラム」の比較対象として、旧来の「MUN クライアントサイドのみ」で動作することを
想定して作成した場合の、簡易ゲームサンプルの完成版です。

  本サンプルは、MUN 2.0 以降公開された MUN サーバを用いて「サーバサイドプログラミング」 を行なうにあたり、
  「サーバの実装内容を変化させず、MUN クライアントのみで実装する場合」の簡易ゲームサンプルの完成版です。

  このサンプルはフィールド上に置かれたアイテムに、自分のプレイヤーキャラを近づけることで収集し、
  制限時間内において、どれだけのアイテムを収集できたかを競うゲームです。

  なお、サーバサイドプログラミングの実装に伴う RakeupGame(ServerSide) サンプルとの比較として作成されたものであり、
  このサンプル自体は、旧来の MUN 1.x でも作成することは可能です。


複数クライアント動作のための準備

バックグラウンドでの動作を有効にする

  Unity のバージョンによっては「バックグラウンドでの動作」が無効になっている場合があり、
  その状態で複数クライアントを動かすと支障が出ます。
  実行バイナリを生成する前に、まずはその確認と、無効になっていた場合に有効にする手続きを行いましょう。

  Unity のメニューから Edit > Project Settings > Player を選択します。
  PlayerSettings の「Resolution and Presentation」内にある、「Run In Background」のチェックボックスが ON になっているか確認してください。
  もし、OFFになっていた場合には、チェックボックスを ON にします。


アプリケーションの作成

実行バイナリを生成する

  では改めて実行バイナリを生成しましょう。
  Unity のメニューから File > Build Settings... を選んでください。
  Build Settings ウィンドウ内の Scenes In Build に対し、
  Assets/Monobit Unity Networking/Samples/Scenes/RakeupGame/ClientSide/RakeupGame.unity を追加します。
  (上記ファイル Scenes In Build 内にドラッグ&ドロップしてください。)
  Build Settings ウィンドウ内の右下にある [ Build ] のボタンを押します。
  ここでビルドしますが、ビルド方法が Unity2018.2 以前と Unity2018.3 以降で異なりますので、
  お使いの Unity のバージョンに合わせて、以下のいずれかを選択してビルドしてください。

  ファイル名を RakcupGame_ClientSide.exe として保存します。
  しばらく待つと、新規ファイル RakcupGame_ClientSide.exe が出来上がります。



  まず「新しいフォルダー」をクリックし、新規フォルダを作成します。
  新規に作成したフォルダーに名前を付けます。ここでは「RakcupGame_ClientSide」としましょう。
  フォルダに「RakcupGame_ClientSide」が選択された状態で、[フォルダーの選択] ボタンを押下します。
  ボタンを押すとビルドが開始され、さらにしばらく待つと、先ほど作成した RakcupGame_ClientSide フォルダ内に「MUN_TEST.exe」が作成されます。


複数クライアントで動作させてみる

実行バイナリとUnityエディタの両方を使って、マルチプレイ動作確認を行なう

  実行バイナリをダブルクリックすると、以下の画面が出現します。
  お使いのディスプレイ解像度よりも低いスクリーンサイズで、かつウィンドウモードを有効にした状態で、[ Play! ]ボタンを押してください。
  一方で、Unityエディタ上の実行ボタンも押します。
  すると、実行バイナリ、Unityエディタのクライアント双方で、以下のような画面に切り替わります。
  各々のクライアントについて、プレイヤー名を入力し、「Connect Server」ボタンを押してください。
  続けて以下の画面に切り替わります。
  実行バイナリ、Unity エディタのいずれか一方のクライアントで、ルーム名を入力し、「Create Room」ボタンを押して、ルームを作成します。
  ルームを作成すると、以下のような表示がなされます。
     ・ My Player Name : 自身のプレイヤー名
     ・ Entry Room : 現在入室しているルーム名、および、(現在のルーム人数 / ルーム収容最大人数)
     ・ Host Player : そのルームのホストプレイヤー名
     ・ Room Status : ロビーからルームを可視状態にしているかどうか(Visible or Invisible)、および、ルーム入室を許可しているかどうか(Open or Close)
  この状態で「ルーム作成側のクライアント」は待ちます。
  もう一方のクライアントでは、以下の画面になっています。
  Created Room List の項目下に、「一方のクライアントが作成したルーム名」のボタンが現れますので、このボタンを押してみます。
  一方のクライアントでルーム作成し、もう一方のクライアントでそのルームに入室した状態が以下の画面です。
     ・ 自身のプレイヤー ID, ルーム名, 現在のルームの人数, ルーム入室の許可/拒否設定が表示されます。
     ・ Leave Room ボタンで、ルームから退室することが出来ます。
     ・ (ホストのみ) Start Game ボタンでゲームを開始することが出来ます。
  表示確認を終えたところで、いずれか一方のクライアント(必ずしもホストでなくともよい)にて、Start Game ボタンを押してみましょう。

  Game Start ボタンを押すと、ゲームがスタートします。
  カーソルキーで、自分の操作キャラクタ(SDユニティちゃん)を動かすことができます。
  またこの操作に伴い、一定時間ごとにフィールド上に出現する「パネルアイテム」を取得することで点数が入ります。

  「収集したアイテムの数×100」をスコアとして、プレイ中にプレイヤーの頭上に表示させます。

  また、ゲーム終了までの制限時間が、画面左部の「Game Info」 内の 「Rest Frame」として表示されます。

  「Rest Frame」が 0 になった時点でゲームが終了し、画面左側に「Game Result」が表示されます。
    ※ 各プレイヤーごとに「プレイヤーID, 名前, 取得したスコアの順」で登録

  なお、サンプルの表示自体は「ルームに入室した逆順」で表示させていますので、下記のような表示になってしまいますが、
  表示前に取得したスコア値でソートすれば、ランキング上位順で表示させることも可能です。