【人工知能xゲーム】がんばれ森川君2号の仕組みを考えてみる

ゲームシステム分析

がんばれ森川君2号 人工知能ゲーム

こんにちは。なおキーヌです。

ブログ毎日更新は290日目になります。

私はやっぱり人工知能xゲームを作成したいので、これから色々研究しようと思います。

一番最初に自分の意志で体験した人工知能ゲームは「がんばれ森川君2号」(以下森川君2号)

ゲームの内容を簡単に説明すると、基本的にはプレイヤーはPIT(Pet In TVの略)と呼ばれるキャラクターに
指示や補助をするのが基本的な内容となっています。

後はPITが自動的に進んでくれます。

一部ではクソゲー認定されてしまっていますが、私はとても大好きなゲームです。

元々育成ゲームが好きだっていうのもありますが、今までの育成ゲームとは違った感じがして
小学生ながらもずっとプレイしていました。

当時はディスクに傷をいかせてしまって途中でロードが止まってしまって頓挫してましたが(笑)

今回はそんな人工知能を組み込んだゲームの作り方を考えてみました。

AIの話になるととたんに難しくなるので、基本的には数式とか難しい話は抜きで考えていきます。

  1. 基本的には勝手にゲームが進むという仕組み
  2. 過去の経験を元に学習していく仕組み
  3. 教師信号を与えるコトでゲームとして成立させる

基本的には勝手にゲームが進むという仕組み

森川君2号は基本的に何もしなくてもゲームが進んでいきます。

プレイヤーは基本的にPITの自由な行動を見守り、時々指示を与えてゲームクリアに導きます。

このゲームが勝手に進む仕組みというのが個人的には斬新でした。

PITは気になるものを見つけたらプレイヤーに確認してきます。

プレイヤーはそれに答えるか全く答えないか、全く違うことをさせるかの3択です。

プログラム的にみると、ループの中で移動処理とアクション処理は常に動き続けている状態ですね。

その間にコントローラー関数が入っていてプレイヤーの割り込みが可能になります。

プレイヤーの割り込みが入ったら、フラグを切り替えて移動処理とアクション処理を止めるといった感じですね。

プレイヤー操作部分は殆ど作らなくていいので楽と言えば楽なのですが、
PITの動きを作り込まないといけないですね。

といっても一定のパターンを繰り返すだけなので一度作ってしまえばあとは使いまわせます。

過去の経験を元に学習していく仕組み

森川君の学習する根本的な仕組みとなるのは、バックプロパゲーションというニューラルネットワークを学習させる際に用いられるアルゴリズムが使われています。

日本語で言うと誤差逆伝播法(ごさぎゃくでんぱほう)と言うらしいです。

解説すると何やら難しい話になりますので、詳しい内容は各自調べてください。

超簡単に言うと覚えたこと(結論)に対してアクションを起こし、結論を出す。

もっと簡単に言うと、例えばPITがスイカを見た時に丸いものとして認識します。

最初は何をしていいのかわからないので、とにかく思ったことをやってみます。

情報が0の時はとにかく何かランダムでやるので、1発で食べるを選択するかもしれませんし、謎の行動をすることもあります。

森川君2号の場合は、それが正しいか正しくないかの2択しかできません。

もしPITが食べるを選択した場合、PITは美味しいと感じます。

そしてプレイヤーはその行動が正しいと教えるとPITは

丸いもの(緑と黒)=食べ物=おいしい

と覚えます。

次に、丸い爆弾(赤色)が現れた場合PITは丸いものは食べ物だと認識してしまっているので
最初に食べるという行動をします。

当然、爆弾なので食べられませんね。

そして叩くか蹴る行動に出た場合爆弾が爆発してしまいます。

PITはダメージを受け不快になります。

ここでその行動は正しいか正しくないかで、正しくないを選択した場合

丸いもの(赤い)=怖いもの

として学習します。

この時点で「丸いもの」から「丸いけど赤い」「丸いけど緑と黒」と1つの情報だけじゃなく複数の組み合わせで判断できるようになりました。

次に、リンゴが出てきた場合PITは丸くて赤いものは怖いものとして認識してしまっているので
食べるという行動を最初に行わなくなります。

そしてプレイヤーがそれは食べるものだと教えた場合、PITは混乱してしまいます。

もし爆弾もリンゴもニオイを嗅いだ場合、臭いものは危ないもの。良いニオイのものは食べ物。

という学習をするかもしれません。

有識者に怒られそうですが、バックプロパゲーションはメチャクチャ簡単に言うとこんな感じです。

もっとシンプルに言うと、経験をもとに入力を与え出力を出す。

その出力は経験となり、次はその経験をもとに行動する。

これの繰り返しでどんどん学習していくという仕組みがバックプロパゲーションです。

私が覚えたバックプロパゲーションはこんな感じで記憶しています。

恐らく厳密には違うのでしょうが、最初は完全に理解しなくても大丈夫です。

PITは基本的にアホ

PITは素直なのでプレイヤーが正しいと教えると基本的にはそれが正しいことなんだと理解します。

でも基本的にはアホな子です(笑)

そこが可愛いんですけどね。

これを繰り返して正しい進め方をすればゲームをクリアできます。

逆に正しくないやり方を覚えさせて繰り返してしまうと、途中で積んでしまいます。

具体的に言うと、スイッチは叩いても触っても蹴っても動くのですが、
PITの腕力や脚力レベルがあがってしまうと触る以外の行動ではスイッチを破壊してしまいます。

破壊したらそのオブジェクトが消えてしまうのでいわゆる詰み状態になってしまいます。

何度も破壊行動が正しいと教えてきた場合、矯正するのがすごく時間がかかってしまいます。

教師信号を与えるコトでゲームとして成立させる

森川君2号がゲームとして成立しているのは、プレイヤーの選択や指示(教師信号)が出来るところです。

もしこれが出来ないとゲームというよりはただのランダム要素がある映像です。

今の技術で作ったらどうなるんだろうと考えることもありますが、
逆に出来ることが多すぎると今度は開発側がめちゃくちゃ大変になります。

1つ要素が増えるとそれだけでデバッグしなきゃいけない要素が倍々ゲームみたいになっていくからですね。

個人的には制約のあるプレステ時代にがんばれ森川君2号発売されて本当に良かったと思っています。

確かにもうちょっと要素が欲しかったというのは本音ではありますが……

こう、人工知能xゲームに関する記事を書いてると自分も作りたくなってきます。

一番はアストロノーカ風のゲームを作ることですが、森川君2号のようなゲームも作ってみたいです。

そのためには偏差値38未満の人間は到底先の話かもしれません。

ちょっと中学レベルからガチでお勉強してきます。

それでは。