This document is about: PUN 2
SWITCH TO

PUN Classic (v1)、PUN 2、Boltはメンテナンスモードとなっております。Unity2022についてはPUN 2でサポートいたしますが、新機能が追加されることはありません。お客様のPUNプロジェクトおよびBoltプロジェクトが停止することはなく、将来にわたってパフォーマンス性能が落ちることはありません。 今後の新しいプロジェクトについては、Photon FusionまたはQuantumへ切り替えていただくようよろしくお願いいたします。

リージョン

Photon Cloudは、様々なリージョンでサーバーをホストすることで、世界中で低遅延のゲームを実現します。

クライアントは、Photonネームサーバーからリージョンのリストを取得できます。プロジェクトの運用期間を通じて、新しいリージョンが追加されたり、古いリージョンが廃止・削除されたりする可能性があります。

各リージョンは完全に独立していて、マスターサーバー(マッチメイキング用)とゲームサーバー(ルームのホスト)で構成されます。

クライアントのワークフローの概略は以下の通りです。

(1) クライアントは、Photonネームサーバーから利用可能なリージョンのリストを取得する。

(2) 利用可能なリージョンの中から一つを選択(pingに基づいて自動で選択/プレイヤーが手動で選択)して、そのリージョンのマスターサーバーに接続します。マスターサーバーはマッチメイキングを担当し、同じリージョンのゲームサーバー上のルームの作成/参加を行います。

(3) 最後に、クライアントはルームに参加するために特定のゲームサーバーへ接続します。このゲームサーバーは、(2)でクライアントが接続したマスターサーバーと同じリージョンにあります。

Photon Cloud Regions' Connect Flows
Photon Cloudリージョンへの接続

リージョン許可リストによって、AppIdごとに利用可能なリージョンを定義できます(後述)。

利用可能なリージョン

Photon Cloudは、複数のリージョンのサーバーで構成されており、世界中のホスティングセンターに分散しています。

Photon Cloudの各リージョンは「リージョンコード」で識別され、大文字小文字を区別しない短い文字列です。
例えば、「EU」「eu」はどちらも有効で、同じヨーロッパリージョンを指します。

ホスティングセンターの場所と、各リージョンのリージョンコードを、以下のリストに示します。

Photon Cloud for Gaming

Photon製品のQuantum・Fusion・Voice・Realtime・PUNは、Gaming向けのPhoton Cloudの以下のリージョンを利用可能です。

リージョン場所コード
アジアシンガポールasia
オーストラリアシドニーau
東カナダモントリオールcae
中国本土 (こちらをご覧ください)上海cn
ヨーロッパアムステルダムeu
香港香港hk
インドチェンナイin
日本東京jp
南アフリカヨハネスブルグza
南アメリカサンパウロsa
韓国ソウルkr
トルコイスタンブールtr
アラブ首長国連邦ドバイuae
東アメリカワシントンD.C.us
西アメリカサンノゼusw
中南米ダラスussc

Photon Chatは、以下のリージョンを利用可能です。

リージョン場所コード
アジアシンガポールasia
ヨーロッパアムステルダムeu
東アメリカワシントンD.C.us
中国本土(こちらをご覧ください)上海cn

Photon Industries Premium Cloud

Photon製品のQuantum・Fusion・Voice・Realtime・PUNは、Industries向けのPremium Cloudの以下のリージョンを利用可能です。

リージョン場所コード
アジアシンガポールasia
ヨーロッパアムステルダムeu
インドチェンナイin
日本東京jp
韓国ソウルkr
東アメリカワシントンD.C.us

Industries向けのPremium Cloudに追加予定のリージョン:オーストラリア(AU)、南アメリカ(SA)、西アメリカ(USW)、南アフリカ(ZA)

Photon Chatは、以下のリージョンを利用可能です。

リージョン場所コード
東アメリカワシントンD.C.us

中国リージョンのGaming/Industries

