ゲームへのAIの適用のサンプル

6
芝村裕吏 @siva_yuri

レースゲームでのAIですか。 じゃあ、それを例に少し話しましょうか。

2010-12-14 23:38:17
芝村裕吏 @siva_yuri

例えば敵の車、敵車を制御したとして、最短コースで障害物避けながら走るアルゴリズムを組んだとします。 まあ、これでもメーカーによってはAIと言うかも知れませんが、あんまり楽しい対戦相手とは言えないですよね。

2010-12-14 23:41:28
芝村裕吏 @siva_yuri

最初のポイント:AIには導入目的がある。 レースなんでより強いアルゴリズムを狙ってもいいでしょうが、対戦してて楽しい相手を作るのもまたAI作りの目的になりえます。 シナリオ作業者の作業量を軽減することを目的とするのも、また一つです。

2010-12-14 23:45:55
芝村裕吏 @siva_yuri

なんにせよ。技術を導入するからにはそこに目的はあるのです。 目的なくしてAIを語りだすと、そこにあるのは楽しい妄想だけになりますね。 いやそれで十分かも知れませんが。

2010-12-14 23:48:35
芝村裕吏 @siva_yuri

例えばシナリオ削減を例にすれば、普通に総当たりだとテキスト量が現実でなくなるのを、現実の範囲に落とすためにAIを使います。 具体的には20Mくらいのメッセージデータを2M以下にするとかですね。

2010-12-14 23:51:41
芝村裕吏 @siva_yuri

ではどうやればデータを10分の1に出来るのでしょうか。ここから、設計の楽しさが始まります。 ま、厳密にいえばここはAIと言うよりは、設計の一部ですね。

2010-12-14 23:53:31
芝村裕吏 @siva_yuri

ここで注意。データを10分の1にする事は、言い換えればどう使い回すかです。 同じメッセージを普通に作った時と比べて10倍の数見せる可能性がある事を、考慮しないといけません。

2010-12-14 23:56:58
芝村裕吏 @siva_yuri

さて、どうやって使いまわしましょう。ここで使うのが、文章の成り立ちです。 文章は単語とその並び、すなわちコンテキストこと、文脈で作られます。 文章量削減を目的にしたAIでは、この成り立ちのうち、コンテキストに注目します。

2010-12-14 23:59:51
芝村裕吏 @siva_yuri

単語を変えずに、文脈をかえることで、文章総量を抑えつつ、バリエーションを作るわけですね。 逆、すなわち単語を抑える方法もありますが、まあ、こちらはシナリオライターへの縛りが強すぎて、あまり喜ばれないようです。

2010-12-15 00:02:48
芝村裕吏 @siva_yuri

では、レースゲームで文脈を制御しつつ、文章量を削減する思考実験をしてみましょうか。 って、なるべく平易な話を心がけていますが、難しかったらすみません。 芝村は専門バカなのです。

2010-12-15 00:05:06
芝村裕吏 @siva_yuri

まず、あるライバルカーに激戦の末勝って、喜ぶ主人公がいたとしましょう。 ライバルカーのドライバーは可愛い女の子ですが正体を隠しているとしましょう。

2010-12-15 00:07:17
芝村裕吏 @siva_yuri

そう言う設定貰ったら、シナリオライターはわーいと、書き始めると思いますが、そこはゲームで、展開は無数にあり得ます。 そも主人公が勝てない可能性もあるわけですね。 ここで何か気づきませんか。 そう、ゲームの結果や展開は、文脈に当てはめやすいのです。

2010-12-15 00:10:23
芝村裕吏 @siva_yuri

ちょっと待った。 と、ここで指摘される人もいるでしょう。そうそう、その通りです。 普通にやれば、分岐と言う形でここは作業量がただ増えるところですね。 そうそう。ここがポイント。 文章総量が実際に減るかどうかは、分岐するか、どうかの差です。

2010-12-15 00:12:29
芝村裕吏 @siva_yuri

頭が良い人は、ここであ。分岐はするけど、文章は使い回すんですねと言うでしょう。 その通りです。 正確には、プレイ展開から文脈を作りつつ、適切に部品化された短い文章を再生することで、ストーリーバリエーションを増やして行く訳ですね。

2010-12-15 00:17:19
芝村裕吏 @siva_yuri

ここで大切なのは、AIは文脈の制御を行うこと。 次に大切なことは、それを適切な形でゲーム内情報から導き出すことです。

2010-12-15 00:20:34
芝村裕吏 @siva_yuri

例えば、正体を隠した女の子レーサーがいたとして、お話的には正体がわかった時にアー とか、やっぱりとか、言わせないといいけない訳です。 これをお話的に言えば、伏線としてばらまかないといけません。 で、文章量を減らすなら、ここをプログラムで女の子ぽい挙動をさせる事で、解決狙う訳。

2010-12-15 00:25:12
芝村裕吏 @siva_yuri

例えば、尻につかれると途端に挙動不審になるビビリ屋にするとか、勝っても負けても、普通は降りてこずにそのまま走り去るとか。 車のエンジン馬力が低いけど、速くする(体重が軽い伏線) などを入れる訳ですね。

2010-12-15 00:28:31
芝村裕吏 @siva_yuri

文章を書くだけが、お話を伝える手段ではありません。 ともすれば忘れがちになる、基本的な事です。 でも、他の表現を使う事で、文章量を減らす事は出来ます。 通常文章が一番コストが低い物ですが、とは言え、必ずしもとは限りません。いつも試算はすべき事だと思います。

2010-12-15 00:31:56
芝村裕吏 @siva_yuri

そも、レースゲームで文章を沢山見せるのは、どうかしてますよね。 お金やコストで片付かないものは沢山あります。 文章削減はコスト削減のためでは無いとなれば、それこそユーザーの為でしょうから、私は積極的にAI導入を進めてもいいと思います。

2010-12-15 00:37:16
芝村裕吏 @siva_yuri

先のケースで言えば、物凄く競り合ったレースの時だけ素顔を見せるとかだと、最初に見せた通りの展開になるでしょう。 ユーザーは喜んでくれるかも知れません。 そうですね。きっと目の前で停車して、キコキコ手回しハンドルで窓開けた後、涙目で睨まれて、次は負けないと言われて去ってくかと

2010-12-15 00:38:56
芝村裕吏 @siva_yuri

以上、説明終わり。 なんかAIな話じゃなかった。すみません。

2010-12-15 00:40:18
芝村裕吏 @siva_yuri

まあ、俺なら涙目の程度をレース中抜かれた回数で変化させるね。

2010-12-15 00:44:25
芝村裕吏 @siva_yuri

拙い説明だった。 いかんいかん。コンピュータの相手ばかりするもんじゃないな。

2010-12-15 00:48:05