オンラインプレーヤーの最大数のリアルタイム監視(Photon)

ゲームはまだ開発段階にあるため、無料版のPhoton(100人)を使用しており、人数に制限がありますが、オンラインでのプレイヤー数を監視するにはどうすればよいですか?次のシステムは、次のPhotonエクスペリエンスを共有します。

ここに画像の説明を挿入

1.オンラインプレイヤー数の監視方法

Photonの基本原則を理解すると、PhotonがIPhotonListener.OnStatusChanged()メソッドを介して接続ステータスの変更を通知することがわかります。このメソッドのパラメーターは、列挙型StatusCodeです。
ここに画像の説明を挿入
この列挙には、次のタイプがあります。
ここに画像の説明を挿入

そうです、それだけです!
ここに画像の説明を挿入
photonは、ユーザー数が同時ユーザーの制限に達したことを検出すると、サーバーを切断します。
したがって、以下の方法でオンラインプレイヤー数の上限をリアルタイムで監視することができます。
ここに画像の説明を挿入

 public void OnStatusChanged(StatusCode statusCode)
        {
    
    
            switch (statusCode)
            {
    
    
                case StatusCode.Disconnect:
                    DebugReturn(DebugLevel.INFO, "@@@@@@Disconnect");
                    PlayerController.instance.CancelInvoke();
                    PlayerController.instance.StopAllCoroutines();
                    photonPeer.Connect(ServerAddress, ServerAppName);
                    break;

                case StatusCode.TimeoutDisconnect:
                    DebugReturn(DebugLevel.INFO, "@@@@TimeoutDisconnect");

                    break;
                case StatusCode.DisconnectByServer:
                    DebugReturn(DebugLevel.INFO, "@@@@DisconnectByServer");

                    break;
                case StatusCode.Connect:
                    DebugReturn(DebugLevel.INFO, "@@@@Connected");
                    connected = true;
                    break;
                case StatusCode.Exception:
                    DebugReturn(DebugLevel.INFO, "@@@@Exception");
                    photonPeer.Connect(ServerAddress, ServerAppName);
                    break;
                case StatusCode.ExceptionOnConnect:
                    DebugReturn(DebugLevel.INFO, "@@@@ExceptionOnConnect");

                    break;
                case StatusCode.ExceptionOnReceive:
                    DebugReturn(DebugLevel.INFO, "@@@@ExceptionOnReceive");

                    break;
                case StatusCode.DisconnectByServerUserLimit:
                    Debug.Log("玩家人数超载!");
                    DebugReturn(DebugLevel.INFO, "@@@@DisconnectByServerUserLimit");
                    GameObject.Find("UserOverLoadPanel").SetActive(true);
                    break;

                default:
                    DebugReturn(DebugLevel.ERROR, statusCode.ToString());
                    break;
            }
        }

2.フォトンサーバーの構築

1はじめに

Photonは接続が長いのが特徴です。製品とサービスを統合するネットワークエンジンです。また、最も高速で柔軟性があり、使いやすいネットワークエンジンです。PC、Mac、ブラウザ、モバイルなどの複数のプラットフォームで使用できます。ターミナル、コンソール。スケーラブルなMMOG、FPS、およびマルチプレーヤーのオンラインゲームとアプリケーションを確立します。

フォトンアドレス:https//www.photonengine.com/en/server

フォトンエンジンの充電方法
フォトン証明書はパーソナルバージョンとエンタープライズバージョンに分けられます。現在の価格は下表のとおりです。
パーソナルバージョン:
人数無制限、価格は4800元
エンタープライズバージョン:
同時に500人オンライン8900
同時にオンラインで100012500元
無制限の人数19,600人民元
注:同時に100人がオンラインである個人版とエンタープライズ版の証明書は永久に無料です。

PhotonサーバーとUnity3Dクライアント間の通信メカニズム

  1. Photonサーバーにリクエストを送信します
  2. Photonサーバーから返された応答を処理します
  3. ゲームルームの操作を完了する
  4. カスタムイベントを実装する

詳細については、このブログを参照してください:Unity 3D Photon Server

2.Photonサーバーを構成します

Photonアドレス:https//www.photonengine.com/en/server
1. Photon SDKをインストール
し、Photonの公式Webサイトにアクセスして、SDKのv3.1バージョンをダウンロードします。ダウンロードが完了したら、解凍して、deploy、doc、lib、src-serverの合計4つのファイルディレクトリを取得します。Deployは、各プラットフォームでのフォトンサーバーの実行可能ファイルです。docはヘルプファイルです。Libはコンパイルされたdllファイルであり、サーバーをデプロイするときに使用されます。src-serverには、ゲームのデモソースコードが含まれています。