中国本土リージョンのPhoton Cloudを使用するには特別な条件があります。

  • アクセス解除が必要(後述
  • 中国でPhoton Voiceは利用不可
  • 開発用20CCUは無料(非商用)
  • Photon Cloudは500CCUのサブスクリプションのみが利用可能
  • それ以上のセットアップには特別な同意が必要

Photon製品のQuantum・Fusion・Voice・Realtime・PUN・Chatは、以下のリージョンのPhoton Cloudを利用可能です。

リージョン場所コード
中国本土上海cn

リージョン許可リスト

リージョン許可リストによって、アプリケーションごとにダッシュボードから有効なリージョンを編集できます。ベストリージョン機能を使用するクライアントは、自動的にそれに適応します。

リージョンの増減によって、サービス品質(プレイヤーに近いリージョンがある場合は、応答時間が改善する)と、マッチメイキング体験(リージョンを減らせば、リージョンごとのプレイヤー数が増える)のバランスを調整できます。

アプリごとに利用可能なリージョンを定義するには、ダッシュボードを開き、アプリケーションの「詳細へ」をクリックし、リージョン許可リストの「編集」をクリックしてください。
すると、許可するリージョンのリストを入力できる入力欄が表示されます。

  • 有効なリージョンはSDKごとに定義されていて、Industries Circleでは異なることがあります
  • 許可リストは、セミコロンで区切られたリージョントークンの文字列(例:"eu;us")です
  • リージョンコードは、大文字と小文字を区別しません
  • 定義されていない/認識できないリージョンコードは、リストから無視されます
  • 空("")または不正な文字列(例:";;;")は、全ての利用可能なリージョンが許可されます

変更(入力後に保存)してから10分以内に、ネームサーバーはフィルタリングされたリストを接続中のクライアントに送信するようになります。
クライアント側とのコンフリクトを避けるため、最小Pingの「ベストリージョン」に接続するか、受信したリージョンリストからリージョンを選択するようにしてください。

備考:人気のあるアプリで利用可能なリージョンを変更すると、複数のリージョンのピークCCUに影響し、利用料金にも影響します。必要に応じてプランを調整して、高額な追加料金を避けてください。プランのダウングレードは、切り替えが落ち着いた時に行うと良いでしょう。

リージョンの選択方法

アメリカにいるユーザーは、Photon Cloud USリージョンに接続すれば、レイテンシは最小になります。それだけなら簡単です。


では、世界中にユーザーがいる場合はどうすれば良いでしょう?

その場合は、以下のいずれかを選択できます。

  • a) 様々なPhoton Cloudリージョンにpingを送信し、最適なリージョンをあらかじめクライアントに選択させる(こちらをご覧ください)
  • b) リージョンごとのビルドを配布して、異なる地域のユーザーを異なるPhoton Cloudリージョンに接続させる
  • c) ゲームのUI内で、リージョンをユーザーに選択させる
  • d) 高レイテンシが許容されるゲーム(それほどリアルタイムではないゲーム)なら、全てのユーザーを同一のリージョンに接続させる

Photon Cloudを使用するアプリは、すべての利用可能なリージョンで動作し、追加料金はかかりません。

価格プランはこちらです。

Photon Cloudのダッシュボードでは、各リージョンでのゲームの利用状況をモニタリングでき、簡単にプランをアップグレード/ダウングレードすることができます。

ダッシュボードはこちらです。

C# Realtime API

Photon Realtime(ほとんどのPhoton SDKで使用されます)は、接続すべきベストリージョンを検知でき、そのリージョンへの接続を保持できるようにします。

これを実現するため、クライアントは常に接続時に接続可能なリージョンのリストをネームサーバーから取得します。
サーバーからの応答はLoadBalancingClient.RegionHandlerのセットアップに使用されます。LoadBalancingClient.RegionHandlerは、IConnectionCallbacksで定義されるOnRegionListReceived(RegionHandler regionHandler)コールバックからも提供されます。

通常、次のステップとしては、regionHandler.PingMinimumOfRegions()を呼び出して各リージョンへの現在のpingを検知します。完了時に呼び出すメソッドを渡し、最良のケースでは、以前の「ベストリージョンサマリー」を渡すこともできます(以下で説明します)。

サーバーへのping送信後、regionHandler.SummaryToCacheに結果がまとめられ、後で使用できるようにデバイス上に保存されます。

以前のセッションのSummaryToCacheがなければ、すべてのリージョンへpingが送信されるため、時間がかかります。
以前の結果が利用可能な場合、クライアントは以下を確認します:

a. リージョンリストが変更された場合(「以前のベストリージョン」がまだ利用可能な場合に対応)
b. pingが受け入れられない場合(以前に保存された値よりも1.5倍以上遅い)

どちらかに該当する場合は、すべてのリージョンへpingが送信され、新しい結果が選択されます。

ベストリージョンを使用すると、ダッシュボード内のサーバー側のリージョンフィルターと連携します。この機能によって、プレイヤーが利用可能なリージョンがオンデマンドで更新されます。

リージョンのリストにアクセスする場合、または前回の結果を上書きする場合には、リージョンのAPIリファレンスをご覧ください。

PUN

PhotonNetwork.ConnectUsingSettings()を使用すると、デフォルトでベストリージョンの選択が行われます。

プレイヤーの設定に結果を自動的に保存することを除けば、ワークフローはRealtime APIと同じです。

ベストリージョンは「継続的」です。
クライアントは通常、1つのリージョンをより長い時間使用します。
その後の起動時に、再びこのリージョンにpingを実行します。
PUNは、UnityのPlayerPrefsを使用して、
ベストリージョンの概要を自動的に保存します。

利便性とデバッグの目的で、現在のベストリージョンとそのpingはUnityエディターのPhotonServerSettingsで公開されます。
ただし、Unity Editorのプレイモードでのみ有効です。
Unity Editorと同じマシンで実行されるビルドには、異なるベストリージョンが含まれる場合があります。

