なぜVRスローはそれほどひどいのですか?





スローは、プレイヤーが仮想現実で試みる最初のアクションの1つです。 仮想コーヒーマグを取り、それを捨てます。 マグカップ、ドーナツ、またはボールが乱暴に回転し始めます。 プレーヤーはすでにトレーニングボットに植木鉢を投げているため、見回す時間はありません。



ジョブシミュレーター
画像






一部のショットは強すぎます。 他のものは非常に弱いです。 1回か2回は、追求されたNPCに侵入することができます。 おそらくVRの最初のレッスン-投げることは間違いなく非常に難しいです。 この感覚を経験したとき、最初はVRでうまくプレイできないと思いました。 制御スキームを習得することは、ゲームの学習曲線の一部であることは当然と考えています。 しかし、同じ動きのスローが完全に異なる結果をもたらす場合、これは非常にイライラさせられます。



スイングを伴う鋭いスローは、被写体の短い飛行で終わります...



私の手の波で水のボトルを投げようとしています
画像






...そして彼の手首のわずかな波は、長い飛行で物体を送ることができます。



手首を少し動かしただけで......
画像






Rescuties:トスゲーム



この夏、私はRescutiesと呼ばれるカジュアルアクションゲームに取り組んでいました。 これは、子供や他のかわいい動物を投げたり捕まえたりするVRゲームです。



世界が仮想現実での私たちの行動に反直感的に反応する場合、これはプレイヤーがプロセスに没頭したり、迷惑になったりすることを防ぎます。 ゲームプレイ全体がスローに関連しているため、Rescutiesは本質的にそれほど不便なメカニズムに頼ることができませんでした。



再考
画像






迷惑はそのようなゲームの設計の不可欠な部分です。 要するに、 仮想オブジェクトの重量を感知することは不可能であるため、VRへの投入は困難です。 アプローチは異なる場合がありますが、ほとんどのゲームでは、仮想オブジェクトの物理学を可能な限りもっともらしいものにする傾向があります。 プレイヤーはオブジェクトをつかみ、仮想的な衝動を与え、飛び去ります。



しかし、ここに問題があります。プレイヤーが自分の手で感じることと、仮想世界で起こっていることとの間には違いがあります。 仮想オブジェクトを持ち上げるとき、オブジェクトの重心と手で感じる重心は一致しません。 筋肉は誤ったデータを受け取ります。



プレーヤーがスロー中に単に特定の方向に手を投げた場合、この不一致はあまり重要ではありません。 しかし、投げるとき、彼は腕を曲げ、手首を回します。 (グッドスローの秘密は何ですか?「それはすべて手首です!」)実際の手を回すと、プレーヤーは仮想オブジェクトに不要な瞬間を適用します。まるで彼が小さなスプーンで投げているかのようです。



これは非常に妥協のない現象です。 多くのVRゲームでは、ユーザーは自分の手から0.5メートル離れたオブジェクトを「ピックアップ」できます。 ボタンを押すと、オブジェクトは手の中に飛びますが、一定の距離を保ち、手をカタパルトに変えます。 7センチと30センチの違いは、手首を動かすと、物体が部屋の周りを飛び回ったり、わずかに前方に押し出されたりすることを意味します。



カタパルトのような手首の動き
画像






Rescutiesでは、プレーヤーは速く飛んでいる子供を捕まえ、できるだけ早く安全な場所に移動させようとします。 従来のアプローチを使用すると、気まぐれな管理が必要になり、ゲームプレイが煩わしくなりました。 「どうして子供を自分の気持ちのままにしておけないの?」



物理的および仮想的な重量



キャストメカニックを成功させるための鍵は、ゲームの物理特性ではなく、ユーザーがコントロールをどのように感じるかを考慮することです。



プレイヤーが保持している仮想オブジェクトの投げる速度を測定する代わりに。 プレイヤー保持しているオブジェクト、つまり実際のオブジェクト、つまり HTC ViveまたはOculus Touch。 彼の手に感じるのは、彼の体重と瞬間です。 そして、彼の筋肉記憶(彼の生涯に発達した身体的スキルと本能)は、これらの体重と瞬間に反応します。



画像

プレイヤーがどの仮想オブジェクトを持ち上げても、プレイヤーが感じる重心は変わらない



物理コントローラーと仮想ウェイトを関連付けて、物理コントローラーの重心を使用してゲーム内の速度を決定します。 まず、この実際の重心がゲームのどこにあるかを判断する必要があります。 コントローラーは、ゲーム空間での位置を報告します。 プレーヤー自身がヘッドマウントディスプレイの下から見て、重心を調整できます。 コントローラに対してこのポイントを追跡する場合、その位置が変化すると速度が計算されます。



このような変更を行った後、テスターはRescutiesをより良くプレイし始めましたが、私はまだ大きな矛盾を見て感じました。



この記事では、プレイヤーに仮想重量に関する情報を送信することについて興味深い考慮事項があります。このアプローチは反対です。コントローラーの重量の物理的感覚を最大化する代わりに、仮想オブジェクトの動作に関する仮想信号をユーザーに提供します。)



