VRシューティングゲーム「GCLOPS」をOculus Store for GearVR のギャラリーアプリで公開しました

GCLOPS

先週の「RingNinja」に続いて、GearVR向けのVRシューティングゲーム「GCLOPS」がOculus Storeのギャラリーアプリで公開されました。Oculus Store

半年前にOculus Storeに申請を出して1度リジェクトされて、そのあとApprovedされたにもかかわらず、keys onlyというステータスでストアでの公開はできませんでした。ストア公開されない理由は特に教えてもらえないので謎のままなのです。その後もエネミーのデザインをマッチョにしたり、動画を入れたり、UIを変えたりと、地道なバージョンアップを続けて、ついに12月8日に公開されました!

そもそも2016年1月にあった「Unity VR EXPO Shibuya」に出展しようと、ちょうど1年前くらいに出たばかりのGearVR向けにとりあえず作っていた射撃ゲームを全面改装しました。その射撃ゲームをテストしている姿がはたから見ていると、XMENのサイクリップスに見えたんですよね。360度見渡しながら右手でGEARVRのパッドを触って打つところとか。

GearVRだと移動ができないので、シューティングゲームはどうしても単調になってしまうのですが、そのあたりはアップデートで変えていきたいと思ってます。

それとVRだと広告モデルがまだないので、基本的に有料アプリかアプリ内課金が主流なのですが、このあたりは難しいところですね。やってみないと面白さのわからないVRこそ無料アプリで出して、広告かアプリ内課金をするというのがあっていると思うのですが、アプリ内課金の場合、追加課金をさせるだけのバリューが必要になってくるので、長時間遊べないVRでは悩み所だなと思いました。とりあえず有料アプリとして190円で出してます。

GearVR持ってる人は是非ダウンロードしてみてください。

ローポリー・アクションゲーム「RingNinja」リリースしました


 

半年くらいコツコツと作ってきたローポリーのゲーム「RingNinja」をようやくリリースできました。

敵を固定するリング

もともと敵を固定してそれを利用しながらクリアしていくゲームを作りたいなと漠然と考えてました。ジョジョのスティール・ボール・ランに出てくるブラックモアのスタンド「キャッチ・ザ・レインボー」で雨を固定して、ブラックモアが登っていくあたりとか、昔ファミコンでよくやったロードランナーというゲームで、床に穴を開けてそこに敵をはめて敵の上を追加するあたりとか、いろいろなもののイメージが混ざって、最終的にリングという道具を投げて敵を固定するというゲームのシステムになりました。

リングが3つの役割を兼ねることでシンプルなルールに

ゲームを開発はじめた当初は、リングはあくまで武器で、リングとは別に得点とか時間とかライフのようなものがあったのですが、こんなにいろんなパラメータ必要ないなと感じて、そのあたりごっそり減らして変わりリングに集約することにしました。

  • 武器
  • ライフ
  • ステージクリア条件

この3つをリング1つで兼ねることにしました。特にライフに関しては、ソニックのリングがヒントになってます。リングつながりでソニックを思い出して、敵に当たるとリングがバラまかれることでダメージを負わずにいるという点ですね。

脳は不思議

で作ってる時も思ったのですが、基本的に脳が昔のゲームとかシステムを記憶しているので、機能やルールを考える時に勝手に自分の経験から似たものを瞬時にとりだしてくるんだなと思いました。敵を固定するところからロードランナーって普通どうやっても思い出さなそうなんですけどね。。しかも裏技か何かで空中で敵を固定するような画面が30年ぶりくらいに頭に思い出されたというw 脳って不思議です。

そんなこんなでようやくリリースができました。ぜひ遊んでみてください。

 

ringninja

ringninja

ringninja

 

giboでunity用の.gitignoreを作る

