オンラインゲームで同期する

マルチユーザーオンラインゲーム-パケット転送およびクライアントと血清間のコミュニティの交換(クライアントサーバー、p2p、tcp / upd、グラフ)

マルチプレイヤーの血統ゲームを想像してください





プロセスおよびタスク設定の説明:



1)各プレイヤーはクライアントでアクションを実行し、これについて特定の半径のモンスタープレイヤーとゲームオブジェクトに通知する必要があります。

2)プレイヤーは、特定の半径内でのみ3Dオブジェクトとモンスターを見る必要があります。

3)サーバーは、ワールドとモンスターのアクションを実行し、オブジェクトから特定の半径内でこれについてすべてのプレイヤーまたはプレイヤーに通知します。

4)プレイヤーモンスターとアクションを実行するサーバーがメッセージまたはパケットを形成する

5)ゲームメッセージまたは擬似コードパッケージの形式



[player1、player2、server] [time_stamp] [client / server] [geo_location] [game_map_location] [net_key] [player_id] [visible_radius]-

[player1、player2、server]各要素はシリアル化されたオブジェクトです

プレーヤー[

アクション[[hit、player2、fireball]、[run、vector]、[rotate、radius]]、

プレーヤー[param1、param2]、

アイテム[item1、item2]、

メッセージ[文字列、チャット]、

gruops [クラン、パーティー]、

時間[time_stamp]

]



クライアントからサーバーにメッセージを送信し、大きなパケットを形成する場合。



問題は次のとおりです。



1)プレーヤーの同期

2)クライアントサーバーの同期

3)低伝送速度tcp / upd、低伝送速度clien-server

5)サーバーのみがすべてのパッケージを知っている必要があります。

6)プレイヤーは地理的に異なる距離にあります-伝送速度が低下します

7)隣接オブジェクトにのみパケットを送信する必要があります

8)パッケージが失われたり、パッケージが置き換えられたりすることがあります



ゲームレベルのソリューションオプション:

1)ゲーム世界の物理マップに対応する2次元配列[] []

2)この配列にゲームオブジェクトを追加する

3)パケットを送信できる各オブジェクトの可視範囲の追加

4)オブジェクトは、特定の半径内にあるオブジェクトにのみパケットを送信します

6)オブジェクトのグループが形成されます

5)オブジェクトの1つがメインとして指定されます

6)オブジェクトの各グループは各パケットを送信します

7)参照パッケージが作成されます。

8)メイングループオブジェクトは参照パケットを全員に送信します



ネットワークおよびサーバーソリューション:

1)世界地図が取得され、2次元配列が作成されます。セルには、[country] [city]リージョンとそのリージョンにあるすべてのクライアントに関する情報が含まれます

2)これらのポイントからグラフが構築され、各ポイントへの最短経路が計算されます

3)各地域では、複数のクライアントが最高速度で選択されます

4)クライアントの1つが、地域の他の全員のデータ転送サーバーになります

5)地域のサーバーは、チェーンに沿ってメッセージを送信し、サーバー間の最短経路に沿ってメッセージを送信します



1)クライアントはタイムアウトメッセージを送信します

2)メッセージキューを形成するサーバー上にストリームが作成されます

3)メッセージキューもメインサーバーに作成されます



このアルゴリズムとコンセプト全体についてのあなたの意見を知りたい。



All Articles