タイミング



プレイヤーはどの時点でオブジェクトをドロップするつもりですか?



実際の生活では、投げるとき、指をリラックスさせ、オブジェクトがグリップから抜け出し、指先がそれを完全に制御できなくなるまで正しい方向に押し続けます。 オブジェクトを最後の1秒間にスピンまたはロールできます。



このような触覚フィードバックの代わりに、ほとんどのVRゲームは人差し指の下でトリガーを使用します。 これはボタンよりも優れています。Rescutiesでは、トリガーを20%押すと仮想グローブが約20%圧縮され、100%押すと拳が完全に圧縮されます。 しかし、プレイヤーはオブジェクトがグリップから逃げて指を滑らせるのを感じません。 上記の指のリリースは、単にトリガーをリリースすることで実現されます(おそらく段階的に)。 プレーヤーが指をリラックスし始めたらすぐに、プレーヤーからの投球信号を判断する必要があることがわかりました。 トリガーへの圧力が0%または小さな値だけでなく、実験的に見つかったものまで弱められると、スローが認識されます。



画像



グラフは、キャプチャ-ホールド-スローサイクルにおけるトリガーの圧力の変化を示しています。 この場合、ユーザーはトリガーを100%クリックしません。 これは、HTCコントローラーを使用すると、トリガーを約80%まで簡単に押すことができ、最大100%まで押すためにさらに多くの労力をかける必要があるためです。 最初に、プレイヤーはトリガーを押してオブジェクトを上げます。 その後、圧力はほぼ一定です。 プレーヤーがオブジェクトをキャプチャし、スローのためにスイングしているためです。 ここでは、トリガーセンサーからのわずかなノイズが見えます。 プレーヤーは、オブジェクトを投げたり投げたりするときにトリガーを離します。



信号のノイズとプレーヤーのパルスにより、トリガーを押す力が変動する可能性があります。 したがって、プレーヤーのアクションを認識するためのしきい値が必要です。 特に、これは、トリガーへの圧力(たとえば)が、プレーヤーがオブジェクトを上げたときに記録されたピーク圧力よりも20%低いときに、ゲームがスローを検出することを意味します。 プレーヤーが誤って子供を落とさないように、しきい値は十分に大きくする必要があります。 テスターと私は、試行錯誤によって必要な値を見つけました。 さらに、アクションが低すぎる圧力でキャプチャとして認識される場合、スローまたはリリースを確実に決定するための十分な間隔がありません。 失敗した反復の1つと同じ結果が得られます。奇妙な超高速サイクル「raise-throw-raise-throw」です。



スピードノイズ



正しい速度を測定し、タイミングを改善することで、スローミスマッチの影響を大幅に減らすことができます。 しかし、ソースデータ自体(機器のセンサーからの速度測定値)は非常にノイズが多くなります。 ノイズは、ヘッドマウントディスプレイまたはコントローラーがすばやく動くときに特に顕著です。 (プレイヤーが何かを投げたときに言ってください!)



ノイズを扱うには平滑化が必要です。



移動平均(ローパスフィルターとも呼ばれます)で速度を滑らかにしようとしましたが、その結果、少なくともなんとかして最も遅い(スイング)および最も速い(リリース)スローステージのみが平均化されました。 私のテスターに​​は、まるで彼らが水面下にいるかのように、投げることは非常に難しいように思われました。 (これは私が普段Rec Roomで感じていたものです。)



コントローラーの速度を平均すると、信頼性はありますが遅すぎる結果が得られ、ジョブシミュレーターの感覚とはまったく異なります
画像






最後に測定した速度のピーク値を取得しようとしましたが、少なくともテスターの子供たちは希望する速度で飛行し始めましたが、最後に測定した方向もノイズの影響を受けていたため、常に正しい方向に飛んでいませんでした。



私は最後の数フレームの測定を行い、それらがどのように展開するかを観察する必要がありました。 傾向線を引きます。 測定値の単純な線形回帰により、より信頼性の高い結果が得られました。 最後に、私はいつでもどこでも子供たちを投げることができました!



デバッグ速度の視覚化は、測定された速度の最後の4フレームを赤で、黄色で-ゲームで使用される回帰の結果を示します
画像






Rescutiesでスローをどのように改善したか(tl; dr)





画像



これらの異なるアプローチをテストして比較することに興味がある場合、Rescutiesには「Labs!」メニューがあり、異なるスローモードを切り替え、速度測定方法を選択し、回帰/平滑化に使用する測定フレームの数を制御できます。



しかし、この問題は決して解決されません。 VRゲームでは、さまざまなスローアプローチが使用され、プレイヤーはそれらを好む。 Rescutiesでスローを作成するとき、筋肉の記憶に対する物理的な期待を、空飛ぶ子供の仮想現実の感覚にできるだけ近づけたいと思いました。 今ではすでにはるかに優れていますが、さらに改善したいと思います。



したがって、私のアプローチに関する提案や批判を歓迎します。Twitterまたはメールでいつでも連絡できます。



画像







All Articles