Neo Sekai

Published on
1分読む
––– ビュー
Demo

大規模マルチプレイヤー環境におけるサーバーパフォーマンスの最適化

NeoSekaiプロジェクトにおける最新の画期的な成果を発表できることを嬉しく思います。この成果は、MMORPGのサーバー管理に革命をもたらす可能性のある、ネットワーク最適化における大幅な進歩です。

効率的なパケット管理

最近のテストでは、MMORPGで多くのプレイヤーが同じ環境内でインタラクションする状況である、1つのセル/シーンで最大480人の同時接続ユーザー(CCU)を扱うことに焦点を当てました。私のアプローチは、パケットを結合することで帯域幅の使用量を大幅に削減し、サーバーパフォーマンスを向上させるというものです。

課題

同じシーンにいる500人のプレイヤーが同時にジャンプすることを考えてみましょう。従来は、このアクションを実行するために、各プレイヤーの個々のパケットを他のすべてのプレイヤーに送信する必要があり、合計で25万ものパケットが必要でした。各パケットはサーバーのパフォーマンスに負担をかけるだけでなく、パケットヘッダーごとに約8〜20バイトの帯域幅を消費します。

解決策

100msウィンドウ(セルティックレート10)内のすべてのアクションを単一のパケットにマージするパケット結合メカニズムを実装することで、パケット数が大幅に削減されます。同時ジャンプの例では、25万パケットの代わりに、各ユーザーにつき1パケットの、合計500パケットのみが生成され、配信されます。

動的なセルティック調整

都市の中心部や平和なゾーンなど、プレイヤー密度が高いエリアでは、ゲームプレイ体験に影響を与えることなく、最大500msのセルティック遅延が可能になります。逆に、戦闘ゾーンでは、セルティック遅延を1msまで短縮することで、リアルタイムの応答性を確保します。サーバーは現在の負荷に基づいてこれを動的に調整し、効率的にパフォーマンスを最適化します。

費用対効果の高いサーバーインフラストラクチャ

このアプローチは、大幅なコスト削減も可能にします。数千ドルもするハイエンドサーバーを必要とする代わりに、私の方法は、わずか数十ドルのサーバーで動作します。このスケーラビリティにより、いくつかの適度なサーバーで数百万人のユーザーをサポートすることが可能になります。

比較分析

これを、MirrorがuMMORPGで行った、高価なサーバーを使用した以前のテストと比較しました。私の方法は、はるかに安価なハードウェアで同等のパフォーマンスを発揮しており、Mirrorのようなライブラリは、同じシーンに密集したプレイヤーがいるMMORPGには最適ではない可能性があることを示しています。代わりに、それらは、コスト効率が最優先される、より小規模で部屋に分割されたゲームにより適しています。

結論

このデモは、カスタマイズされたネットワークソリューションがMMORPGを大幅に改善し、大規模なインタラクションをより効率的かつ費用対効果の高い方法で処理できることを示しています。ネットワーク上でのデータの管理と送信方法を再考することで、過剰なコストの負担なしに、より没入感のある広大な仮想世界を創造することができます。

NeoSekaiのためのスケーラブルなサーバーアーキテクチャ

NeoSekaiでは、プレイヤー密度とインタラクションを効率的に管理し、過度に強力または高価なハードウェアを必要とせずに何百万人ものユーザーをサポートできるように、スケーラブルなサーバーアーキテクチャを設計しました。

セルベースの分割

ゲーム世界は、それぞれがほぼ単一の画面のサイズである複数の「セル」に分割されます。この分割は、ゲームの物理演算とデータ伝送を効率的に管理するのに役立ち、環境をより管理しやすくし、サーバーリソースへの負担を軽減します。

State Server管理

各StateServerは、約100個のセルを担当します。これらのセル内のプレイヤーのすべての物理計算とデータ送信を処理します。このセットアップにより、各サーバーは、多すぎるプレイヤーや多すぎるデータに圧倒されることなく、効果的に負荷を管理できます。

セル間プレイヤー移動

プレイヤーが1つのセルから別のStateServerによって管理される別のセルに移動すると、サーバーはローカルエリアネットワーク(LAN)を介して通信します。この方法により、このような遷移中のレイテンシを無視できるレベルに抑え、プレイヤーにとってシームレスな体験を維持します。

動的負荷分散

システムは、100個のセルの各セット内のプレイヤー密度を監視するように設計されています。あるStateServerのセルが過密になった場合(プレイヤーの高濃度を示す)、自動的に新しいStateServerを起動します。この新しいサーバーは、負荷の一部を引き継ぎ、現在のサーバーの状態と負荷状況に基づいて50-50または60-40に分割します。この動的な負荷分散は、最適なパフォーマンスとサーバーの応答性を維持するために不可欠です。

数百万規模への拡張

このアーキテクチャにより、数百万人のユーザーを処理するためのスケールアップが可能になります。この設定では、1つのホストで容量しきい値に達する前に、約1万から3万人のユーザーを管理できます。これを超えると、追加のサーバーをシームレスに統合でき、パフォーマンスを維持しながらシステム全体の容量を増やすことができます。

費用対効果

このスケーラブルなアプローチは、ハイエンドサーバーへの投資の必要性を大幅に削減します。適度に価格設定された複数のサーバーを利用することで、システムは、単一のサーバーがボトルネックになることなく、負荷を効果的に分散できます。これにより、ゲームのスケーラビリティが向上するだけでなく、インフラストラクチャのコスト効率も最適化されます。