Jah524’s blog

気が向いた時に技術的なことを書いたりします

VRハッカソンに参加した

都内で行われたVRのハッカソンに出てきました。

www.moguravr.com

といっても自分はUnityやUE(Unreal Engine)等のエンジニアではないので、ひたすら機械学習をしていました。
記事のタイトルを二度見するくらいには何を言っているのかわかりませんが、作成物の項まで読んでいただければ多分わかります。
この記事の内容としては、私達の作成物のちょこっとの紹介と、VR関連のハッカソン参加者はネット環境に気をつけよう!というのが主となっています。

どんなイベントだった?

VRアプリを作って、試遊会してお互いに楽しむ、という内容のものでした。
もちろんイベントにスポンサーがつくタイプのハッカソンですので、特定のデバイスを活用したグループを対象に豪華賞品などが贈呈されるようです。
記事を書いてるこの段階で、どのチームが優秀賞なのか決まってないので、興味がある方は調べてみてください。

会場は東京テレポート駅駅近くのMONOというコワーキングスペースでの開催でした。
時間は31時間が与えられて、その時間で四苦八苦、七転八起を楽しむというイベントでした。

流行?

自分はVR分野に詳しいわけではありませんが、なんとなく感じた流行を書いてみます。
HTC VIVEがいくつか(5台ほど?)貸し出されたというのもあるかもしれませんが、持ち込みで参加する人達もおり、今までVRといえばOculus DK2だらけだったのが雰囲気変わったかな、という気がしました。
Oculus CV1での参加も多かったのでDK2率は30~40%?ほどだったかと思います。
今後PSVR等も出てくるので、今年の後半から乱戦が勃発する感じになるのでしょうかね。

またハッカソンでperception neuronの貸出等もあり、その他に昔ながらのLeap MotionなどでVR世界の中にアクセスする、という内容が多かったと思います。
HTC viveはコントローラーがついているので、vive組はそれをそのまま使うチームがほとんどだったと思います。

どんなの作ったの?

f:id:Jah524:20160623143745p:plain

忍者が寄って集って襲ってくるので、忍術を使って撃退するゲームです。
裏側では連続音声認識が働いていて、何か言ったらそれが忍術と解釈されて相手に攻撃できます。
本当はLeap Motion等で手裏剣を投げたかったのですが、開発環境のバージョンが合わなかったので今後の課題となりました(バージョンの問題は本当にハマりました、相方がですが笑)。

f:id:Jah524:20160627143015p:plain

このように、フレーズから推定される属性印象を推定し、それぞれの属性印象について定義しておいたエフェクトを発生させるということを行いました。
スプライトは水属性印象だったので、水の忍術としてのエフェクトを、縁の下の力持ちは土属性印象が高いフレーズなので、土忍術っぽいエフェクトを、という感じです。

システム構成

f:id:Jah524:20160623144426p:plain

上の図がシステム全体の構成を表しています。
Unity, HMD以外では、音声認識用のモジュール群とフレーズから忍術属性印象を推定するモジュールに分けられます。

音声認識

tips.hecomi.com

こちらのページで紹介されている手法を使わせて頂きました。

諸々のセッティングが終わったらNodeを起動し、Google Chrome音声認識を行うページを開きます。
Nodeは音声認識を行うページとUnity、それぞれとwebsocketで通信を行います。
これで認識結果がでるたびにUnityに音声認識結果がテキストで送られます。

phrase2magic

名前の付け方はてきとーです。
音声認識後のフレーズ、もとい文章から忍術の属性を推定します。
忍術の属性は五行思想(wikipedia)を参考に次のようにしました。

火: 火っぽいもの、攻撃的なもの、エネルギーが大きそうなもの
水: 水っぽいもの、観念的なもの、スピリチュアルそうなもの
木: 木っぽいもの、風っぽいもの、成長などを表しそうなもの、土に比べて動的
金: メタルっぽいもの、自然物よりは人工物を表しそうなもの
土: 土っぽいもの、育成や保護を表しそうなもの、木に比べて静的