普段MacとWinを行き来するので、Unityで新しいものを作るときにはgitを介して同期をしています。プロトタイプだろうと何だろうとgitなのですが、ちょっとだけ面倒くさかったのが.gitignoreを作るとき。コピペしてるだけなんだけどそれすら面倒くさいなというのがあったのでgiboを使ってサクッと追加するようにしました。

気付いたら.gitignoreはgiboで自動生成する時代になっていた

こちらを参考にgiboをbrewからmacに入れます。あとは、


gibo unity >> .gitignore

これだけ!むちゃくちゃ簡単

Structure Sensor が届きました 、VR/ARもモバイルが本命という話

Structure sensor きた!全く新しいVR/ARのプロダクト作る! #vr #ar #structuresensor

正裕 黒川さん(@masahiro8.backham)が投稿した写真 –

Structure Senseor という iPhone / iPad を拡張する深度センサーをゲットしました。

とある相談を受けて深度センサーを使ったVR/ARのプロダクトを作る調査をしていました。KinectをはじめRealSenseなど深度を検出できるセンサーは結構色々と出ていて特にZEDはなかなかインパクトがあって良さげだったのですが、実はどれもモバイルでは使えなそうでした。相談は必ずしもモバイルである必要もなかったのですが、僕が考えるAR/VRはユーザーの行動に制限をさせないことが重要だと思ってます。

携帯電話とかスマホが普及したのも、デスクトップPCや固定電話を使わなくなったのも、ケーブルレスでパーソナルでユーザーの行動が自由になったからです。究極のユーザビリティというのはここなんだと思います。そしてユーザーの行動が自由になるほどよりパーソナルになっていく。スマホのVRは1人に1つはまぁ想像つかないことはないけど、RiftとかViveは基本的に1人で没入するものなのに家の中で絶対に1人1つは持たないでしょう。VRの主流は1人1台のモバイル端末に取って代わられてしまうと思います。固定電話と携帯電話、PCとスマホ、据え置きゲーム機と携帯ゲーム機みたいな感じで。

ですので僕はVR/ARももしスケールするとしたらモバイルである必要があると思ってます。現在の究極型はホロレンズですね。さすがに屋外でホロレンズは使う人を選ぶと思いますが、家の中とかオフィスの中でなら1人1台ホロレンズを使って生活する未来は想像がつかなくもないです。

そういうわけでバッカムではケーブルレスで自由なモバイルのVRが何か新しい体験を生み出せることを実証するためには現状でStructure Sensorが1番やりやすいと思ってゲットしました。

ffmpeg コマンド備忘録

連番から動画を作る

ffmpeg -r 24 -i pic0001%05d.png -vcodec libx264 -pix_fmt yuv420p -r 60 pic.mp4

画像1枚から動画を作る

ffmpeg -r 1 -i pic0001.png -vcodec libx264 -pix_fmt yuv420p -vf scale=300:-1 -r 30 pic.mp4

ffmpeg -r 1 -ipic0001.png -vcodec libx264 -pix_fmt yuv420p -vf scale=1280:-16 -r 30 pic.mp4

base.mp4とover.mp4を合成

ffmpeg -i base.mp4 -vf “movie=over.mp4[inner]; [in][inner] overlay=70:140 [out]” combined.mp4

Googleにページをすぐにインデックスさせる方法

ブログが全くインデックスされないので、Search ConsoleでURLを単位でリクエストを送ったらすぐにインデックスされました。

search console

 

Search Console > クロール > Fetch as Google

であとはページのURLを入れてくだけで、その場で処理されていきます。

送信したあとに「インデックス登録をリクエスト」ボタンが表示されますのでおすとダイアログが表示されます。

もろもろチェックしてから送信を押して終わりです。

簡単すぎてちゃんとインデックスされているのか疑いたくなります。

Zero Latency VR のVRの仕組みについて

念願のZero Latency VRを体験してきました。平日の朝から一緒にやってくれる友達もいないので1人で予約しました。

