C#でGDI+を使用して簡単なゲームを作成しています。
まず、ゲームループとレンダリングループが必要です。これらを2つの別々のスレッドに分割することにしました。動作しているようで、非常に高速に実行されますが、ここで質問しているのは、ゲームループにタイマーを使用して、特定のフレームレートで実行させるためです。
これには明らかに、アクターの移動速度を確認できるという利点があります。しかし、Unity3DのUpdate関数のように、私のゲームループはできるだけ速く実行されます。アクターが常に同じ速度で移動するようにするには、移動速度にフレームのデルタ時間(各フレーム間の時間)を掛けるだけです。
私のレンダリングループも可能な限り高速に実行されます。これは良いゲームループですか、なぜですか、なぜそうではありませんか?
// Constructor
public FormDisplay()
{
// Create a thread object, passing in the GameLoop method
var gameThread = new Thread(this.GameLoop);
// Start the game thread
gameThread.Start();
// Create a thread object, passing in the GameLoop method
var renderThread = new Thread(this.RenderLoop);
// Start the render thread
renderThread.Start();
}
private void GameLoop()
{
while (true)
{
// TODO: Insert Game Logic
}
}
private void RenderLoop()
{
while (true)
{
// TODO: Insert Render Logic
}
}