Top Banner
Unity かかかか Photon Cloud CLOUD CREATIVE STUDIOS, INC.
14

Unityから見たPhoton Cloud

Apr 16, 2017

Download

Engineering

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Unityから見たPhoton Cloud

Unity から見た Photon CloudCLOUD CREATIVE STUDIOS,

INC.

Page 2: Unityから見たPhoton Cloud

自己紹介

• 武藤辰矢• エンジニアやってます。• クライアントもサーバもやります。• プロジェクトリーダーもやってます。• Azure 触ってます。

CLOUD CREATIVE STUDIOS, INC.

Page 3: Unityから見たPhoton Cloud

自己紹介

• 安藤健二• 8bit 時代からやってます• 年季だけは積んできました• 生涯現役!!

CLOUD CREATIVE STUDIOS, INC.

Page 4: Unityから見たPhoton Cloud

宣伝

DEAD CITY *スマホ向け 3D ゾンビ FPS

 *リアルタイムマルチプレイ対応

 *お気に入りの銃で  ゾンビを撃ちまくれ!

★ 好評配信中!!iOS - http://goo.gl/kcrmN2Android - http://goo.gl/AdfLgT

CLOUD CREATIVE STUDIOS, INC.

Page 5: Unityから見たPhoton Cloud

Photon Unity Networking(PUN)Unity 用 Photon クライアントフレームワーク

CLOUD CREATIVE STUDIOS, INC.

Page 6: Unityから見たPhoton Cloud

Photon サーバ構成

* 引用元 https://doc.photonengine.com/ja/realtime/current/reference/regions

CLOUD CREATIVE STUDIOS, INC.

Page 7: Unityから見たPhoton Cloud

Unity でのサーバ接続

• UnityEditor で PhotonSerserSettings.asset を編集• ServerSettings クラス – Photon の設定を行う EditableObject

• Hosting • Reagion• AppId

• PhotonNetwork クラスによる接続• PhotonNetwork.ConnectUsingSettings( /* ゲームバージョン */)• PhotonNetwork.connectedAndReady プロパティが true になるまで待つ

これだけでマスターサーバー ( マッチングサーバ ) への接続が完了

CLOUD CREATIVE STUDIOS, INC.

Page 8: Unityから見たPhoton Cloud

簡単だけどその中身は…

1. ネームサーバに接続2. アプリケーション認証3. 下位サーバー接続のための暗号化を確立4. マスターサーバへ接続

• 上記の一連の処理をやってくれる• この状態が PhotonNetwork.connectedAndReady

• PhotonNetwork.connectionStateDetailed プロパティを観察すると見えてくる

CLOUD CREATIVE STUDIOS, INC.

Page 9: Unityから見たPhoton Cloud

マッチメーキング

• PhotonNetwork.JoinOrCreateRoom() を呼び出す• PhotonMonoBehavior コールバックで入室状態をハンドルする

• OnJoinedRoom() 入室成功• OnPhotonCreateRoomFailed() ルーム作成失敗

簡単 !!!

CLOUD CREATIVE STUDIOS, INC.

Page 10: Unityから見たPhoton Cloud

簡単だけどその中身は…

1. マスターサーバがマッチしたルームを管理するゲームサーバを選ぶ2. ゲームサーバに接続3. ゲームサーバでルーム参加処理、またはルーム作成処理4. ゲームサーバの処理を待つ5. 入室済み状態に設定

• 上記の一連の処理をやってくれる。• この状態が PhotonNetwork.inRoom

• PhotonNetwork.room != null // 所属するルームが設定される• PhotonNetwork.player != null // ローカルプレイヤーの情報が設定される

CLOUD CREATIVE STUDIOS, INC.

Page 11: Unityから見たPhoton Cloud

ルーム作成時の詳細

* 引用元 https://doc.photonengine.com/en/onpremise/current/applications/loadbalancing/application

CLOUD CREATIVE STUDIOS, INC.

1. マスターサーバへ接続2. ゲーム認証3. ルーム作成先ゲームサーバー選択4. マスターサーバ切断5. ゲームサーバへ接続6. ゲーム認証7. ルーム作成

Page 12: Unityから見たPhoton Cloud

入室してしまえば

• RPC によるクライアント間通信• PhotonNetwork.player.SetCustomProperties() によるプレイヤー情報の同

期• シリアライズによる GameObject プロパティの同期

( 旧 ) Unity Networking と同様に使える。

CLOUD CREATIVE STUDIOS, INC.

Page 13: Unityから見たPhoton Cloud

簡単だけど

• Photon のロビーの概念を知っていないと詳細なマッチメークができない• TypedLobby クラス• LobbyType 列挙

• Photon Cloud の概念を知っていないとエラー処理ができない• PhotonMonoBehavior.OnFailedToConnectToPhoton()• PhotonMonoBehavior.OnDisconnectedFromPhoton()

• PhotonNetwork の多くの機能を使いこなせない

CLOUD CREATIVE STUDIOS, INC.

Page 14: Unityから見たPhoton Cloud

まとめ

• PUN は煩雑な接続処理が自動化してくれる• プロトタイプ作成までの手順は非常に簡単• Photon Cloud の概念を把握して Unity で快適なネットワークプレイ• Photon Cloud の概念を把握するには PUN ドキュメントだけでは不十分

CLOUD CREATIVE STUDIOS, INC.