タグ付けされた質問 「scalability」

6
ネットワークゲームの書き方 [閉まっている]
基づいて、なぜそれがMMOを開発するのは難しいのですか?: ネットワーク化されたゲーム開発は簡単ではありません。遅延だけでなく、チート防止、状態管理、および負荷分散においても克服すべき大きな障害があります。ネットワークゲームを作成した経験がない場合、これは難しい学習課題になります。 ソケット、サーバー、クライアント、プロトコル、接続などに関する理論を知っています。 今、私はどのようにネットワークゲームを書くことを学ぶことができるのだろうか: 負荷の問題のバランスをとる方法は? ゲームの状態を管理する方法は? 物事を同期させる方法は? 通信とクライアントをリバースエンジニアリングから保護する方法 遅延の問題を回避する方法は? ローカルで計算する必要があるものとサーバー上のもの ... これに関する良い本、チュートリアル、サイト、興味深い記事、またはその他の質問はありますか? 幅広い答えを探していますが、違いを学ぶには特定の答えでも構いません。

7
ゲームワールド内の大量のエンティティをシミュレートするエレガントな方法
いくつかの機能を提供する多くの(多くの)エンティティが存在するゲームがあると仮定します。それらのすべてが常に必要なわけではなく、すべてのフレームで考慮する必要もありません。この問題が存在する私が取り組んでいる具体的な問題は、臓器を含む身体の詳細なシミュレーションです。 ゲームでは、各クリーチャーはより小さな部分(胴体、脚など)に分離された自身の体を持ち、これらの部分には体の中で特定の機能を果たす器官が含まれることがあります。臓器が現在目的を果たしているかアクティブであるかは、実際には明確ではありません。結局のところ、動物には空腹がある可能性があるため、何も消化する必要はありません。各フレーム内のすべてのオブジェクトをチェックまたはシミュレートするのは非常にばかげており、世界に多くのクリーチャーがいるとすぐに非常にコストがかかります。そのため、更新が必要なオブジェクトとそうでないオブジェクトを賢く区別する方法を考えていました。 私が思いついたことは、少なくとも大丈夫なソリューションのようです。シミュレートする必要のあるオブジェクトが存在する「アテンションスタック」と呼ばれる単純なキュー/スタックを作成します(基本的に、読み取られるとすぐに各要素が削除されます。順序は無関係です)。その必要性の注目は、単にスタックに自らを置くオブジェクトまたは他のオブジェクトによってそこに置かれています。これらのオブジェクトは、おそらくsimulate()関数を備えたシンプルなインターフェースを実装するでしょう。 私の以前の消化の例に適用すると、これは次のことを意味します。 プレイヤーはインベントリから食べるもの(パンだと仮定)を選択し、キャラクターの口に入れて、口を注意スタックに置きます。次のフレームでは、スタックから口が取り出され、そのsimulate()関数が呼び出されます。口なので、ここで噛むことをシミュレートするのが妥当でしょう。これは、食べ物を飲み込む準備ができると判断するまで、口がスタックの上に置かれ続ける数フレームの間続く可能性があります。この場合、口は噛んだパンを胃に入れます(直接そこに行かないことは知っていますが、単純化のために食道は省かれています)。これも注意スタックに置かれます。次のフレームでは、消化プロセスのシミュレーションが開始されます。残りの必要な器官についても同様です。 これに関する予測可能な問題は、アイドリングオブジェクトです。眠っている動物はこの良い例です。眠っている動物をスタックに置き、毎回目を覚ます必要があるかどうかを確認することで、前述のように行うことができますが、それが唯一行われているので無駄に思えます。オブジェクトをより効率的にアイドリングするために、特定の時間に実行されるジョブを保存する一種のスケジュールを追加することを計画していました。動物が眠りにつくと、動物が眠りについた後、一定の時間だけスケジュールされる仕事をそのスケジュールに入れます。このジョブは、眠っている動物を再びアテンションスタックに配置します。ここで、注意スタックにない睡眠動物は、AIがシミュレートされていないため、何かに攻撃されるのを逃す可能性があります。 今、私は正直、これが経験不足のためにこの問題のエレガントな解決策に近いかどうかわかりません。使用可能なものに近いですか?これは通常どのように行われますか、誰かが提案やより良い解決策を持っていますか?