ベストリージョンの検討

「ベストリージョン」オプションは、決定的なものではありません。
リージョンにあまり差がない場合や、まったく同じping計算がされた場合には、「ランダム」になる可能性があります。

理論上は以下の設定が可能です:

  • 同一デバイスから、複数リージョンに対してまったく同じpingを設定します。同じネットワークに接続したクライアント上で異なるリージョンに接続する場合には、ランダムになります。
  • 同じネットワークに接続した異なるデバイス上(または同じデバイス上で異なる試行を実行する)で、同じリージョンに対して異なるping値を設定します。

たとえば、「us」と「usw」(または「ru」と「rue」)の場合、オンラインリージョンの許可リストを使用してリージョンを選択するか、または明示的にリージョンに接続します。

デバッグをおこなうには、ロギングレベルを「情報」に設定し、「現在のベストリージョン」をクリアしてください(PUNの場合:PhotonNetwork.BestRegionSummaryInPreferences = null)。詳細を参照するか、またはメールでログを送信してください。

開発リージョン

PUN v2.17から、「開発リージョン」という新機能を追加しました。
これは、PhotonServerSettingsで利用できる新しい設定です。
この設定では、すべての開発ビルドが同じリージョンを使用し、「ベストリージョン」を選択する際の初期のマッチメイキングの問題が回避されます。
「開発ビルド」はPhotonServerSettingsが作成されると自動的に有効化され、「開発リージョン」はUnityエディターでの初回実行時(PlayMode)に設定されます。

「開発リージョン」は、PhotonNetwork.ConnectUsingSettings()を使用して接続した際にUnityエディターおよび「開発」ビルドでのみ使用されます。
単純に値を削除すれば、Unityエディター内の「開発リージョン」や「開発ビルド」を無効化できます。

このため、開発段階でベストリージョン選択の問題を回避するには、最新のPUN 2バージョンにアップデート済みであるか確認してください。
Unityエディターでは1回実行してください(PlayModeと入力し、接続)。
任意のデモシーンから実行可能です。
このUnityエディターからの初回接続によって、PhotonServerSettingsインスペクターから参照できる「開発リージョン」が設定されます。
1回実行すればデバイスからビルドおよびテストが可能になります。また、すでに実行済みならば、新しいビルドを実行できます。
ビルド設定から「開発ビルド」が有効化されたことがわかるでしょう。開発期間の間、この設定のままとなります。
こうして、すべてのクライアント(Unityエディターおよびビルド)が同じ「開発リージョン」に接続します。

本番への移行前に、開発ビルドを無効化するのを忘れないでください。

: 1つのクライアントが開発ビルドまたはUnityエディターから接続し、その他のクライアントが非開発ビルドから接続している場合、それらのクライアントは2つの異なるリージョンに接続する可能性があります。

中国本土のリージョンを使用

まず、Photonアプリケーション用に、中国本土リージョンへのアクセスをリクエストする必要があります。弊社宛にメールでご連絡ください。お客様のAppID用に解除します。
弊社のウェブサイトから、中国本土リージョンで使用される有償プランに申し込むことはできません。 有償プランの見積りについては、メールでご連絡ください。

ファイアウォールによってトラフィックがブロックされる可能性があるため、中国ローカルのPhotonネームサーバーを使用する必要があります。
中国のPhotonネームサーバーは「ns.photonengine.cn」です。

中国本土外からクライアントに接続しても、良い結果は得られません。
また、Photonサーバーから中国本土外のサーバーへの接続(例:カスタム認証、WebHook、WebRPCなど)の信頼性は高くありません。

重要:現段階では、ダッシュボードでアプリケーションに変更を加えても、中国のアプリケーションのキャッシュに自動的に反映されません。 アップデートをご希望の場合には、弊社宛にメールでご連絡ください。

また、法的な理由から、中国向けには個別のビルドが必要となり、個別のAppIdの使用を推奨します。
例えば、ビルドごとにAppIdやPhotonネームサーバーを変更するために、(任意の)条件コンパイルを使用してください。

中国マーケット用に特別なビルドを作成するには、お使いのクライアントSDKのマニュアルをご覧ください。

PUN 2

PhotonServerSettingsを使用

PUN 2: PhotonServerSettings for China
PUN 2: 中国用のPhotonServerSettings

コードを使用

C#

void ConnectToChina()
{
    AppSettings chinaSettings = new AppSettings();
    chinaSettings.UseNameServer = true;
    chinaSettings.ServerAddress = "ns.photonengine.cn";
    chinaSettings.AppIdRealtime = "ChinaPUNAppId"; // TODO: replace with your own PUN AppId unlocked for China region
    chinaSettings.AppVersion = "ChinaAppVersion"; // optional
    PhotonNetwork.ConnectUsingSettings(chinaSettings);
}
Back to top