無理な更新はお止めください。

ひたすらマイペースな人のブログ

スマホゲームとAI

スマホゲームの表現の幅を広げるのにゲームAIの技術を使うことは非常に有効だと思っています。

・なぜAI

コンソールゲームとスマホゲームの決定的な違い(ビジネスモデルを除く)はやっぱり操作系のインターフェースじゃないでしょうか?

今のプレステだと十字キーやアクションボタンはもちろん、ジョイスティックやLRボタンなど操作すべきボタンが沢山あります。しかしスマホはタッチパネルのみで、電車の中でつり革につかまったりすることを想定すると片手で操作されることになります。そうするとプレイヤーからの入力がコンソールゲームに比べて著しく少なくなります。その結果プレイヤーの動きを少ない入力で表現できるゲームに特化されることになり、ゲームの方向性が決まってきてしまう気がします。

じゃあ、コンソールゲームの時に必要だった入力をAIが補うようにすればどうでしょう?どの操作を実際にプレイヤーがやって、残りの操作をAIに任せるかという選択ができるようになります。それにより操作系には過度に縛られないゲーム作りができるような気がします。ゲームAIは元々は敵キャラを動かすのに使うのが通常ですが、自分が操作するキャラにも使ってしまうわけです。

で、実際勉強がてら作ってみました。kondroid.hatenablog.com

マップを移動して、武器を選択して敵を攻撃するというありふれたアクションゲームですが、プレイヤーが操作するのは移動地点を選択するだけでその他はすべて自動です。おそらく、方向キーを使って操作してボタンで武器を選択してボタンで攻撃するという操作をいちいちプレイヤーがやっていたらスマホゲームとしては成り立たないでしょう。しかも操作する味方が5体もいるわけですし(笑)。

・問題点

ただ、作るにあたっての問題点ももちろんありました。やっぱりCPUパワーを結構使うことになります。バッテリーという制約があるスマホではここの対策は必須かと。ゲームAIの本に必ず出てくるA*アルゴリズムは処理が重くて使えませんでした。代わりにノードの最短経路をあらかじめテーブルにしてそれを参照する方式(経路テーブル)を採用しております。この方式はマップの経路が途中で塞がれたりという動的に変化するマップでは使えません。しかし前述のA*アルゴリズムと比べると圧倒的に高速です。他にもゲームAIはあんまり関係ないですが衝突判定の効率化などCPUをなるべく使わない工夫を入れています。まだまだ改良の余地はありますが。

・作ってみて

間違いなくゲームの表現の幅は広がりました。ゲームAIの基本中の基本の部分しか取り入れてませんが、それでもかなり強力だと思います。個人的な意見ですが、スマホゲームではプレイヤーのガチの能力だけじゃなくて、運の要素もゲームを面白くさせる大きな一因となっている気がします。であれば、多少はバカなAIでもいいのかななんて思ったりもします。いずれにせよ、ゲームを面白くするのが目的なので、使えるところはどんどん使っていきたいと思います。