4
MMOで負荷分散はどのように達成されますか?
負荷を軽減するために、単一のシャードまたはレルムの処理を複数のサーバーで実行できることがMMOの一般的な要件だと思います。すべてのプレイヤーとすべてのNPCが相互作用できる統一された一貫した世界を維持しながら、これをどのように行うことができるのか興味があります。 私の質問は、MMOでロードバランシングをどのように達成するかです。 このテーマに関する知識を向上させる方法に関するリンク、書籍、または一般情報も歓迎します。

6
ゲームエンジンで高度な技術を使用しないオプションを追加する理由はありますか?
私はゲームエンジンを開発しており、異方性フィルタリング、アンビエントオクルージョン、アンチエイリアシングなどのゲームテクノロジーを発見し、研究しています。 通常、ゲームでは、これらの設定のオンとオフを切り替えることができます。ただし、これらの設定がプラスのみを追加する場合、開発者のゲームエンジンでこれらのトグル値を追加する理由はありますか? パフォーマンスが主要な要因であることは理解していますが、これらの設定を常に変更できる理由は他にもありますか?

3
ログインサーバーをゲームサーバーと区別する必要がありますか?
MMOサーバーを作成することを考えており、他のゲームがどのようにネットワークを構築しているかを見てきました。私が気づいたことの1つは、ログインサーバーとゲームサーバーが常に存在することです。 私はまだこれを行うべきかどうかを決定していますが、最初にいくつかの意見を聞きたいです。これの利点は何ですか?また、ログインサーバーはゲームサーバーとどのように通信してログインを処理しますか?

4
MMOサーバーのゲームログ形式
クラスター/シャード全体のゲームイベントのログ(エラー/デバッグログとは対照的に)は、ライブ運用環境にある商用MMOにとって非常に役立ち、顧客サービスの重要なサポートと履歴分析の手段を提供します。 私が現在取り組んでいるプロジェクトは、リレーショナルデータベースを使用してすべてのゲームイベントログを保存しますが、その方法はうまく機能しますが、ログの読み取り専用、時系列の性質により、より効率的なストレージ形式が可能になるようです。 ただし、カスタムバイナリログ形式の構築について学習を開始する場所がわかりません。カスタムログ形式を作成した経験や、この件に関する推奨論文/記事はありますか?

5
MMORPGなどの動的な世界を水平方向にスケーラブルにする方法はありますか?
500プレーヤー以上のオープンワールドで、20更新/プレーヤー/秒の速さでデータが変化することを想像してください。前回同様のMMORPGで作業したときはSQLを使用していたため、常にDBにクエリを実行できませんでした。代わりに、すべてのプレーヤーをDBからメモリにC ++オブジェクトとしてロードして使用しました。つまり、垂直方向にスケーリングされました。代わりにそのサーバーを水平方向にスケーラブルにすることは可能でしょうか?その量の更新を同時にサポートするように設計されたデータベースはありますか?

2
帯域幅を低く保つためのMMO技術、アルゴリズム、およびリソース?
現在のMMOがアクションと移動データを圧縮からクライアントでの処理にどのように処理するかに関するリソースとドキュメントはありますか?動き予測アルゴリズムのリソースはありますか? 私はwsadの動きがあり、レイテンシを低く保つことに重点を置いているものに特に興味があります。また、さまざまなタイプのMMO(ネットワークに関して)のパケットレートとサイズは何ですか。 プレーヤーが到達できない場合、または後でパケットを確認できない場合に、パケットレートをスケーリングしたり、一部のパケットを完全に無効にする方法はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.