とても大雑把です。

f:id:Jah524:20160627142822p:plain

このモジュールが何かを端的にいうと、文章を入力したらそれぞれの属性印象を確率で算出する関数になります。
word2vecとLSTMと呼ばれるリカレントニューラルネットワークを使って未知の文章に対してそれがどのような忍術属性印象をもつのかを推定します。
どのように実装されているかについてはQiitaに投稿しましたので、興味のある方はそちらを確認いただければと思います。

ハマったところ

冒頭でも触れたように、バージョンの問題には悩まされました。
自分の担当ではないため、明確にはわからないのですが、Oculus DK2とLeap MotionによるUnityだかRuntimeだかのバージョンがなかなか合わないみたいでした。
恐らくOculus CV1持ってれば最新で大丈夫だったようですが。

他には、これはどんなハッカソンでもよく起こる問題だと思うのですが、とりわけハッカソン中の回線の問題に悩まされました。
特に今回、運営の方々が頑張ったなぁと思うところでもあるのですが、開発用のデスクトップPCを25台ほど借りられるとのことでした。
しかし、デスクトップPCが借りられてもネットワークがが全く使えない環境でした。
最新版のUnity等は予めUSBに保存して配布できるようになっていたようですが、今回のようにまだ開発環境が安定していない状況でハマる私達のような輩にはつらい状況でした。
加えて、私達のチームは連続音声認識を使う予定だったため、常時接続している必要があるという状況でした。
例えばUnityを数十人がダウンロードできる場所なんて相当ないと思いますので、回線周りについては運営さんや会場が頑張るべきという話ではなく、今後も参加者が気をつけないといけないところではありそうです。
ひとまず参加者としては、たとえ良いデスクトップPCが借りられるからといってその周辺の環境には基本的に期待しないほうが安全です、もしくは期待しないでちゃんと確認をとっておくといいと思います。

その一方で、ネットを含めた環境は出来るだけ運営の方に期待したいところではあります。
ネットへ繋がないでできることは随分限られます。
今のVRハッカソンなら体験型/ゲームくらいしかほとんどないと思いますが、今後は例えばVRのSNS等、ネット環境前提が当たり前のアプリが増えてくることが予想されます。

今回私たちはとても感じのよいスタッフの方の助けをいただきながら、最終的には手持ちのポケットwi-fiでなんとかしました。
無線で飛ばす使い方しか知らなかったんですが、USB接続を行うと接続してるパソコンにもwi-fi環境が与えられるんですね。
もしこれを持っていなければテザリングで試遊会を含めて2日を凌ぎきるしかなかったので、ポケットwi-fiをもっていて運が良かったですし、なによりスタッフの方には本当に助けられました。

その他雑感

これまた大変だった系の話になってしまうのですが、ハッカソンなんてそんなものなので、一応書いておきます。
2日目の終わりの段階で表彰がある予定だったのですが、審査が追いつかないとのことで延期されました。
その後にビルドした作品と作品紹介のスライド(optional)等を参加者にお願いしていましたが、これの〆切が2日後の23時までというのが結構きつかったです。
とりわけ自分は、今回で提出するものはないと聞いていたので、コンフィデンシャルなプロジェクトの中にハッカソン用のソースコードを入れていました(開発速度優先のため)。
その後で必要とのことで、提出用にソースコードを切り離す必要が出てきてとても大変でした、せめて1週間は猶予が欲しかったです。

ハッカソン内の時間として壇上でのプレゼンではなく、試遊会という試みになっていたのは良かったと思います。
やはりお互いに作ったものに対してフィードバックがあってこそです。
音声認識は本当に人によって使い方が違ったので、ゲームデザインとして上手く吸収していく必要があることを痛感しました。

ちなみに作成物は今後もメンバー内で作り続けていく予定です。
ハッカソン中は問題解決だらけで、ゲームデザインについてほとんど検討できなかったのが心残りもであり、この流れになりました。 いずれ機械があったら是非被ってみてください。