ぼっちプログラマのメモ

UE4とかUE5とかについて書いたり書かなかったり。

VRコンテンツ開発について雑多に色々描いてみる

この記事はOculusRiftAdventCalendar2016 16日目の記事です。
qiita.com

はじめに

f:id:pafuhana1213:20161215213712j:plain

アドベントカレンダーに何を書くかギリギリまで決まらなかったので、
「酔った勢いで」VRコンテンツについて雑多に普段考えてることとか書いていきます。

UE4に特化した話はあまりしません。その辺りはまた別の機会にちゃんと纏めます
プレゼンスの話もあまりしないです。その辺りは@GOROmanさんにおまかせします
あらゆるVR開発で役に立つ、という話ではないです。
環境によって最適解は変わってきます。あくまで参考程度に読んで頂けると幸いです。

ではでは、雑多に書いていきます。

開発に関わる全セクションに良いVRと酔いVRを体験させましょう

VRに求められるクオリティが年々増しているかと思います。
どのコンテンツ製作でも言えますが、開発規模・複雑性・ボリュームが増えるにつれ、
分業化の流れに乗らざる負えません。

ここで問題になるのは
チーム内での「VRをあまり体験したことがない人」の割合の増加です。
「いやいや、そんな人いるわけないでしょ!?」と感じる方がいるかと思いますが、
分業化が進むと、関わっているコンテンツについてよく知らない人は増えてきます。

分業化自体を批判しているわけではありません。作業効率の面ではいい所が多いです。
ただ「現時点では」VRコンテンツ開発においては、それが不要なコストの原因になることが多いです。

「現時点では」VRコンテンツを制作する上での注意点・制約は数多くあります。
また試行錯誤の真っ最中であるため、「現時点では」最適解は見つかっていません。
という所で、実際の開発では作っては壊しが多くなりがちです。

こんなブログを見に来るような方でしたら、注意すべき点はご存知かと思います。
問題となるのは、VRのことをよく知らない人です。

誤解のないよう書いておきますが、
その人達がVR酔いの原因を作る!といった事に対して注意したいわけではありません。
よく知らない人からの意見が革新的な酔い対策に繋がる可能性も否定できないからです。
(個人的には、VR酔いなどのVRならではの知識を持っていて欲しいですが…)

今回問題にしたいのは、
VR酔いを解決するための作業に対しての納得度・理解度についてです。

VRについてよく知らない、VR酔い何それ美味しいの?という人からすると、
「VR酔いの原因になってるから至急修正して!」と急に言われても
理不尽以外の何物でもないかなと思います。人によっては、
説得するために多大なコミュニケーションコストを支払う必要が出てきます。

長々となりましたが、ここで言いたいのは
「コストを割いてでも、開発に関わる人には良いVRと酔いVRを体験させた方がいいよ」
ということです。

荒治療感がありますが、VR酔いを実際に体験させた方が後々の説得が円滑に進みます。
チーム全体で「VR酔いはやばいよねー」という認識を持つようにした方がいいです。


新たな体験を作るのか、新たな遊びを作るのか

VRコンテンツでよく話題にあがるのはプレゼンスです。
少しでもユーザに違和感を与えると壊れてしまう、とても繊細なものです。
「触感がない」「ストーリーを一方的に語られる」「モーションが不自然」などなど…
プレゼンスの維持に苦戦している方はとても多いかと思います。

じゃあ、プレゼンスの維持に重点を置いていないとVRコンテンツとして失格なのか?
それは、体験者がVRをどう見ているのか、何を期待しているのかに寄ります。

VRを今までにない新しい体験としてみている方は、やはりプレゼンスを重視します。
一方、VRを新しい手段、例えばwiiリモコンのように遊びを拡張するものと
考えている人は、プレゼンスよりもシンプルに面白さなどを重視しています。

これらを踏まえると、VRコンテンツを作る際は
どちらの層をターゲットにするべきかを十分に考慮した方がいいです。

