博麗神社あとの祭り -kinectの舞台裏-

■2011-05-08 博麗神社あとの祭り

f:id:noire722:20110509073627p:image


ニコ生タイムシフト
http://live.nicovideo.jp/watch/lv47307791


関係者・参加者・視聴者のみなさんお疲れさまでした!
当日はkinectアプリ開発担当として参加しました。
kinect関連で良かったことや悪かったことを技術者寄りの目線を交えながら簡単に振り返ります。

■本番の環境について

ノートPC
OS Windows7 64bit Home Premium Edition
CPU インテル Core i7 2720QM
メモリ 8GB DDR3 SO-DIMM
グラフィック 15.6インチ液晶(1920×1080) / NVIDIA GeForce GT540M 2GB

当初は旧型のデスクトップPCでやる予定でしたが、万全を期すために最高水準のスペックのノートPCを用意しました。
これによりキャリブレーションにかかる時間がおよそ1〜3秒、深度データ・カメラ映像フル活用でも全く処理落ちしないなど予想を上回るパフォーマンスを発揮できました。
ぶっちゃけると前日の20時にアキバでこれ買ってきました。

kinect
  • 本体
  • OpenNI v1.1.0.41(unstabled)
  • SensorKinect 5.0.1.32
  • NITE v1.3.1(stable)
kinectアプリ
  • C# (.NET 4.0)

■良かったこと

kinectの誤反応が特になし

ステージ上には熱源が多数あるため、赤外線深度センサーが誤反応してしまうのではないかという懸念がありましたが、会場スタッフさんと相談して機材の配置や照明を工夫することによって回避できました。
ちなみに右上の画像が暗かったのは、この問題の対策のために照明を切ってもらったことの副作用でした。

実はラグはほとんどなかった

生放送を見ている方は操作にかなりラグがあるように見えたと思いますが、あのラグのほとんどはkinectのラグではなく配信用の映像出力のラグでした。
プレイヤーが画面を見て操作するラグはおよそ250〜400msぐらいです。

実は認識精度も悪くなかった

両手を綺麗に認識させさえすれば、プレイヤーにとってかなり直感的な操作が出来たはずです。コツは身体の後ろに手を隠したり、密着させたりしないことなのですが、今回はそのことを事前にうまく伝えることが出来なかったことを反省しています。冒頭で書きましたがキャリブレーションも1〜3秒と爆速でした。

1面を初見でクリアしてもらえた

初めてkinectで東方をやったにも関わらず1面をクリア出来る方が現れたことに驚きました。kinectでの操作は慣れとコツが必要で大変難しいです。僕は何百回もテストプレイしてるのにクリア出来なかった……。*1

あの背景がウケた

f:id:noire722:20110509120125j:image
関係者にも内緒でこっそり本番用に仕込みました。怒られなくて良かったです。

ZUNさん、清水愛さん、ビートまりおさん、あまねさんに会えた

やったー

■悪かったこと

プレイ時にディスプレイが遠かった

kinectアプリの仕様上はもっと近くても良かったのですが、近すぎるとステージ上のスクリーンの邪魔になるという問題があったためああいう配置になりました。
弾幕シューティングをやる上で大きな足かせになったと思います。プレイヤーの皆さんすみません。

Kinect Cameraのドライバが何度も動作停止

開発環境ではこういったことはなく、本番当日に急に出たトラブル。本番中は司会者さんの話術と画面切り替えによって助けてもらった感じです。原因は不明。USBの接触不良とかではない様子。
ちなみにAudioとSensorのドライバは無事でした。

解像度の問題

開発環境では16:9のワイドなモニタ1画面を使って開発していました。しかし、本番ではプロジェクタの解像度・映像の分配先ディスプレイの解像度・ニコ生プレイヤ−の解像度など考慮すべき点が多々あるにも関わらず一切考慮していなかったため、当日に窮屈なタイムスケジュールの合間を縫ってアプリの改修をする必要が発生しました*2。開発環境と本番環境の差を極力小さくすることは今回得た教訓のひとつ。

ホットキーが効かない

グローバルホットキーをプログラムから登録出来ない&登録出来ても効かない問題が発生。Win32エラーコードは1014。まだ未解決かつ詳しい原因不明(ホットキーIDがかぶってるとかではなさそう)。星蓮船など他のシリーズ作品では大丈夫なのですが、なぜか神霊廟でだけ発生しました。直接関係はなさそうですが、神霊廟起動時だけWindows Aeroが強制オフになることがちょっと気になってます。この問題があったので前日まで本番で星蓮船をプレイすることにしようか迷いました。

SendInputが効かなかった

DirectInputがSendInputを受け付けない問題が発生。スキャンコードを指定することで対応出来ましたが、他の作品プレイ時には起こらなかった問題なのでDirectXのバージョンが関係ないか疑っています。
@nakamuuに急遽DLLを用意してもらったりして大変助かりました。これが解決出来たので当日神霊廟でプレイすることを決断できました。

例大祭に行けなかったこと

前日から当日にかけてトラブルが頻発して例大祭に行けず、悲しみ背負いました。

■さいごに

何よりイベントが成功したことと、そのイベントに携われたことを嬉しく思います。
kinectのイベントも本番で盛り上がったこと・本番で特に大きな問題が出なくて良かったです。*3
関係者、例大祭参加者のみなさんお疲れさまでした!ニコ生視聴者の皆さんありがとうございました!


また、開発の機会を与えてくださった@ryu16ban、リソース面で支援してくださった@shinno@uppers12
技術面で支援してくれた@nakamuu@dekosuke@jacobi824@takizawatksありがとうございました!

*1:筋肉痛で手が上がらなくなってた

*2:車内コーディングはやるもんじゃない…

*3:アプリの出来には納得いってないけども