お世話になっております。
通信対戦で入力データーの通信処理を60FPSでしております。
負荷がかかって30FPSでゲームが動作した時に、
入力の処理のみ60FPSでする方法はありますでしょうか?
(タップの入力のコールバックを受けって1/60秒で入力処理をしたいです)
よろしくお願いいたします。
お世話になっております。
残念ながらゲーム全体としてのフレームレートが落ちている状況において入力処理のみを早く処理するような方法はできないというのが回答になるかと思います。例えば、入力を処理するGameが60fps以内で負荷が無く、GPUのみが何らかの負荷で処理時間が33.2ms(30fps)に落ちている状況などにおいては、Game(CPU)->Draw(CPU)->GPUというサイクルが完了して次に入力を処理するGame(CPU)の処理が開始するまでには、GPUでの遅延時間分だけ処理が遅れることになります。よって60fpsの入力を維持するのであれば、フレーム全体として60fpsを維持するようにする必要がございます。よろしくお願いします。
お世話になっております。
すみません、こちらの調査不足でした。
APlayerController::InputTouch
は、フレームレートに関係なくタッチイベントで呼ばれているようなので、
ここで、入力をキューに入れて、
GetWorld()->GetTimerManager().SetTimer
を使って60FPSでキューを処理する方法で実現できるか確認してみます。
よろしくお願いいたします。