夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Photonのチュートリアルをやる その①

本日はUnity調査記事です。

Unityではマルチプラットフォームでゲームを開発することができます。 近年のゲームではオンライン対戦や通信など、ネットワークを使用して他者とのやり取りが行えるものが多いです。

Unityでは自身でサーバーを構築する方法やAzureやAWSなどを使用する方法、様々な実装方法があります。今回はその中の一つであるPhotonのチュートリアルを行います。

〇Photonとは?

一言で表すとUnityでのマルチユーザーアプリの実現のためのSDKとその仕組みを指します。

チュートリアル

オリジナルのチュートリアルは下記になります。

doc.photonengine.com

Photon Cloudによってマルチプレイヤーアプリの開発とPUN(Photon Unity Networking)を使用したアプリ開発を学びます。

〇準備・導入

①Unityで新規プロジェクトを作成します。

今回はUnity2019.3.9f1を使用しました。

②シーン名を[Launcher]にして、ヒエラルキーウィンドウから[Launcher]という名前の空オブジェクトを追加します。

f:id:Holomoto-Sumire:20210114154734j:plain

③ウェブブラウザからPhotonのサイトにアクセスしダッシュボードを開きます。

dashboard.photonengine.com

④マイアプリからアプリケーションIDをコピーします。

f:id:Holomoto-Sumire:20210114164005j:plain

アプリケーションを作成していない場合は新規で作成します。

f:id:Holomoto-Sumire:20210114164812j:plain

③Unityに戻りAssetsStoreから[Pun2]と検索バーに入力します。

f:id:Holomoto-Sumire:20210114161908j:plain

④[Pun2]のアセットを見つけ[Import]を行い自身のプロジェクトにPhotonのアセットを導入します。

f:id:Holomoto-Sumire:20210114162332j:plain

⑤アセットが導入されるとウィザードが起動します。④でコピーしたIDを貼り付けます。

f:id:Holomoto-Sumire:20210114165125j:plain

エンターキーを押すことでウィザードが閉じます。

以上で準備が完了しました。

〇PhotonCloud

photonCloudは上記の手順で使用したウィザードを含むマルチプラットフォームを簡単に開始するためのセットアップのことです。

PhotonクラウドはPhotonサーバーの実行されている数多くのマシンの集まりを指し、Exit Games社のメンテナンスを受け動いています。 プレイヤー人数を増やすこともできますが、無料プランの場合同時接続20人となっています。

上記手順で導入したPUN2(Photon Unity Networking)Photon Cloudを管理しています。

次の流れで処理が行われています。

①各アプリが「ネームサーバー」に接続する。

②クライアントが使用する情報をチェックする。

③マスターサーバーに転送する。

マスターサーバーとはリージョンサーバーのハブ(中継)です。

〇ルーム

ルームはphotonを使用して同期したユーザー同士がコミュニケーションや対戦といった相互通信を行うための環境を指します。

f:id:Holomoto-Sumire:20210114173718p:plain
https://doc.photonengine.com/ja-jp/realtime/current/reference/glossary より引用

ルーム外では相互のやり取りを行うことができません。

Photon Cloudはルームベースのゲームを念頭に開発されています。

〇ロビー

ロビーはユーザーがルームに接続するまでのローカルのコンテナを指します。

実装次第でロビーから複数のルームの中から一つのルームを選択して入ることができます。

チュートリアルの流れ

①ロビーシーンの作成

②UIを使用しロビーを改善

③ゲームシーンの作成

④レベルのローディングの実装

⑤複数のユーザープレファブの作成

⑥カメラのプレイヤーへの追従

⑦ネットワーク機能の追加

⑧シーンの切り替えとプレイヤーの初期化

⑨プレイヤーユーザーインターフェース

それぞれ1記事で勉強していきます。