11
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VCIAdvent Calendar 2022

Day 10

[検証]MessageとStateでの情報受け渡し時間の比較

Posted at

はじめに

この記事はVRサービス「VirtualCast」で使用できるVCIという仕組みについて扱った記事です。

要約

  • message式の早押しVCIで押してるのに反応が遅いという報告があった
  • 実験的にmessageとstateで差分を測定
  • messageの方がstateより反映が遅めか同等。さらにmessageはたまに大きく遅れることがあった

ことの発端

私の作ったVCIに、早押しクイズ企画などでの使用を想定した早押し機というアイテムがあります。
このVCIを使用している一部の方から「押したのに反応が遅く、他の人に押し負ける」という意見がありました。

はじめは回線ラグのせいかと思いましたが詳しく話を聞いてみたところ、別の早押しVCIではそのような現象は発生しないという話を受けました。
そのため、その2つのVCIの仕組みを比較し、私のVCIでだけなぜ押してから反応するまでの遅延が発生するのかを実験的に調べました。

2つの早押しVCIの仕組み

上記2つのVCIは基本的な仕組みは同じで、複数いる回答者が持っているボタンを押すと出題者へボタンを押したという情報を送り、出題者の方で受け取った情報をもとに着順判定をするというものです。
ただ、実際のコードを比較してみたところ、2つのVCIでは早押しの際の情報の送り方に違いがありました。

私のVCIは以下のようなMessageで情報を受け渡す方式のVCIとなってます。
Message式早押し機.jpg
一方、遅延が発生してなかったVCIではStateの変更と監視により情報を受け渡す方式となっています。
State式早押し機.jpg
(Stateがどこにどのように保存されているかはあまり理解してないのでそのへんの図は適当です)

上記より、messageでの情報送信はStateより送信速度が遅い、または送れるときがあるのではないかと仮定し、今回検証用のVCIを作成し試しに測定してみることにしました。

検証内容

messageとStateの速度について以下のような方法で時間比較をしました

  1. 測定開始の時刻を記憶
  2. 各ユーザーに対し測定開始の合図をMessageで送信
  3. Messageを受け取ったユーザーは以下の2つを実施する。(もしかしたら実行順でタイムが変わるかもしれなかったので、どちらを先に実行するかはランダムで決めてます)
    1. Message式の方法で情報を送信
    2. State式の方法で情報を送信
  4. 各方式でデータを受け取った時刻から測定開始の時刻を引き、かかった時間をそれぞれ記録
  5. 時間をVCI上に表示

図に表すと以下のようになります
実験方法.jpg

検証結果

以下、何回かやってみた結果の抜粋となります。単位は秒で、色が付いてる場所が差があった場所です。
(私のだけやたら早いですが、これは自分に送るときは回線を通してないためだと思います。)
結果_モザイク.jpg

計20回くらいは試しましたが、上記のようにMessageがStateと同じか若干遅れるという結果になりました。
逆にStateが遅れることは一度もありませんでした。

また、エビデンスは残ってないですが、過去に作ったVCI(開始の合図の段階で送り方をMessage式とState式でそれぞれ分ける方式)で検証した際は、特定の人だけたまにmessage方式が秒単位で大幅に遅くなる現象が発生しました。その際もState方式は遅れることはありませんでした。
おそらく私のVCIで遅延が発生していた人もこのケースだったのではないかと思います。
(今回はその人と出会えなかったため未検証となってます。今回のVCIで検証できたら追記します)

まとめ

  • message式の早押しVCIで押してるのにつくのが遅いという報告があった
  • 実験的にmessageとstateで差分を測定
  • messageの方がstateより反映が遅めか同等。ただしmessageはたまに大きく遅れることがあった

上記の結果となる技術的な理由はわかってないですが、もしわかったら追記するか別の記事を書こうと思います。

11
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?