6

プラグインをほとんどまたはまったく必要としない、純粋なブラウザベースのゲームとして、ある種のマルチプレイヤーRPGを作成することに興味があります。かなりの研究を重ねて、次のような計画にたどり着きました。ここで参照している技術の一部がすべてのブラウザー(特にIE)で採用されているわけではないことは承知していますが、当面はそれを受け入れたいと思います。

また、MMOはとにかく頑張るという高い目標だと思いますが、過去に同じような方向で小さなプロジェクトをたくさんやったことがあるので、やっとこれをやりたいと思っています。

だからここに大まかな概要があります、私は誰もがこの配置で見ることができる明白な問題について聞いてみたいです:

クライアント: WebGL / Javascript(おそらくthree.js)。ブラウザのローカルストレージを使用してゲームアセットを保持し、ブラウザのキャッシュを削除するとこれらが削除されることを受け入れます。

メッセージ:便利でサイズを小さくするために、Googleプロトコルバッファ を使用してクライアント/サーバー間でメッセージをエンコードします。メッセージ配信はWebSocket経由で行われます。

ゲームサーバー: Pythonのgevent 上で実行されます(多くの同時実行を処理するための優れたソリューションのようです)。ここの設計に基づいて、シャーディングされたパターンを使用して構築されます:

DBサーバー: データベース用のMySQL、ゲームサーバーとDBの間で機能するPHP。

詳細: ゲームサーバーで個々のクライアントを1秒間に約15〜20回更新し、クライアント側の予測を使用してギャップを埋めるつもりです。クライアントは、30fpsの範囲でサーバーにキー入力/メッセージを送信できます。ターン制ではなく、できるだけリアルタイムに近い体験をしたいと思います。私の主な関心事はWebSocketのTCPベースのプロトコルですが、これによりすべてが不可能になりますか?

このソリューションはSOにとって現実的だと思いますか?

どうもありがとう、

4

1 に答える 1

1

通常、localStorageAPIで5MBのスペースを取得します。あなたが本当にサウンド/音楽を使った3Dゲームを持っているなら、それはあなたの資産によって本当にすぐに食べ尽くされるでしょう(最近の良質のmp3はどれくらいの大きさですか?)。アセットの圧縮には非常に積極的である必要があり、ゲームの実行中にローカルストレージにデータを出し入れするメカニズムを考え出す必要があります。

ゲームサーバーとデータベースの間にPHPが必要な理由を尋ねます。ゲームサーバーがデータベースと直接通信して、作業を節約することはできませんか?

あなたのプロジェクトで頑張ってください。

于 2011-10-26T08:57:20.230 に答える