Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Unity9】Unity MultiPlayerを使ってネットワーク越しにマッチメイキング!【UNET19】

Unity5.1.1p3 Personal(2015年7月)

前回の続きです〜

今回はUnity MultiPlayerを使い、ネットワーク越しのマッチメイキングシステムを実現していきます〜

今まではLocal環境での接続でしたが、Unity MultiPlayerを使うことでネットワーク越しで接続することができるようになります〜
つまり今回からは、Webサイト上にアップロードしたものやスマホアプリにしたものとも接続できるようになります!



UNET Part 19 - Matchmaking First Attempt - YouTube

【目標】ネットワークを通してマッチメイキングする!

①Unity MultiPlayerへログイン

まずはUnity MultiPlayerへログインします〜
CLICK HERE SIGN INボタンを押し、

f:id:hiyotama:20150724090600p:plain

Unityアカウントでログインします〜(Unityをはじめてダウンロードした時や、Asset Storeで使っているIDとパスワードでログインできます〜)

f:id:hiyotama:20150724090933p:plain

②UnityPlayerでProjectの作成

そうすると以下のようなページへ飛ぶので、Project→Create Projectを押し、適当なProject名でProjectを作成します〜

f:id:hiyotama:20150724091541p:plain

f:id:hiyotama:20150724091549p:plain

Projectでは同時接続人数を設定できます〜(現状ではMax100人まで)
今回は5人にして、Saveボタンを押しましょう〜

f:id:hiyotama:20150724091857p:plain

すると以下のようなページへ移動します〜

ここで重要なのはCloud Project IDです!
このCloud Project IDをコピーしておいて下さい〜

f:id:hiyotama:20150724092014p:plain
Cloud Project IDをコピー

③マルチプレイヤー環境の構築

Unityの開発環境を開き、Edit > Project Settings > Playerを選択して下さい〜

f:id:hiyotama:20150724092403p:plain

続いてInspectorビューにてCloud Project IDをペーストします〜
※現在Cloud Project IDを入力する必要はないそうです!
それに伴いCloud Project ID入力欄は削除されました!

f:id:hiyotama:20150724092449p:plain
ペースト

以上で環境構築は完了です〜とても簡単でした〜

④テスト

それでは実際に、ネットワーク越しに接続してみましょう〜

ゲームを実行し、Enable Match Makerボタンを押します〜

f:id:hiyotama:20150724094148p:plain

続いてCreate Internet Matchボタンを押します〜すると、マッチメイクする用の部屋が作成されます〜
下のRoom Nameを変更すると部屋名を変更することができます〜
今回は「default」のままでいいでしょう〜

f:id:hiyotama:20150724094324p:plain
部屋を作成

するといつものようにゲームが開始されます〜

f:id:hiyotama:20150724094420p:plain

もう一方の画面では、今度はEnable Match Maker →Find Internet Matchを選択します〜

f:id:hiyotama:20150724094148p:plain

f:id:hiyotama:20150724094549p:plain

すると部屋名一覧が出てくるので、defaultを選択します〜
しばらくすると、ゲームに参加できます〜

f:id:hiyotama:20150724094700p:plain

f:id:hiyotama:20150724094755p:plain
マッチメイキング完了!

⑤チャンネルの設定

今のままだとタイムアウトして接続が切れてしまうことがあるので、チャンネルの設定をしていきます〜

MenuシーンにあるNetworkManagerのAdvanced Configurationにチェックを入れ、Channel #0にUnreliableを、Channel #1にReliable Sequencedを設定して下さい〜

各チャンネルについての解説は、公式マニュアルに書いてあります〜
Channels
Qos Type

僕も正確には把握していないのですが、Unreliableがメッセージを受け取り損なっても無視するかわりに回線が切れにくい・Reliable Sequencedがメッセージを確実に届けるけど回線が切れやすいという感じだと思います〜

スクリプトによって使うチャンネルを変えるには、Network Settingsを記述します〜

hiyotama.hatenablog.com

⑥更なる最適化

動画ではそれでもまだタイムアウトが発生する感じで、各自最適化していく必要があるということを伝えている感じでした〜

ネットワークの状況は、Profilerビューから確認することができます〜
Window > Profilerを選択して下さい〜

f:id:hiyotama:20150724100726p:plain

f:id:hiyotama:20150724101022p:plain
Profilerビュー

ProfilerのNetwork Messagesの、赤枠で囲われた部分の数値が高いから接続が切れた的なことを言っている気がするのですが、よく分かりません〜(すみません・・・)

ここらへんの数値を改善していくことで回線が安定していくのだと思われます〜


今回はここまでです〜

ありがとうございました〜


【Unity9】UNETでマルチプレイヤーなオンラインゲーム開発【UNET1】
【Unity9】UNETでプレイヤーの動きを補間し、なめらかな動きを実現する【UNET1-2】
【Unity9】UNETでネットワーク越しに傾き(Rotation)を同期させる【UNET2】
【Unity9】UNETでオンライン開始時のプレイヤー生成位置を変更する【UNET2-2】
【Unity9】UNETのネットワークトラフィックを軽減し、効率化する【UNET3】
【Unity9】UNETのlatency(遅延時間)を改善する【UNET4】
【Unity9】UNETのlatency(遅延時間)を表示して、ちょっとだけ改善する【UNET4-2】
【Unity9】UNETのSyncVarのhookの使用例と、前時代の同期方法【UNET5】
【Unity9】UNETを使ってRotationを同期させる【UNET6】
【Unity9】UNETで各プレイヤーにPlayerIDを設定する【UNET7】
【Unity9】UNETで敵プレイヤーにダメージを与える!【UNET8】
【Unity9】UNETでHPを画面に表示し、Playerへダメージを与える【UNET9】
【Unity9】UNETでHPが0以下になった時、Playerを破壊する!【UNET10】
【Unity9】UNETで死んだPlayerを生き返らせる!【UNET11】
【Unity9】UNETでゾンビAIを出現させる!【UNET12】
【Unity9】UNETでゾンビ生成時にユニークなIDを付ける!【UNET13】
【Unity9】UNETでゾンビを撃つ!【UNET14】
【Unity9】UNETでゾンビに攻撃させる!【UNET15】
【Unity9】UNETでゾンビの動きをスムーズにシンクロさせる!【UNET16】
【Unity9】UNETでゾンビ発生地点を増やす【UNET17】
【Unity9】UNETで発生したバグを取り除く【UNET18】
【Unity9】Unity MultiPlayerを使ってネットワーク越しにマッチメイキング!【UNET19】
【Unity9】GUIを改善して、Network Managerを見やすくする!【UNET20】
【Unity9】表示したGUI(Network Manager)を機能させる!【UNET20-2】
【Unity9】UNETでAnimationを同期させる!【UNET21】