BlogKLabは、多くのスマートフォン向けゲームを開発・提供しています。スマートフォン向けゲームの開発と運用は、Webソーシャルゲームと比べて格段に複雑で、またコンシューマゲーム開発とも異なったノウハウが求められる領域もあります。このブログでは、KLabのゲーム開発・運用の中で培われた様々な技術や挑戦とそのノウハウについて、広く紹介していきます。したことを思い出します。ここ数年、再びバーチャルリアリティー(VR)が盛り上がっています。非常にリアルな仮想現実没入体験が、簡単に手の届く領域にきています。Googleの「Cardboard」です。非常に安く手軽に手に入れ使うことができ、特にユーザーに身近なものになりうるからです。本稿では、Cardboardを使ってVRでロボットに搭乗して操縦するデモを作成したことを紹介します。Cardboardを使ってみるCardboardはGoogleが公開した段ボールでできたスマフォ用VRアタッチメントです。段ボールと、テープと工具があれば自分で作ることができます。Cardboardを二つほど作ってみました。レンズは、100円ショップで手に入るルーペを分解すると手に入ります。私は、ダイソーで写真のルーペを買いました。一つ買うだけで両目分のレンズが手に入ります。地道に普通のカッターで切り抜いて組み立てます。手芸用のゴム紐とマジックテープで簡単な固定用バンドを追加しました。以下が実際に自作してみたものです。unitypackageをインポートして使います。シーンに追加すると、ヘッドトラッキング付両眼カメラになります。スマフォ用VRアタッチメントに対応させることができます。Cardboard公式のUnitySDKを試してみましょう。Samplesからunitypackageをダウンロードできます。プロジェクトにインポートすると、Cardboardフォルダができます。Cardboard/Prefabs/にある、CardboardMainというPrefabをシーンに追加することで、カメラになります。これだけで、Cardboardに対応させることができます。詳細な評価と比較はできていません。これは作り始めた初期の時点でCardboardのUnity対応SDKがリリースされてなかったという理由によります。やって操作するの?スマフォVRアタッチメントを使用する場合、大きな問題となるのがユーザーインターフェースです。Cardboardでは、これを磁石とスマフォの磁気センサーでスイッチを作って解決しています。磁石二つの位置関係による磁力の変化を、スマフォの磁気センサーで検出することで、一ボタンに対応する入力を実現しています。非常に面白い仕組みです。Ver.2のCardboardでは、導電性の布とレバー機構を使うことで、ボタンを押すと画面にタッチされる機構が作られています。これも面白い仕組みですね。一方で、どちらの入力方式でもアクション性の高いゲームに利用するには入力の少なさと、反応速度と操作しやすさから難しいです。スマフォ二台使おうここで、私が考えたのが、スマフォの加速度センサーやタッチパネルをコントローラーとして使えないかということでした。スマフォの普及率が爆発的に増加した昨今、二つくらい前に使っていたスマフォが机の引き出しの中に眠っていたりしないでしょうか。それらをコントローラとして使えばいいのです!!そうなると、表示用と左手用右手用の都合三台のスマフォが必要です。我が家には、幸い私と妻が以前使っていたiPhone4とiPhone4sが余っていました。これをコントローラーとして使えるようにしてみましょう。無線で本体とコントローラーをつなぐでは、どのように表示+ゲーム実行用の本体スマフォと、コントローラー用スマフォをつなげばいいのでしょうか。ここで今回は、WebSocketを使ってみました。サーバーを介して、本体とコントローラをWebSocketでつないでみました。クライアント側のUnityでは、WebSocketSharpのUnity対応のためのKLab改変版を使って、以下のような受信用プログラムが動いています。}}Playerのコントロールスクリプトなどで、このクラスから情報を取得して操作します。一方で、コントローラーは、HTMLファイルで作りました。ブラウザで表示するだけでコントローラーになります。></div></body></html>このHTMLをコントローラーの識別番号を変えて左手用と右手用の二つ作ります。中継用サーバーは、単純なWebSocketで届いたメッセージを接続しているクライアントにブロードキャストするだけのサーバーです。clojure-aleph-chatを参考にしました。バーチャロンへのオマージュ二本のスティックでロボットを操作すると言えばあれですね。横方向に開くと上昇、閉じると下降という操作体系です。皆さん、よくご存じですよね。コントローラー画面には、攻撃ボタンとブーストボタンを表示してみました。タップするとそれぞれの動作をします。写真にあるように、ブラウザでコントローラー画面を表示させます。赤が攻撃ボタン、青がブーストボタンです。AndroidとiOSのどちらでも動きますが、AndroidとiOSで加速度センサーの軸が違っているので気をつけましょう。最近のスマフォの普及率を考えると意外と何とかなるのではないでしょうか。3台くらいきっとなんとかなりますよね。作り方次第で十分隠蔽可能なのではないかという感想です。