私は、環境の設計と視覚化の両方にアプローチするためにさまざまな概念を試すことによって、2D「ゲーム」プログラミングでいくつかのテストを行おうとしています。
赤ちゃんのステップでは、Swingを使用し、JComponentのpaintComponent()メソッドを使用してGraphics2Dオブジェクトを取得し、それを使用してゲームボードを視覚化しました。
非常にうまく機能しますが、ゲームモデル全体を繰り返しチェックしてビューを更新する必要があります。基本的には1/10秒に1回、何かが変わる可能性があります。
JComponentでrepaint()を呼び出して、ビューを完全に更新することでビジュアルをペイントします。ゲームボードにあるすべてのタイルの情報を確認し、ボード上のすべてのタイルについて、このデータに従ってそのタイルをペイントします。しかし、ペイントが必要なタイルを約1000〜4000タイルに近づけると、ビュー全体のペイントに100ミリ秒以上かかるため、何かを行うときに一定のラグが発生するようになります。
さて、質問です。私は、このアプローチのパフォーマンスを改善する方法についての方法または意見を探しています。ボード上のすべてのタイルが「目盛り」ごとに変わるわけではないので、このタイルを「塗り直す」必要はありません。ただし、逆に、視覚野(カメラオフセット)を移動すると、画面上のすべてのタイルの位置が変わるため、別の位置で再ペイントする必要があります。また、「would be」アニメーションのその後の実装では、「ハプニング」の有無に関係なく、視覚野を常に更新する必要があります。30 FPSを超える高品質のグラフィックス(またはminecraftのような単純なもの)で実行されている3Dゲームを見るとき、グラフィックスに関してさらに問題が発生する前に、すぐにOpenGLに切り替える必要があるかどうか疑問に思っています。