PhotonUnity技術ブログ

Photonを使ったマルチプレイ入門その1

Photonとは?

マルチプレイ実装の面倒な部分を吸収して

SDK(またはAPI)として提供してくれるマルチプレイヤープラットフォーム。
SaaS型(Software as a Service)のサービスで特別管理などをする必要がない。
主にオンラインゲームソーシャルゲームにおいて、複数ユーザー同時にゲーム参加してプレイすること、
または、ゲームにおけるそのような機能を簡単に実装できます。

Photon接続のための簡単な設定

Photonのアカウントを登録

https://www.photonengine.com

にアクセスし登録を行う

登録完了後に

https://www.photonengine.com/ja-JP/dashboard

からにアクセスし、「Create a new App」ボタンを押下

次の画面でPhotonTypeを「Photon PUN」に

NameやDescriptionに任意の説明を入れて、「Create」ボタンを押下する

ダッシュボードに戻り、App IDの値を控えておく(Unity上でPhotonの設定を行う際に使います。)

・Unity側のPhoton設定

ここからは、Unity側での作業になります。

まずは、Unityを起動しPhotonを導入したい任意のプロジェクトを開きます。(今回はNewを選択します。)

次にPhotonをアセットストアからダウンロードします。

Window -> AssetStoreを選択

AssetStoreのWindowが開くので、Store上部の検索窓に「Photon」と入力後に検索ボタン(虫眼鏡のマーク)を押下します。

検索結果が表示されますので、Photon Unity Networking Free を選択します。

 

↓画面のダウンロードボタンを押下します。

ダウンロード完了後にImport Unity Package Windowが出ますのでプロジェクトにインポートします。

こちらのImportボタンを押下します。

パッケージインポート後にこのようなWindowがでることがありますが、

ここでは I Made a Backup. Go Ahead を選択します。

 

次に、Photonのunity側での設定を行います。

Window -> PhotonUnityNetworking -> PUNWizard -> Locate Photon ServerSettingsを押下

その後、PhotonServerSettingsが選択されるので、InspectorのApp Idの箇所にさきほどPhotonのDashbord側で控えたAppIdを入れます。

(任意ですが、初期で選択されているProtocolがudpなので、正確性を求めるゲームの場合はtcpなどに変えておくと良いかもしれません)

これで、Photonを動かす準備ができました!

Photonの動きを見るための環境作り

ここまでの流れで、Photonの接続環境構築まではできましたが、マルチプレイのテストを行うにあたってのテスト環境構築についても説明していこかと思います。

まずは、マルチプレイをテストするにあたっての方法をいくつか列挙します。

(Photonのマルチプレイマッチングは、AppIdが一致していてかつ、Photon SettingsのVersionが一致している場合にマッチングすることが可能です。)

(逆に言えば、Photon SettingsのVersionを変えていくことでリリース中のアプリプレイヤーとテスト開発版のプレイヤーがマッチングしないようにすることが可能です。)

1)プロジェクトをビルドして他の端末でアプリを起動しマルチプレイのチェックを行う

アプリのビルドをバンバン行なっているような状態であれば有効な方法かと思います。

Photonのマルチプレイはプラットフォームの違いを問わずに、対戦が可能です。

(androidとUnityEditor、iosとwebプレイヤーなど・・・)

2)UnityをPC上で複数台起動しマッチングテストを行う

まずは、unityを複数起動します。(チェックを行うときはデュアルモニターだと確認がしやすいです)

・mac上でのunity複数起動方法

ターミナルを起動し、

open -n /Applications/Unity/Unity.app
を使って複数起動、

もしくは、Unityを複数インストールして複数起動します。

 

・windowsの場合

WindowsではタスクバーにでているUnityアイコンの右クリックし、AltをおしながらUnity.exeをクリックします。

 

また、同一のプロジェクトは開くことができないので、gitか何かでバージョン管理を行なったあとに

同じプロジェクトをコピーして、変更などがあった場合はgitで同期しながらPhotonのマルチプレイのチェックを行います。

 

・Photonのデモプロジェクトについて

Photnには、いくつかのデモプロジェクトが付随しており動作を見ることでPhotonの使い方や応用の仕方などを学ぶことが

できるようになっています。

これらのデモの内容を理解し、応用していくことでオリジナルのマルチプレイを実装したゲーム作りに役立っていくことでしょう。

今回は、各種デモプロジェクトについて内容をザックリと説明して行こうかと思います。

(詳細な説明は次回以降に詳しく解説して行こうかと思います!)

 

■Demo2DJumpAndRunWithPhysics-Scene.unity
|-2Dのロボカイルを動かしての2Dオブジェクトの同期周りを確認することができるデモとなっています。

 

■DemoBoxes-Scene.unity
|-同期用の箱を出現させて動きを確認できたり、
|-箱についてのViewIdとオーナーが誰なのか把握することができるようなプロジェクトとなっています。

 

■DemoChangeOwner-Scene.unity
|-オーナーの切り替え周りがよくわかる
|-OwnershipSphere:オーナーを切り替えることが可能なオブジェクト

ゲームオブジェクトのオーナー切り替えについて学ぶことのできるデモシーンとなっています。

(Photonオブジェクトのオーナー周りの説明については次回行こうに詳しく詰めて行こうかと思います。)

 

■DemoChat-Scene.unity
Photonを使ったChatAppのサンプル
内容を確認するにはPhotonのDashbordにログインしたのちに

Chat Idを取得し PunWizard中にIDを挿入する必要があります。

■DemoHub-Scene-V2.unity
|-各種デモシーンへの遷移ボタンが配置されているシーンです。

■DemoMecanim.unity
メカニムを使ったキャラクターの同期サンプルです。

■DemoPickup-Scene.unity
アイテムを集めてゴールにアイテムを入れるゲームのサンプルになっています。

■DemoRPS-Scene.unity
じゃんけんゲームが入っています。

RPCを使った処理の同期を知るのに最適なデモとなっています。

■DemoRPGMovement-Scene.unity
MMORPGのフィールド移動のサンプルが入っています。

■DemoSynchronization-Scene.unity
Photonの同期方法の違いによる動きの滑らかさの差異を比較するためのサンプルオブジェクトとなっています。

■DemoWorker-Scene.unity
部屋の作成やPhotonプレイヤーの作成メニューの表示とPhotonPlayerの同期確認ができます。

Photnの基本的な処理の参考として参考になりやすいかなと個人的に思います。

 

以上!ザックリですが、Photonの導入とデモの簡単な紹介でした。

次回以降は、Photonの基本的な同期の仕組みと、デモの詳細解説を行なって行こうかと思います。