タグ付けされた質問 「latency」

3
OpenGLが実際に画面を更新するのにどのくらい時間がかかりますか?
キー入力に応じてさまざまなものを描画する単純なOpenGLテストアプリをCで作成しています。(Mesa 8.0.4、Mesa-EGLおよびGLFW、NVIDIA GTX650を搭載したPC上のUbuntu 12.04LTSで試した)。ドローは非常にシンプル/高速です(回転三角形タイプのもの)。私のテストコードは、フレームレートを意図的に制限するものではなく、次のようになっています。 while (true) { draw(); swap_buffers(); } 私はこれを非常に注意深く計時しており、1つのeglSwapBuffers()(またはglfwSwapBuffers、同じもの)呼び出しから次の呼び出しまでの時間は〜16.6ミリ秒であることがわかりました。eglSwapBuffers()描画されたものは非常に単純ですが、呼び出し後から次の呼び出しの直前までの時間は、それより少しだけ短くなります。スワップバッファの呼び出しにかかる時間は1ミリ秒未満です。 ただし、アプリがキーの押下に応じて描画内容を変更してから実際に画面に表示されるまでの時間は、> 150ms(約8〜9フレーム)です。これは、画面とキーボードを60 fpsでカメラで記録して測定されます。 したがって、質問: スワップバッファーの呼び出しと実際に画面に表示される呼び出しの間の描画はどこにバッファーされますか?なぜ遅れるの?アプリが常に画面の前に多くのフレームを描画しているようです。 OpenGLアプリケーションは、画面にすぐに描画するために何ができますか?(つまり、バッファリングなし、描画が完了するまでブロックするだけです。高スループットは必要ありません。低遅延が必要です) 上記の即時抽選をできるだけ早く行うためにアプリケーションは何ができますか? アプリケーションは現在、実際に画面上にあるものをどのようにして知ることができますか?(または、現在のバッファリング遅延はどのくらいの長さ/何フレームですか?)

3
2人のレーシングプレーヤーの同期を保つにはどうすればよいですか?
私は、テンプルランのマルチプレイヤーバージョンのように、Unityモバイルゲームに取り組んでいます。モバイルプラットフォームが原因で、ネットワークのレイテンシが変動している(通常は200〜500ミリ秒)ように見えます。 2人のプレイヤーキャラクターは同じパスに沿って走っているように示され、障害物を通過するために単純なアクション(ジャンプ、スライド、パワーアップなど)を実行する必要があります。 メッセージが遅れると、ゲームはリモートプレイヤーが障害物を通過したと見なします。これは通常はうまく機能しますが、プレイヤーが障害物によって殺された場合、リモートプレイヤーがローカルプレイヤーと同じ障害物/位置で死んでいるように見せたいです。レイテンシが原因で、リモートプレーヤーは、死を告げるメッセージが届く前に障害物を越えたように見えます。 プレーヤーの同期を維持するにはどうすればよいですか? 死のメッセージが届いたらすぐにリモートプレーヤーをローカルプレーヤーの死の位置に戻してみました。視覚的に不自然に見え、他の同期の問題が発生する可能性があります。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.