iPhone の加速度計を使用して、iPad で宇宙船を制御したいと考えています。デバイスは、Multipeer Connectivity Framework を使用して接続されます。2 つのデバイスをリンクするセッション オブジェクトで通常の sendData メソッドを使用して、加速度計データを送信しています。
かなりの遅延が発生していることを除いて、すべてが機能しています。それから私は何か奇妙なことに気づき始めました。メッセージはバーストで送信されています。iPad でメッセージを受信する間に経過した時間のログを次に示します。
経過時間: 0.488062
経過時間: 0.002678 経過時間
: 0.001255
経過時間: 0.001652
経過時間: 0.005365
経過時間: 0.516167 <-- 500ms 経過ギャップ
時間: 0.004351
経過時間: 0.001268
経過時間: 0.001069
経過時間: 48
そして、これらはデータの送信者であるコントローラー (iphone) からのログインです。
経過時間: 0.099938
経過時間: 0.100045
経過時間: 0.099997
経過時間: 0.099978
経過時間
: 0.100027 経過時間
: 0.099975 経過時間
: 0.099997 経過時間: 0.100296経過時間:
0.099719
経過時間: 0.099567
経過時間: 60.0
データは、100ms ごとに起動するタイマーを使用して送信されます。(10回/秒)
この情報を使用すると、データの送信が何らかの形でバッファリングされ、別のレート (500 ミリ秒ごとのように見える) (2 回/秒) で送信されるとしか思えません。
また、フレームワークの NSStream バージョンを使用してデータを送信しようとしました。再び同じ種類の破裂に気付きました。次に、inputStream の独自のポーリングを実行しようとしたところ、バーストは解消されましたが、レイテンシーは同じかそれ以上のままでした。500~1000msくらいの感じです。レイテンシを測定する適切な方法は実際にはありませんが、その宇宙船を制御しようとするのがまったく価値のない経験である限り、それが高すぎることはわかっています:)
私はこの種のプログラミングを行った経験がほとんどないので、助けていただければ幸いです。最終的にどの程度の遅延が期待できるかはわかりませんが、このようなゲームでは 20 ~ 50 ミリ秒の遅延が許容されるように感じます。そして、iPhone から iPad への一方向の遅延について話しています。