私は、プレイヤーが JVM 上で互いに競合する AI エージェントを作成するゲームを作成しています。現在、アーキテクチャは次のようになっています。
- 物理シミュレーションを処理し、プレイヤーからのメッセージを入力として受け取って世界を変更するコア サーバー モジュール。コアはまた、さまざまなルール (戦争の霧を考えてください) に基づいて、各プレイヤーの視点から世界がどのように見えるかを決定します。
- プレーヤー モジュールは、ワールドの更新されたバージョンをコアから受け取り、それらを処理し、その処理に基づいてメッセージを入力としてコアにストリーミングします。
コアは 2 つのプレーヤー モジュールと共にコンパイルされ、次にシミュレーションが実行され、再生して試合の視覚化を生成できる出力ストリームが生成されます。
私の質問は、各プレーヤーが 1 つの Java スレッドで実行される場合、2 つのプレーヤー スレッドが同じ量のリソース (主に CPU 時間だと思います) を取得することを保証することは可能ですか? 私は各 AI が行っている処理の性質を制御していないため、プレイヤーの 1 人が非常に非効率的である可能性がありますが、そのスレッドが非常に多くのリソースを消費するように書かれている可能性があります。公平に競争しない。
これは、ハード リアルタイム OS なしでは不可能であると感じています。JVM はそれに近いものではありません。