きっちり開始時間の20分前にはちゃんと受付済まして待機。が、他のプレイヤーは時間になっても現れず、あわや本当に1人で全ゾンビを相手にしないといけない状況に。。

しびれを切らしたお姉さんがゲームの説明を開始してしばらくすると、他のプレイヤー5人(中国人)が10分遅れでやってくる。どうしてもやりたいということで急遽15分遅れくらいで5人も参加するも日本語も通じずなかなかゲーム開始まで辿り着かない。。Baiduでデザイナーしてた頃の同僚中国人はみんな本当に礼儀正しかったし、真面目だったので、こういう一部のマナーの悪い中国人ばかり日本に旅行に来ているんだろうなと言い聞かせつつ、ただただ開始するのを待ってました。オペレーション大変だな、これはこれで珍しい経験できました。

で、Zero Latency VRの遊び方とかルールはネットに色々書かれてて、私も行く前に多少読んでいきました。そのあたりは割愛して、Zero Latency VRをVR開発者視点で書きます。というかやる前もやっている時もテンション上がってて全くそういう視点で見ていなかったので、思い出しながら書きます。

VRのデバイスと仕組み

まずVRのHMDはOSVR HDK2を使ってます。うちにもハッカソンでいただいたOSVRがありますが、ちゃんと動いたことがないので、OSVRがちゃんと動くということにまず驚きました。

osvr

HMDの上にPSMoveのコントローラみたいなLEDが2つついていて、これを検知してプレイヤーの見ている方向と位置を追従しています。最大6人で遊べるので、部屋の周りにこのLEDを検知するセンサーもしくはカメラが配置されているのだと思います。

銃にも2つのLEDがついていて、これがHMDと同様に銃の方向と位置を追従できるようになっています。

Zero Latency VR

でゲームをやってて気づいたのは、体と銃だけでVR内のプレイヤーの体全体をレンダリングしていて、自分から他のプレイヤーもちゃんと見える。ただあまりにゾンビの攻撃が激しく、ゆっくりそのあたりのモデルの繋がりかたとか握り方がどうなっているのかとかを見れなかったのが残念。次回はゲーム始まる前にもっとじっくり色々確認したいですね。

それとポイントは、部屋の床全面に描かれている白いグリッドです。このグリッドから床の面を検知して、ゲーム中のオブジェクトを配置したり、プレイヤーの視線の高さもこの平面を基準に追従していると思われます。それと奥行きの距離も計れるので、空間を把握するには一番やりやすい方法かもしれないです。MRに近い。

Zero Latency VR

LEDのマーカーによるプレイヤーの回転 + 位置情報と、グリッドによる床の平面情報を使ってVR空間を作ってます。

ステージのデザイン

Zero Latency VRは1階と2階をエレベーターで行き来できるステージのデザインになっています。VRなのでVR空間上は2階とはいえ実空間では1階と同じ平面上にあります。普通に考えたら1つの平面上に別のレイヤーで人が歩くと、絶対にぶつかってしまうはずなのですが、それをどうやって解決しているのかが実は一番知りたかったことでした。

やってみたらすぐに解決しました。実は1階部分と2階部分はゲーム内では同一の座標(この場合xとz座標)には存在しないようにデザインされていました。1階部分は現実空間の内側だけを使い、2階部分は現実空間の外側だけを使ってます。

space

これだと絶対にぶつかりません。単純なのですがステージのデザインでそこの問題を吸収していてよく考えられているなと思いました。逆にVR内でxとz座標が同じ複数の階を作るのは難しそうです。

OMCN Okinawa Motion Controll Networkのキックオフイベントに参加、LT登壇しました

11月13日にOMCN(Okinawa Motion Controll Network)というセンサーやデバイスを使って色々活動している人たちが沖縄にも拠点を作る ということでそのキックオフイベントに参加してきました。

