nikeeshi のコーディング記

コーディングの成果をはっつけるとこ。このブログにあるソースコードはNYSL Version 0.9982に従い公開します(2014/06/18)。

遅延情報ゲーム

前書

前々からぼんやりと考えてたことなんですが、形にしたいなと思ったので書きます。 まあコーディングとはあんまり関係ないんですけどねー。 格闘ゲームっていうと狭義的にはストiiの流れを汲むゲーム一般のことを指すと思うのですが、ここでは広義的な格闘ゲームに話題を広げて考えます。 それで広義的な格闘ゲームについて、AIが人間らしさを得るためのゲームのモデルを考えました。

概要

二人非協力ゼロ和までは前提。つまり、主体Aと主体Bがいて、それぞれスコアがsと-sであるとします。 完全情報の定義を良く知らないので、時間的に最大限の情報を得る能力があるということにしますね。つまり、未来の情報は手に入れられないと。 将棋とかをシュミレートするなら完全情報交互ゲームをつかえばよいです。じゃんけんは完全情報同時ゲーム。 では格ゲーはどうでしょう。完全情報同時ゲームとしてシュミレートしてよいのでしょうか。

AI

以降の考察は格ゲーにおいて人間よりもAIが圧倒的に強いという仮定のもとに行っているものなので、時代が追い付いていない場合は待っててください。

設定

格ゲーの設定をします。この要素がない格ゲーがあったら教えてください。 - 硬直とは、入力が反映されない状態をいうとする。例えば、攻撃中やダメージを受けている間など。 - 弱攻撃とは、硬直が短い攻撃をさすことにする。 - 強攻撃とは、硬直が長い攻撃をさすことにする。大抵、弱攻撃より効果が大きい。 - ガードとは、相手の攻撃に反応して行い、攻撃の効果を弱められる効果を持つ行動のうち硬直が短いものをさすことにする。この定義では相手の攻撃に先行できる弱攻撃はガードに入る。

一般的なAIの特徴(主観)

主観注意。 - 必ず当たる状態の弱攻撃やガードは失敗しない。非人間的な反応速度でいじめてくる。例ですけど、スマブラDXのレベル9のファルコは地上から攻めていくといつも、弱連打(蹴り)で殺されるとか。 - 入力が正確。1Fもずれずに動ける。 - アホ。絶対に当たらない位置で強攻撃ぶっ放すなど、人間ではありえないような行動をする。

目的

AIを人間臭くする。AIに強さのパラメータsをつけたとき、AI(s)が任意のsで人間臭い状態にする。

定義

人間臭いとは、反応速度が程よく、入力精度が程よく、戦略の論理性も程よいことをいう。

方法

本題です。AIにハンデをつけます。AI vs AIなら両方に、AI vs 人間ならAIだけにハンデをつけます。 ハンデのつけ方はゲームを変えることによって行います。情報を与えないことによって行います。

従来のゲームモデル

時間は離散的な時間を考える。すなわち、t_k=kh (kは自然数)という時間を考える。 t_kの時点で両方の主体はt_l (l<k)のすべての行動を知っている。 このモデルの欠点はhを小さくするほど、主体が速い反応速度を持つことになってしまう点だ。

遅延情報ゲーム

上のモデルにちょっと改良を加える。 ある定数v(=nh)をとる。 t_kの時点でt_l (l<=k-v)のすべての行動を知っているとする。 このモデルではAIは反応速度を抑えられるが、入力精度は抑えられない。 また、人間の「集中しているときには速く反応できる」という性質をシュミレートできない。

準備可能な遅延情報モデル(未完成)

「集中しているときには速く反応できる」という性質をシュミレートするモデル。 AIにvを各情報ごとに設定させるというもの。ただvを自由に設定させすぎるといけないので、うまくいかない。

入力精度を落とす方法

考え中。

あとがき

遅延情報でぐぐったら運行情報がでてきたので、名前を考えたほうがいいと思った。