AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

次はトランプゲームを作る予定

今週は色々と忙しいのですが、終末はトランプゲームでも作ってみようと思います。
大富豪かセブンブリッジあたり。
セブンブリッジは麻雀と似てますが、大富豪の方が作りやすいかな?


トランプゲームの場合、CPU側が人間の手札を覗けばいくらでも強くできます。
それではプレイヤーが面白く無いので、
見ないように作ればいいんですが、それだと弱くなりますw
CPUがズルをしているかどうかは傍目には分からないので、
どっちで行くかは作る人の趣味の問題かと思います。
ズルせずに強い思考エンジンを作るぜ!と思えばそっちの路線で行くべきでしょう。


大富豪の思考エンジンの作り方としては、

何枚組で出すか?
何の数字で出すか?
をそれぞれ考えて、出し方を検討する必要がありますが、
ざっくり言うと、いきなり2を出すのはもったいないし、2・2で出すとものすごくもったいない。
戦略としては、3に近い札をもっていればなるべく早めに出して、
強い札は温存しておくという形になります。
3を2枚もってるなら、自分に手番が来れば即だした方がいい。
そういうルールをAIに入れるとして、評価としては
Σwxという形で表現できると思います。
wは重みで、xはその特徴が成立しているかどうか。
色々なルールを取り入れるとして、そのルールの和で評価する時、どのルールを優先するべきかを
重みで表現するわけです。
例えば、2を二枚持ってるけど、二枚同時に出すよりは、分けて出したほうがいいとか。
3を持ってるので、2を出して手番を取ってから3を出そうとか。


期待値で考えてもわかりやすいかもしれません
3に近い札をもっている程負ける確率が高く、2にちかい札を持つ程、勝つ確率が高い
足してやれば期待値がでます。勝利確率と言ってもいいかもしれません
一方で沢山札を持っていると危険で、少ないと勝てる確率が上がります、
また、他のプレイヤーとの札の差もあるかもしれません
自分が3枚しか残りが無くても、他に一枚しかもってないプレイヤーがいれば
自分が劣勢のはずです。


次の方向性は、相手の札を予想する方向です。
自分の持っている札と場に出た札は、CPUは完全に暗記することができます。
これはコンピュータの有利なところだし、捨てられた札を暗記していてもズルではありません
人間もやろうと思えばできるからです。
麻雀やポーカーの強い人は覚えているでしょう。
そうすれば、各自が持っている札を絞り込むことができますから、
類推ができるようになります。
相手の手札の出し方も類推の手がかりになるかもしれません。
6・6と出してきた場合、9・9などを持っていて、一気に札を減らそうと考えているかもしれません。




トランプゲームで先読み探索までは通常しないと思いますが、
通常2は出さないけど、3を持ってるなら3を捨てるために2は出すみたいな
特殊なルールを沢山組み込むわけです。
この重みを自分でつけていくならば、それは旧来のエキスパートシステム的なAIになるでしょう。
AIを作る側からすると盆栽作りみたいで可愛いです。


重みがよく分からないので、シミュレーションをして重みをつくる参考にしたり、
重みがランダムの初期状態のAI同士を戦わせて、ゲームの結果から学習させて行く方向もあるでしょう。
これは適切なルールさえ組み込んでおけば、重みは自動的に修正されて強くなってくれそうで
楽ですし、なんだかかっこいいです。


とりあえずは、ざっくり動くものを作ってみて、作りながら考えてみようと思います。