正宗VR楽しいですよね。7日間で7作品、VR(ヴァーチャルリアリティ)コンテンツを作ってみたので、その報告をします。そんなことをしたのかもともと、「VRをやってみたい」というのと「Unityをそろそろできるようにならないと」っていうのが別軸であったんです。私、ActionScript3などでゴリゴリに開発はできるんですが、UnityとかXcodeとかのビジュアルで開発していくスタイルがどうにもこうにも苦手で、それこそどっちも10年近く挑戦しては最初の段階でつまづいて、というのを繰り返してきてたんです。難しく考えないと前に進めないタイプなので、巷にある「誰でもカンタンにできちゃう初心者本」をいくら読んでも、全然理解できないでいたんです。いい歳して「できんできん」と唸っているばかりなのも格好悪いだけなので、なんとかしてできるようになる方法はないかと考えた結果、「Unityできるようにならなければ死ぬと思い込もう」というナイスアイデアを思いつきました。今までも、Unityの初心者本を買っては、なぜこのチェックを外すのか、なぜこの文字列を書くのかわからないまま、本に書いてある通りにUnityを触りながら、チャプター3くらいまで読み進めたところで本業が忙しくなってそのまま、を繰り返してきましたので、その失敗をもうこれ以上は繰り返さないよう、まずはどんなに忙しくてもせめて1日1回はUnityを立ち上げて「何かしら新しい操作を覚える」ことを目標にしようと決めました。そこで、せっかくやるなら以前からやってみたかったVRコンテンツも作ってみたいと思い、ういにゃんさんの、【Unity】あの素人がOculusでVRクソゲーを7日間作り続けてみたというコンテンツに触発されて、目標を少し調整し、「VRコンテンツを1日1個必ず作る7日間」をやってみたのです。ういにゃんさんのやつほどすごくはないですが、自分なりにいろいろと知見や発見を得たので、それを書きとどめておこうと思います。最初の2日間は、アセットストアからダウンロードした建物のモデル群を空間に配置して、その中をVRカメラで動く、みたいなことで精一杯でした。この動画は2日目のもの。配置しただけの街のモデルをVRで移動しているだけの単純なものをこしらえることがやっとでした。「せっかくVRなので、海の底に沈んだ街中を歩きまわれるようにしよう」という壮大な計画があったのですが、Unity触って1日目2日目程度の技量の私では、海底っぽいシェーダーを作ることも、泡のパーティクルも、魚の群れの動きの制御も、1日や2日では作ることの閾値が高すぎたので早々に諦めています。このときは、狙ってた海中の表現が作れなかったことが悔しかったのですが、後から考えると、できるだけ挑戦はするものの無理だと判断したら1日1コンテンツのほうを優先させる、という判断は、無理なく続けていけるひとつの材料になり、結果的に自分のスキルアップに繋がったと思いました。無料アセットの果物を気に入って、果物で遊んでいます。この3つのコンテンツはけっこうお気に入りです。後述しますが、「ふだん手元にあるものが大量」という体験はVRにすると理屈抜きで楽しいものでした。なんてことないノウハウですが、こういうのは実際に作って体験しないと、ゼロからは得られないですね。それと、無料アセットの品質がそのままVRの体験の質に強く影響することを知ったので、テクスチャの質が出やすい建物を避けて、テクスチャだけでも多少はごまかしが効く自然マターなものに背景を変更しています。後期Unityの操作にも慣れてきたので、もう少し高度なことに挑戦しようとしています。キャラクターアニメーションの練習として、フォーオナーのようなメレー系の体験を作ってみたかったのでVR剣闘というものを作りました。これは1つの失敗と3つの大きな知見を得ました。失敗したのは、Unityのステート管理のお作法がわからず、動きが盛大にバグったこと。こちらが剣を構えたら、女剣闘士も警戒して戦闘モードに、というシナリオでしたが、キャラクターの移動ロジックにステートの処理まで加えてしまったことで管理が大変になったためバグりまくりました。このへんは追い追い、Unityではどうするのがベストプラクティスなのか探っていくのは、今後の楽しみとして残しておくことにしました。知見として得られたのは、メレー系のアクションはVRではユーザーはチープな体験になってしまうこと。それと仮想とはいえ相手が攻撃の構えでこちらに突進してくるとけっこう怖いこと、三つ目は忘れました。メレー系のアクションなんですが、ボタンを使う普通のコンピューターゲームと違って、身体的に実際に動けば技とかを繰り出せるので、「上段をフェイントにして脇腹あたりをすくい上げる」とか「回転しながら薙ぎ払う」みたいなカッコイイ技を好きなだけ繰り出せるのが楽しみなんですが、VRなので手応えがスカスカなんです。これって当たり前のことですが、メレー系では致命的で、「相手の剣にあわせて剣をぶつける」ですとか「盾を押し付けるようにして相手の攻撃をはじく」みたいなことができないんですよ。普通のボタンでやるビデオゲームなら、ボタンを押して攻撃した結果、剣をはじかれる画面を見せられたら「剣をはじかれたな」みたいに脳は判断できるんですが、VRの場合実際に手応えがなくて剣がすり抜けるので、脳はどうやってもスカスカとしてるなとしか認識してくれなくて、結果としてボタン押すより体験が貧弱になってしまうんです。このへんは、現在でも各デベロッパーはメレー系ウェポンをビームサーベルにしたりチェーンソーにしたり、「切ってすり抜けてもおかしくないモチーフ」にするなどして工夫していますが、今後工夫の余地があります。最後に作ったのがVRヌンチャクゴルフとういうものですが、これはUnityの物理演算の限界が知れました。したら、私の作った鎖モデルのほうのバグかもしれませんが、手元でヌンチャクを振り回してるとバグって挙動がおかしくなります。これは、おそらくUnityでの物理計算の精密度が、VRのハンドトラッキングの精度とマッチするほど精細になっていないためだと思われます。これは今後、手元の物理モデルは自分でスクリプト書いて制御していくのが手っ取り早い解決方法ですね。ちなみに、仮想世界の中でどうしても様々な制約を受けた状態で楽しまないといけないVRコンテンツの技術的な性質上、スポーツ系コンテンツは相性いいものがたくさんあります。ゴルフもかなりVRと相性いいと思いました。その他、見えてきた課題そのほか、自分で作る以外にもSteamに並んであるVRコンテンツを20数個体験して得た知見を箇条書きにしておきます。ハードによるところが大きいものは省いています。ハードの進化によって補える部分も出てくるかも知れませんが、あくまでVRコンテンツ側の制約や課題などを並べています。言われているがVR酔いが激しい。自分3D酔いにはかなり強いほうだ(酔ったことがない)が、それでもVRで体は移動しないのに画面の移動があると酔う。慣れるまで時間がかかったので、3D酔いに耐性のある自分でさえこれなのだから、普通の人が遊ぶのはとても無理だと思う。2丁拳銃は楽しい!ビデオゲームだと2丁あっても結局は1点をエイムするだけなのに対して、VRでは本当に左右に弾幕張れたり、ノールックで後ろに撃てたりと、あこがれのガンアクションが可能。「サイレント」というゲームはよくわかってて、前をサブマシンガンで制圧しながら横から迫る敵をノールックでハンドガンでヘッドショット、とか映画でやってみたかったあれやこれやが実際に楽しめる。物体が巨大であることと、大量であることは大正義。VR空間には、とにかく巨大な動くものを。