2. PhotonControl.exeファイルを
実行します。PhotonControl.exeを実行し、ツールバーでフォトンサーバーのアイコンを見つけ、右クリックして[デフォルト]-> [アプリケーションとして開始]を選択します(フォトンのバージョンは異なる場合があり、一部はデフォルトです)。 Photonサーバーを実行します。成功後、フォトンサーバーアイコンは青色になります。それ以外の場合は、異常に動作しています。

3. Photon構成ファイル
のセットアップデプロイ中のさまざまなプラットフォームディレクトリの下にあるPhotonServer.config構成ファイルを使用して、Photonサーバーの構成を変更できます。設定ファイルでは、デフォルトノードで最大メッセージサイズと送信の最大/最小タイムアウト期間を設定できます。UDPListenerノードとTCPListenerノードでは、UDP接続とTCP接続を監視するためのIPアドレスと通信ポートを設定できます。Websocket通信の一部の設定は、Websocketノードで行うことができます。アプリケーションノードはより重要であり、各アプリケーションの名前は、通信インターフェイスメソッドが呼び出されるときに使用されます。


4.Windowsシステムのポートとファイアウォールの設定を確認します。 [デフォルト]-> [TestClientの実行]を起動し、クライアントテストプログラムを実行します。実行プロセス中にWindowsファイアウォールプロンプトが表示された場合は、Photon構成ファイルで設定されたプロトコルを開く必要があります。 Windowsファイアウォールポートで。プロンプトが表示されない場合は、必要に応じて、Windowsファイアウォールの詳細設定でインバウンドルールを手動で作成する必要があります。この場合、ファイアウォールがPhotonサーバープログラム用に作成されたインバウンドルールであり、ポートの使用を制限していない可能性があるためです。また、UDPおよびTCP通信用の特定のポートのインバウンドルールを手動で作成できます。

5. Photon異常のトラブルシューティング
PhotonControl.exeを起動するときに、アイコンの[デフォルト]-> [アプリケーションとして起動]をクリックすると、サーバーは一定時間実行後に停止し、アイコンが灰色に変わり、Photonサーバーが異常に動作していることを示します。まず、Photonサーバーのポート設定を確認する必要があります。ポートとファイアウォールの設定の影響を除外する場合は、ログファイルPhoton-Defaultを使用して、Photonサーバーの起動中に例外が発生したかどうかを確認できます。Photonサーバーの異常起動がない場合は、各ゲームサーバープログラムのログファイルを開いて、どのゲームサーバープログラムが異常かを確認する必要があります。

3.フォトンクライアントの開発

1. Unity3DがPhotonサーバーに接続します
。Photon3Unity3D.dllをU3DプロジェクトのAssets / PluginsディレクトリにインポートしますPhotonサーバーと通信するクライアントスクリプトファイルを作成し、IPhotonPeerListenerインターフェイスを継承し、OnStatusChangedインターフェイスメソッドを実装します。Updateメソッドで、PhotonPeerオブジェクトのServiceメソッドを呼び出して、Photonサーバーと通信します。Serviceメソッドを呼び出すことによってのみ、サーバーに正常に接続して通信できます。
ここに画像の説明を挿入

ここに画像の説明を挿入

2. Photonサーバーにリクエストを送信する
最初に、クライアントからサーバーにリクエストを送信するSendMessage関数を記述し、PhotonPeerオブジェクトのOpCustomメソッドを使用してリクエストを送信する必要があります。同時に、サーバーから返された結果を処理するには、OnOperationResponseメソッドとOnEventインターフェイスメソッドを実装する必要があります。
ここに画像の説明を挿入

3. Photonサーバーから返された応答を処理します
。OnOperationResponse関数を実装します。サーバーから
返された応答のタイプは、OperationCodeを介して分析できます。;
Photonサーバーから返されたメッセージを処理する関数を記述します。
ここに画像の説明を挿入

4.カスタムイベント
OnEvent関数の実現、
ゲーム操作の列挙の設定、
カスタムデータパラメータの送信。
ここに画像の説明を挿入

3. PhotonServerの一般的な問題

1. PhotonエンジンをWindowsプラットフォームにデプロイする必要がありますか?
Photonアプリケーションは主に.net環境に基づいており、特定のオペレーティングシステムプラットフォームに限定されませんが、Linuxでの.net仮想マシンの現在のサポートが完全ではないことを考慮すると、Windowsプラットフォームを実稼働環境として使用することをお勧めします。 。

2. Photonエンジンはデータベースのサポートを提供しますか?
Photonエンジン自体は、データベース操作インターフェースを提供しません。開発者は、Oracle、MS Sql Server、MySql、DB2、NHibernateのORMテクノロジー、さらにはNoSQLテクノロジーなどの現在の主流のリレーショナルデータベースを使用することを選択できます。

