This page is intended for users in Japan. Go to the page for users in United States.

【AITech #4】AIでオリジナルゲームを作ってみた

ご無沙汰しております。
AI事業開発部の関根です。

今回は私たちAI事業開発部が密かに開発していたこれまでにない全く新しいAI活用オリジナルゲームについてご紹介したいと思います。

AIでゲームを作ろう!

AIでできる事を体で理解するのに最適な、ブラウザでサクッと遊べるお手軽AIゲームがインターネット上にたくさんあります。例えば私が個人的に好きなの以下のようなものです。

■ Quick, Draw!


https://quickdraw.withgoogle.com/

プレイヤーが絵を描いて、それをAIが当てるゲーム。20秒という短い時間でお題通りにちゃんと認識してもらえるような絵を描かなければならない。プレイしたデータは落書きデータセットとして公開され、蓄積された過去のプレイデータをダウンロードして自分のAIを学習させる事もできる。

■ Semantris

https://research.google.com/semantris/

画面に表示されたいくつかの単語の中で、ターゲットとなる単語に最も関連性が深いと思われる単語を考えて入力していくパズルゲーム。プレイヤーが単語を入力すると、それと関連性が高い順に単語の一覧が並び変えられ、ターゲットが一定順位以内に入っていれば成功となる。英語の勉強に最適。

では、もしもあなたが突然上司から「こんな感じのおもしろいAIゲーム何か作って」などと言われたらどうするでしょうか?そんなことは滅多に起こらないと思われる方も多いでしょうが、実際にそういう事を言われるエンジニアが世の中にはいるのです。私です。

あれはまだAI事業開発部が新設されて間もない頃の事でした。

私たちトライフォートでは、毎年忘年会や新年会などの場でチーム対抗のオリジナルゲーム対決が催されているのですが、前年の忘年会で大盛り上がりしたVRシューティングゲームに対抗して今年はAIで何かおもしろいゲームを作ろう!という話が持ち上がったのです。「VRシューティングゲームに対抗するのはいくらなんでもハードルが高すぎるのでは……?」という思いを胸に秘めたまま、新設部署の存在感を示すために何とかがんばってみよう!と酒の席でなんとかアイデアを絞りました。忘年会まであと一か月ほどの頃の出来事です。

どうする!?どうするAI事業開発部!!?

材料を集めよう!

VRに対抗できる程の何かが果たして出来るかどうかは定かではありませんが、なにはともあれまずはゲーム作りに使えそうな材料を集めに行きましょう。

今回は以下の二つを使用してみます。

■ PoseNet

https://github.com/tensorflow/tfjs-models/tree/master/posenet

PoseNetはGoogleが開発したtensorflow.js製の姿勢推定ライブラリです。カメラに映る人物がどんな姿勢をしているのか、Googleの学習済AIモデルで高精度かつハイパフォーマンスな推定を行う事ができます。完全にクライアント側で動作するので、サーバーとの通信を行う事なくリアルタイムに結果を取得する事が可能です。

■ Enchant.js

https://github.com/wise9/enchant.js/

Enchant.jsはJavascriptでブラウザゲームを作るためのフレームワークです。ゲームオブジェクトの管理やオブジェクト同士の当たり判定など、ゲームづくりに必要な要素を簡潔に扱えるようになります。少し古めのライブラリですが、今回の用途では充分に活躍してくれそうです。

中身を覗いてみた限り、どうやらこの二つは同じページ内で共存する事ができそうです。つまり、PoseNetで推定した体のパーツの座標を取り出して、その位置にEnchant.jsでゲームオブジェクトを配置すれば、カメラの前で体を動かしながらプレイする、かのKinectを彷彿とさせるような全身インタラクションゲームを簡単に開発できてしまいそうな予感がします。これならVRシューティングゲームにもある意味対抗できるかもしれません。さっそく作ってみましょう!

完成!!

そして出来上がったものがこちらです!(※3分クッキング方式)

AIで人の顔にリアルタイムに目線を表示し……


それでボールを打ち返してブロックを破壊する


超新感覚スポーツゲームが爆誕!!!!

ちなみに社内レクリエーションに付き物の内輪ネタとして、ブロックの中から現れる社長の顔を目線で拾うと「一定時間プレイヤーの額から弾丸が発射される」等の特殊効果が発動したりします。

忘年会は無事大盛況に終わり、その翌年8月の全社総会では、さらに追加改修を入れたパワーアップ版を使用して早くも第二回大会が開催されるなど、当初の予想を上回る活躍を見せてくれました。

開発中に「それやってるところ遠くから見ると気持ち悪いですね!」って言われたり、テストプレイに熱中するあまり腰痛をこじらせて会社を休んだりした事も今となってはいい思い出です。

まとめ

今回は自分たちでAIモデルを学習させるのではなく、PoseNetという出来合いのモデルをお借りしてものづくりを試みてみましたが、こういうジャストアイデアをサクッと形にできるのはとても気持ちがいいですね。

PoseNetとJavaScriptゲームエンジンのコンボはなかなか強力そうだという事がわかったので、皆さんも何かkinect風のゲームの思いついたら活用してみてください。また、PoseNetに限らずこういったクライアント動作の学習済モデルは現在多くの種類が公開されているので、我々としても積極的に活用していきたいと思います。

今回作成したブロック崩しは現在のところ公開未定となっていますが、もう少し手を加えればいつか何かの形で公開できるかもしれません。もしその時が来たら是非遊んでみてくださいね。

トライフォートの和気あいあいとした雰囲気が伝われば幸いです。

それでは次回の記事でまたお会いしましょう。

株式会社トライフォートでは一緒に働く仲間を募集しています
同じタグの記事
今週のランキング