イベント3日前に登壇のお誘いをいただいたので、急遽LTの準備をしたのですが、ちょうどアメリカ大統領選挙の後から激しい腹痛が始まって結局イベントの朝まで調子が悪く、最悪のコンディションの中会場の琉球大学へ向かいました。トランプのせいですね、きっと。

そんな状況だったのでLTの内容もうまくまとめられずスライドがかなりの枚数になってしまったのでそこはトークでうまくだらけないようにカバーすることにしました。

沖縄のイベントはだいたいゆるい感じで始まるのですが、本家のTMCNもゆるい感じらしくOMCNものんびりとした感じで始まりました。

PETSというプログラミングを学べるおもちゃが展示されてて、これなんかはうちの息子がプログラムを始めた時にやったようなことを、遊びながら手を動かしてできてとっかかりに良いと思いました。あとはホロレンズを体験できて、スマホでARするのとは格段に綺麗で安定していてすごかった、ただ視野角がちょっと小さくて窓を覗いているような感じでした。

 

バッカムでバイトしてる琉大生のカズマも登壇、HTC Vive向けに作ったぼっちキャッチボールとかを紹介。

自分は、春に1ヶ月ほど毎朝VRをやった時のことを思い出しつつレポートしました。1ヶ月続けていく中で起こった身体的な疲労やマインドの変化をかいつまんでご紹介しました。

他にも東京から来たTMCNの方たちのお話も面白く、何より皆さん色々な事をされててとても刺激を受けました。

Google フォームで無料で簡単にお問い合わせフォームを作る

Googleフォームでお問い合わせフォームを作ろうと久しぶりに開いたら、若干UIも変わっていたり、相変わらず使い方が得る覚えで戸惑ったりしたので使い方のメモをざっくりと記載しておきます。

Googleフォームを開く

GoogleフォームはたぶんGoogleドライブとかGoogle ドキュメントの中の機能の一つです。ですので、ここではGoogleドライブを開いて新規を押します。

Googleフォーム

 

こんな感じ自分のアカウントだとその他の中に入ってました。開くと色は違うかもしれないですがこんな感じになってます。

Googleフォーム

タイトルにbackham contatと入れます。

Google フォーム

初めから空の質問項目が入っています。この項目をクリックして選択すると、「ラジオボタン」と表示されるので、そこをまたクリックするとこんな感じでドロップダウンメニューが表示されて、そこからフォーム項目を選択できます。

Googleフォーム

「段落」を選択します。これが長文を入力できるフォーム要素です。選択したら質問のタイトルを入力します。

Google フォーム

入力項目を追加するには右側のメニューの一番上にあるプラスボタンを押します。

Google フォーム

新しい項目が追加されるので同様に入力していきます。

Google フォーム

右下の必須をONにして必須項目にできます。削除するときはその隣のゴミ箱をクリックして削除します。

入力項目が全部設定できたら完成です。完成ボタンと公開するボタンとかなくいきなり完成です。このページのURLがお問い合わせフォームそのものになります。このあたりに戸惑ったのですが、どうもそうみたいで、あとはフォームの上にある、「回答」というところに、お問い合わせがたまっていきます。

Googleフォーム

画面上の目のアイコンがプレビューです。

Google フォーム

こんな感じで立派なお問い合わせフォームがすぐに完成します。

他にもラジオボタンで質問内容のカテゴリ選択を入れたりいろいろ追加できたり、

Unityでクラスをnewしてインスタンスを作る方法

UnityはたいていGameObjectにComponentを追加して実行するのですが、スクリプト内ででクラスをnewしてインスタンス作ることもできます。ただUnityの作法があって知らないとはまるのでメモっておきます。

 
インスタンス作る場合


ClassName object = gameObject.AddComponent<ClassName>();
object.method();

 
これでもOK


gameObject.AddComponent<ClassName>();
gameObject.GetComponent<ClassName>().method();

やってることは同じで、あらかじめGameObjectにComponentとしてクラスを登録してあげないといけない。登録したコンポーネントをGetComponentする感じですね。