3. PhotonエンジンとUnityの組み込みネットワーク機能の利点は何ですか?
Photonは、ネットワークライブラリとして単純に理解することはできません。強力なサーバー側エンジンに加えて、Photonはほとんどのクライアントプラットフォームをサポートし、Unityプラットフォームを含むさまざまなプラットフォームでアプリケーションを開発できます。

4. Photonエンジンの基盤となるネットワークはどのモデルを使用していますか?
Photonエンジンのネットワークコアは、主にWindowsプラットフォームでの最も効率的な完了ポート(IOCP)非同期ネットワークモデルに基づいています。

5. Photonエンジンのサーバーは、C ++、VB、またはその他の開発言語を使用できますか?
現在、Photonが提供するAPIはC#言語です。アプリケーションレベルの開発言語としてC#を使用することをお勧めします。C++またはVBを使用する場合はそれを実行できますが、多くの追加作業を自分で行う必要があります。

6. Phontonエンジンは、アンマネージコードに基づくインターフェイスを提供しますか?
Photonアプリケーションは、主にPhotonカーネルによってロードおよび実行され、.NETランタイム環境に基づいているため、アンマネージコードインターフェイスは提供されません。

7. Photonエンジンは、独自のネットワーク同期アルゴリズムを作成する必要がありますか?
同じネットワーク接続上のPhotonの場合、同期なしで順序を保証できますが、ビジネスレベルでの同期は開発者が実装する必要があります。

8. Photonエンジンはどのように詳細に充電されますか?
フォトン証明書はパーソナルバージョンとエンタープライズバージョンに分けられます。現在の価格は次の表に示されています。
パーソナルバージョン:
人数制限なし、価格は4800元
エンタープライズバージョン:
同時に500人オンライン8900元
1000同時に12500元でオンラインの人々
19,600元の数に制限はありません
備考:同時に100人がオンラインである個人版とエンタープライズ版の証明書は永久に無料です

9. Photonパーソナルエディション証明書とエンタープライズエディション証明書の違いは何ですか?
個人版の証明書を使用する開発者には、2つの制限があります
。1。ライセンシーの月収が60,000元未満である
2.ライセンシーの製品がPhotonLOGOを強調している

10. PhotonControlを実行しているアプリは、数秒以内に自動的に停止します。理由は何ですか?
考えられる理由は次の3つです
。1。証明書の検証に失敗した:証明書の有効期限が切れているか、フローティング証明書サーバーが接続されていない
2.ポートが占有されている:たとえば、Kugouがポート848またはポート9090を占有している;
3。アプリケーションプログラム問題があると、Photonエンジンも起動しなくなります。通常、アプリケーションエントリクラスの構築方法や設定方法を確認する必要があります。

11. Thunderなどのダウンロードツールを使用して証明書を正常に取得できないのはなぜですか?
証明書生成サーバーによるセキュリティ検証のため、Thunderなどのダウンロードツールで証明書ファイルをダウンロードすると、ファイルの内容が不正確になり、通常の使用に失敗するため、以下のことをお勧めします。名前を付けて保存方法を使用して、証明書ファイルを取得します。

12. Photonはどのクライアントプラットフォームをサポートしていますか?
現在、Photonは主にUnity、iOS、Flash、Windows、.NET、Android、Silverlightなどをサポートしています。

13. PhotonとUnityの関係は何ですか?PhotonにはUnityが含まれていますか、それともUnityにはPhotonが含まれていますか?
PhotonとUnityは、異なる技術分野に焦点を当てた2つの比較的独立した製品です。Photonは主にサーバー側のエンジン機能をサポートし、さまざまなクライアントプラットフォーム(iOS、Android、WinForm、Cocos2D、Flash、SilverLight、Unityなど)をサポートします)高い実行効率、高い開発効率、シンプルな開発と展開、柔軟な構成という特徴を備えた関連サポートを提供します。Unityはクライアント側のグラフィックエンジンの分野の製品です。現在、PhotonとUnityは戦略的パートナーシップです。前者はネットワークとサーバーの機能に焦点を当て、後者はクライアント側のグラフィックスに焦点を当てています。
PhotonクライアントSDKは、Unityの一部ではなく、Unityプラットフォームおよびその他のプラットフォームのサポートを提供します。同時に、Photonは主流のクライアントプラットフォームと効果的に組み合わせることができます。

14. Photonの上位バージョンは、機能と使用法の点で下位バージョンと互換性がありますか?
Photonのハイバージョンは、使用に関してローバージョンと互換性がありますが、一部の機能はわずかに調整する必要があります。

おすすめ

転載: blog.csdn.net/qq_43505432/article/details/115004335