ゲーム用のサーバーをプログラミングしていますが、移動速度を維持する方法がわかりません。コンピュータで何が実行されているかによって、動きが非常に速くなったり遅くなったりします。サーバー用に独自のデルタ メソッドを作成しようとしましたが、うまくいきません。サーバーは AWT と Kryonet を使用してプログラムされているため、更新時に Slick デルタ変数を使用できません。
動きを維持する方法を知っている人はいますか?
ゲーム サーバーには、明確なグローバル タイムが必要です。System.currentTimeMillis(); を使用することをお勧めします。
その場合、時間に基づいた方程式に基づいて移動する必要があります。マシン上のループは正確な速度で実行されないため、以前の時間値から System.currentTimeMillis() を差し引いて、渡されたデルタ時間を取得する必要があります。動きの方程式でその値を使用して、一貫した外観の動きを取得します。物理 (つまり運動) を計算している場合は、通常のオイラー方程式ではなく、ルンゲ クッタ次数 4 の方程式を使用する必要があります (オイラーは時間の経過とともにエラーを圧縮します)。
その他の役立つリンク: