それが懸念事項である場合; (マルチスレッドがないことを除いて)使用率の大幅な飛躍を回避するための一般的なコーディング手法またはデザインパターンは何ですか?
ほとんどのゲームエンジンには、1秒間に60回呼び出されるゲームロジック更新関数と、コンピューターにリソースがあるのと同じ頻度で呼び出される描画関数があります(ただし、ロジック更新以下)。
ここでの一般的なコーディング方法は、必要以上にゲームを更新したくないということです。メインループにカウンターを配置して、10秒間に何回呼び出されるかを確認してみてください。1秒間に60を超える更新を実行している場合は、このCPU負荷は必要ありません。
これを提供するゲームエンジンを使用していないように見えるので、解決策を一緒にハックすることができます。メインwhile
ループに現在の時刻を見つけてDateTime
もらい(Javaはミリ秒の精度を提供しますが、十分です)、それを最後のループの更新時刻。十分な時間が経過していない場合はThread.sleep()
、ゲームが次の反復の実行を待機している間、CPUの負担を取り除くために使用してください。
最後のコメント:
(マルチスレッドなしを除く)
CPUスイッチスレッドを使用するとオーバーヘッドが少し発生しますが、適切に記述されたスレッドを多く使用してもCPUの動作が難しくなるとは思いません(作業の合計はスレッドが少ない場合と同じだと思います)。実際、マシンがマルチコアの場合、CPUが必要な部分があれば、ゲームの動作が速くなります(スレッドが互いにブロックするのではなく、並行していると仮定します)。