例えば、Mikulus。
間違いなく新しい体験であり、VRの可能性を強く感じます。
ただVRでワイワイ遊びたい、アドレナリン全開で遊びたいという方とは
相性はあまりよくないかもしれません。

例えば、THE PLAYROOM VR。
非対称なゲーム性はまさしくVRによる新たな遊びです。
逆に言うと、ゲームゲームしているので新しい体験としては
捉えない方がいるかもしれません。VRを被っていない人との協力プレイは
プレゼンスを破壊しているという方もいるかもしれません。

例えば、Allumette。
急に何も干渉できない世界に放り出されて一方的に人形劇を見させられるという、
プレゼンスの維持という観点から言うと、お作法を全く守っていないコンテンツです。
しかし、そのストーリー・演出は多くの人に感動を与えています。
「干渉できない!面白くない!」という方は見たことがありません。


何が言いたいかというと、
「このコンテンツは新しい体験(遊び)ができますよー」という事を明確にすることで、
体験者とコンテンツの相性との不一致を避けることが大事
、ということです。

中途半端にどちらの要求を満たそうとすると作業コストが膨大になりますし、
どちらの層からも満足されない可能性が出てきます。

…個人的にはちょっとしたプレゼンスの欠如が気にならないぐらい
面白いVRゲームがもっと増えたらいいなぁと思ったりします。
(お前が作れ禁止)

非VR環境でも最低限のデバッグをできるように

急にプログラマ寄りの話になります。

VRコンテンツを作る上で、モニタ上ではなくHMD上でチェックする事は重要です。
VR酔いは勿論ですが、モニタとの見え方の違いなど注意すべき点は多々あります。

ただ、VR環境がないと全く動作チェックができないのは避けた方がいいです。

開発者全員にVR環境があるのがベストですが、それが難しい場合が多いかと思います。
VRがないと動作しない場合、開発やテストする際にHMDを奪い合うことになります。
また、稀にしか起きないバグを追う際は悲惨なことになります。

これらの無駄を少しでも減らすためには、非VR環境でもチェックできるような
デバッグ機能は用意するべきです。

例えば、360コンのRT, LTを握る操作に割り当てたり、
PCモニタ上でステレオ表示することでパフォーマンスを測れるようにしたり等です。

UE4の場合は、以下の手順を踏むことでVR環境をエミュレートできたりします。

1. -game -emulatestereo -res=2160x1200 でゲームを起動
2. r.vsync 0 でVsyncをoffに
3 r.screenpercentage 137

ちょっとした事ですが、作業効率が大幅に上昇するのでするべきだと思います。
あ、勿論最終チェックはVR HMD上でしましょう

ハンドコントローラを使ったコンテンツの設計について

ViveコンやOculus Touchなどのハンドコントローラを使ったVRコンテンツを作る際は
手用のクラスに処理をなるべく書かない」ことを意識した方がいいです。

例えば、掴んだ物によって変化する動作を手用のクラスに書いた場合、
掴める物が増える毎に手用のクラスが複雑化していきます。
また複数人で作業する場合は、手用クラスのロック解除待ちや
マージ問題など様々な問題が発生します。

その為、手には掴む・離す・使うインターフェイスだけを書いて、実際の挙動は
掴まれる側に書いた方が色々と都合がいいことが経験上多いです。
(なんと、その設計で作られたサンプルプロジェクトがあるみたいですよ!)
pafuhana1213.hatenablog.com


ただ僕も試行錯誤の途中なので、これがベストだとは思っていません…。
今後に向けて意見交換ができたらいいなぁと思ってます。
(VRコンテンツをリリースした方にノウハウや苦労話を
 語ってもらう勉強会を開きたいなぁ。少しクローズドになるかもですが)



とりあえず、酔いが冷めてきたのでここまで!
明日は@yutoVRさんの「ハンドコントローラーで日本語入力」です!
(某氏のVRキーボードとの違いが気になります…!)