応用
MMO に取り組んでいて、問題が発生しました。私が構築した MMO サーバーは高速で、UDP ソケットで最大 50 ミリ秒ごとにゲーム クライアントにメッセージをローカルに送信します。現在のメッセージ システムを介したサーバーからクライアントへのメッセージの例を次に示します。
count={2}body={[t={agt}id={42231}pos={[50.40142117456183,146.3123192153775]}rot={200.0},t={agt}id={4946}pos={[65.83051652925558, 495.25839757504866]}腐敗={187.0}}
count={2}, 2 = number of objects
[,] = array of objects
シンプルなテキスト パーサー、コードを作成しました: http://tinypaste.com/af3fb928
私は次のようなメッセージを使用します:
int objects = int.Parse(UTL.Parser.DecodeMessage("count", message));
string body = UTL.Parser.DecodeMessage("body", message);
for (int i = 0; i < objects; i++)
{
string objectStr = UTL.Parser.DecodeMessage("[" + i + "]", body);
// parse objecStr with UTL.Parser.DecodeMessage to extract pos & rot and apply to objects
)
問題
オブジェクトが 60 以上になると、パフォーマンスが劇的に低下します。
質問
MMO やリアルタイム オンライン ゲームで、クライアントとサーバー間でメッセージをパッケージ化して読み取る標準的な方法は何ですか?