NetDynamics は、信頼性の高い UDP トランスポートのためのデータ指向ネットワーキング プレイグラウンドです。このアプリケーションは、ストレス テストと独自のネットワーク ライブラリのデバッグ用に作成されましたが、オープンソースの代替手段として ENet もサポートしています。
NetDynamics では、最大 100,000 の動的エンティティを生成し、データを効率的に処理し、描画呼び出しのバッチ処理を使用してグラフィックをレンダリングできます。アプリケーションは、順序付けされた信頼できる/信頼できないメッセージ配信をサポートする UDP トランスポートを使用して、ネットワーク上またはループバック上で転送するための大量のデータを生成します。主な目標は、ネットワーク トランスポートの問題のある箇所、ボトルネック、またはバグを特定し、それをリアルタイムで視覚化することです。
全体的なアプローチはエンティティ コンポーネント システムに基づいており、エンティティはデータとロジックから切り離された単なる識別子です。 NetDynamics は、接続間でエンティティの視覚的表現を同期するクライアント/サーバー アプリケーションです。サーバーは、本質的にエンティティのデータであるコンポーネントの大きなバッチをシリアル化してクライアントに送信します。このシステムは、ロジックに使用され、指定されたエンティティのコンポーネントを処理するために使用されます。
サーバーはすべてのエンティティに対する完全な権限を持ち、クライアントは適切なメッセージを送信することによってのみ世界の人口に参加できます。サーバーはエンティティを生成することもできます。また、クライアント間の同期をさらに進めてローカルでエンティティを破棄することもできます。サーバーはエンティティの状態更新を一定の間隔で送信します (デフォルトでは 1 秒あたり 20 回の更新)。クライアントは補間を使用して、位置と速度のコンポーネントに基づいて状態更新間のエンティティの滑らかな動きを複製します。外挿は実装されていないため、パケット損失が顕著になります。
このアプリケーションは、数十万のネットワーク メッセージによるトラフィックを指数関数的に生成するように設計されています。ネットワーク トランスポートの負荷が高い場合にメイン スレッドのパフォーマンス低下を認識するために意図的にマルチスレッド化されていないため、シングルスレッドのトランスポートは、アプリケーションのフレームレートに応じて常に高い遅延で実行されます。トランスポート ロジックを別の専用スレッドに移動するか、他の方法でフレームレートに依存しないようにするとこの問題は解決しますが、それは NetDynamics の目的を超えています。
アプリケーションをダウンロードし、 settings.ini
ファイルに必要なパラメータを設定します。アプリケーションを実行し、サーバーまたはクライアント上でマウスの左ボタンを使用してエンティティを生成し、サーバー上でマウスの右ボタンを使用してエンティティを破棄します。
初期アプリケーションのレンダリングおよび処理パフォーマンスをテストして、ネットワーク ロジックによるフレーム時間の消費の視覚的な違いを取得するには、接続せずにサーバー上にエンティティを単純に生成できます。