現在、トップダウンのリアルタイムゾンビシューティングゲームを開発しています。これをJavaでコーディングし、物理エンジンとしてJBox2Dを使用しています。私は今週ネットワークをコーディングしており、現在は物理の同期まで行っています。
私は、サーバーが後でそれを承認する限り、クライアントが自由に移動できる予測クライアント/権限のあるサーバーモデルを使用することを計画しています。これには、クライアントが動きのデータを含むパケットをサーバーに送信し、サーバーが待ち時間を計算し、古い状態から世界を再シミュレーションすることが含まれます。
私の問題は、私の現在の物理エンジンであるJBox2D(基本的にはBox2Dのポート)は、ワールドのロールバックをサポートしておらず、ワールドデータをシリアル化するのがそれほど簡単ではないことです。私には2つの解決策があります。現在の物理エンジンを変更または拡張するか、自分で作成することができます。
自分の物理エンジンを作成する理由-
- 不要な機能を削除できます。トップダウンゲームでは、衝突のメカニズムと力の処理だけが本当に必要です。重力は関係ありません。
- 私はコードをよりよく理解でき、ロールバック機能を実装する方が[おそらく]簡単です
JBox2Dを拡張/変更する理由
- 私自身の物理エンジンを書くことは、かなりの量の仕事になるでしょう、それは面倒かもしれません
- JBox2Dには幅広いサポートコミュニティがあり、開発者と協力することができます
- JBox2Dには、衝突検出など、特定の最適化があり、便利です
- これについては既に行われているようにいくつかの作業が行われますが、コードはほとんど共有されていません
だからあなたの意見は何ですか。これは私の最初のゲームであり、私はプロのゲーム開発者ではありません。誰かがその領域ですでに行われた作業へのリンクを提供できる場合(できればJBox2D / Box2D / Javaを使用)。
strictfp
あらゆる場所で使用する必要があり、パフォーマンスに深刻な影響を与えることに注意してください。そうしないと、サーバーとクライアントでまったく同じ結果が得られない場合があります。代わりに固定小数点を使用することをお勧めします。