2018年、計算研究会ではある程度チームで分担してプログラムを作り、学園祭で発表しました。実際にやったことやその際に発見したノウハウなどを備忘録として残します。

何をつくったか

VRを体験できるアプリケーションを作りました。仮想空間内で弓やビームを打てたり、剣で木を切ったりする簡単なものですが、ジェスチャー認識やUnityのシェーダー機能を使うことにも挑戦しました。

各工程でやったことや大事なこと

0.出し物会議

学祭の2ヶ月前ぐらいからVRを使ってなにかをすることを考えていました。ミーティングで何度か話題に上げることができたのが幸いして、1ヶ月前くらいにはDiscordを使い会議をし、漠然とでも何を作るのかを共有できた状態にありました。また、何を作るのかをドキュメントとして残しました。

ここで大事だったのが、メンバーにVRの特性に詳しい人がいた事です。こういうものは失敗するだとか、こういうのをつくるだけでも楽しいなど知識があったので、ゲテモノを作らずに済んだ気がします。また、VRのコンテンツを自分たちで色々調べたり、実際に楽しんでみたりしたのもアイデアをだす手がかりになっていたかもしれません。

1.機材準備

今回使用した機材は学科や教員の方々から借りたものです。機材と入手方法は以下です。(サークルメンバーでやりくりしたものもある)

  • Oculus Rift : 総合情報センター主催Unity講習会つながりで担当の教員の方から借りた
  • Riftが動くPC : アーキテクチャ研究室から余っていたエンコード用のマシンを借りた

機材を借りたことで「無駄にしては申し訳ない」という気持ちが無意識に芽生えたのがモチベーション維持につながった面もあるかもしれません。
無駄になるといっても何かやって失敗することは罪じゃないので、バンバン借りようという気分で借りるのがいいと思います。

2.開発をする前に

本格的に開発に入る前に、VRで扱うAPIやジェスチャー認識などの絶対に必要な技術について、下調べや本当にそのアルゴリズムでいいのか簡易的に実装してみたりしていました。

リーダー的な立場をしていた身としてはだいたいこれでいけるやろみたいな安心感が生まれたのはこれが要因だと思います。扱うツールはやはり本開発でいきなり使うのではなく、適当に遊んでみたりなにか簡単なものでも作ってみて理解を深めておくのが大事だと思います。

3.開発の分担

今回の開発では、メンバーでプログラム開発を分担しました。(なんかうまくいった。) 以下の分野に分担しました。

  1. ジェスチャー認識
  2. VRのAPIを使う系
  3. VFX(ビームとか)
  4. メッシュをいじる系(木の切断とか剣の軌跡とかをしたかったため)
  5. モデリング(木のモデルとか)
  6. その他

分担をする上で意識的に工夫したのは、メンバーを分野にできるだけ専門化させることです。そうすれば、なんども同じことを違うメンバーに教える必要がないので、労力を節約できます。
また、「アルゴリズムを考えるようなことをやりたい」「モデリングをしたい」「いままでやってなかったことやりたい」などの興味や、「Unityを日常的に使う」「言語への理解が深い」「モデリングソフトの操作に慣れている」「ベクトルを扱う処理に慣れている」といった能力を把握していたので、それを生かした仕事を割り振ったことも効率化になったと思います。
仕事振る時の比重として大事なのは、リーダー的な人はできるだけ考えることに集中できるように実際に手を動かすタスクを最小限にすることだと思いました。メンバーの質問に回答したり、バグの原因究明、実装の概要などを考える時間を増やせます。

あと、仕事の分担について最も重要なのは頼みたい仕事を名指しで振ることだと思います。

4.手を動かした

実装上で大事なのが、仕様を頻繁に相談することだと思います。割とこの手の楽しんでもらう系の企画は実装中にほんとにおもしろいんかこれ?っと不安に取りつかれることがあります。そういうときはメンバーとこれでええんかな?って相談しましょう。Discordで頻繁に話すなどするといいでしょう。

あと、重そうなところは一番最初に取り掛かるのがいいです。ジェスチャー認識などの精度がでなければ使い物にならない系のシロモノならなおさら。

また、UnityであればUnityPackage化などしてバックアップを頻繁にとりましょう。

この段階で来年は、gitを使ったソースコードの管理をやりたいです。google-driveで1120版、1121版みたいなナンバリングを用いた管理はいつか痛い目を見る気がします。(最新版やfinalが大量に並ぶ未来が見える)

5.直前

直前まで調整作業をしていました。たぶん来年もこうなるでしょう。しゃーない。変なテンションになった人がゲラゲラ笑い始めるので、耐えましょう。

6.設営

当日まで調整作業をしていたので、準備日にVRコンテンツは教室に搬入できず、当日に搬入しました。

ここで思ったのは、本番用PCと開発用PCをわけるなどしておくと、準備日に教室にPCを搬入でき、当日にコンテンツデータが入ったUSBメモリを教室にもっていくなどすれば搬入が完了することができたと思います。来年度やるときは2台PCを可能であれば借りましょう。それか用意しましょう。

サブコンテンツ去年使っていたRPGやレースゲームなどのコンテンツも使用しました。そういった資産を活用することも体験の待ち時間の暇をつぶしてもらうのに一役買っていました。

案内用の看板もかなり重要でした。当日慌ててつくった呼び込み用の看板の効果結構なものだった気がします。テーピングなどが結構粗末だったので、準備日などに手の空いた人で落ち着いてつくる必要があったと思いました。

教室内の待機列の管理も大事です。椅子を待機用に設置したり、床に矢印型のテーピングをしたり、看板を設置したり、黒板を利用したりするとよいでしょう。今年は途中からめっちゃ人が来たので慌てて設置しました。

7.当日

当日はVR体験の説明と呼び込みに行くの繰り返しでした。 今回は複数人で開発をしていたので、どういうアプリケーションかを理解しているメンバーが多く、説明係をローテーションすることができました。

気になった点としては、全員が同時に昼食をとると入りづらい雰囲気になるのでやめたほうがいいというのと、関係者待機用の空間を仕切りなどをつくって作っておくことが大切だとおもいました。

8.反省会

反省会をしました。あとで話し合ってみると、意外に成功点や改善点がいろいろでてくるものです。疲れているでしょうができるだけやりましょう。

その他

VRコンテンツ自体

VRコンテンツで工夫して正解だった点は、できるだけUIを作らないという点と使用するボタン操作をできるだけ難しくしすぎないことでした。前者によってコンテンツへの没入感が高まりより楽しい体験になりました。後者によって説明にかかるコストを減らすことができました。

あと運営側の工夫としてリセット機能をキーボードから呼び出せるようにしたのも正解でした。体験時にいちいち「リセットしてみてもらえますか」とユーザーに頼むのではなくこちらから強制的にリセットを呼び出せることによって体験の説明をスムーズに行うことができました。

動画

説明係がいらない動画コンテンツを置いておくのも正解でした。大勢待機するとその他のゲームコンテンツでは対応しきれません。動画であれば多人数の対応ができます。

ただ、内容は簡単なものにする必要があったと思います。今回は急だったので、仕方ない部分もありましたが。

来年度に向けて

来年度もう一度VR体験をしたとしてもたぶん、同じような集客ができると予想できますが、VR体験は一回の体験時間が意外に長く、同時に体験できるのは一人だけです。待機時間を伝えると帰ってしまう人も多数いたので、次は複数人で同時に体験できるコンテンツを作成したいです。スマホアプリやプロジェクタをつかったインタラクティブコンテンツなどを考えています。