二人零和有限確定完全情報ゲームのつくりかた

こんにちは！[Life is Tech ! #1 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/life-is-tech)の24日目を担当するらっしーねです！

明日はクリスマス！今日はゲームでもしてゆっくり過ごしたい！でもゲームってするだけで本当にいいのかな…？どうせなら、自分でもゲーム作ってみたい！！！
そんな思いから、今回は皆さんに「**二人零和有限確定完全情報ゲーム**のつくりかた」を伝授しようと思います！！


# 二人零和有限確定完全情報ゲームって、何？
いきなり難しそうな単語が出てきましたが、これは単語がたくさん集まってできたものなので、意味を理解すれば全く難しくありません。噛み砕いていきましょう。

### 二人ゲーム
二人ゲームとは、その名の通り二人でやるゲームのことを指します。トランプのスピードや将棋も二人ゲームですし、剣道や柔道の試合なども二人ゲームに分類されます。また、二チームであれば、バスケットボールなどの競技も二人ゲームに分類されます。しかし、ババ抜きや麻雀など、二人以上でプレイするゲームはこれにはあたりません。

-ラグビーは15人対15人の合計30人で行う競技ですが、試合は二チームで行うため二人ゲームに分類されます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722141/2f022fd2-25a7-44b3-2d3a-04db3f71eb98.jpeg" width=80%>


### 零和ゲーム
零和ゲーム（ゼロわゲーム）とは、誰かの利益が別の誰かの損になり、その損得の合計（和）がゼロになるゲームのことを指します。例えばサッカーにおいて、片方のチームに1点が入れば、もう片方のチームは1点損したことになり、和は 1 + (-1) = 0 になります。
基本的に勝負事のほぼ全ては零和ゲームだと言われていますが、例外もあります。例としてスーパーマリオブラザーズを考えてみましょう。このゲームをクリアすれば、プレイヤーは「ゴールをした」という利益を受けますが、コース側は不利益を受けません。同じように、プレイヤーがゲームオーバーになったからといって、コース側が利益を受けることはありません。

### 有限ゲーム
有限ゲームとは、お互いが何らかの行動をしていけば必ず試合が終わる、手数が有限なゲームのことを指します。
実際に、この世の全てのゲームは有限ゲームであるといっても差し支えありません。対義語の無限ゲームは終わりを目指さないため勝敗がつきませんし、勝敗のつくゲームは全て有限ゲームであるということができます。この世で唯一の無限ゲーム、それは人生である。と、どこかの誰かが言っていました。

### 確定ゲーム、完全情報ゲーム
確定ゲームとは、全ての事象が運に左右されることのないゲームのことを指します。
そして完全情報ゲームとは、全ての情報がプレイヤーに公開されているゲームのことを指します。
例えばジャンケンは、出す前からそれぞれの手が確定しているので確定ゲームですが、相手の出す手はわからないので完全情報ゲームではありません。一方すごろくなどのサイコロを使用するゲームは、出る目が決まっていないので確定ゲームではありませんが、全員が公開された同じ情報を共有しているので完全情報ゲームとなります。

以上の条件をすべて満たしたゲーム、それこそが「二人零和有限確定完全情報ゲーム」です！具体的な二人零和有限確定完全情報ゲームの例として、将棋、チェス、囲碁、オセロなどが挙げられます。
これらのゲームの共通点は、「それぞれの局面に絶対の正解の手がある」ことです。


# 二人零和有限確定完全情報ゲームと人工知能

先ほども述べた通り、二人零和有限確定完全情報ゲームには絶対の正解があります。なので、一秒間に何万、何億という手を読むことができるコンピュータ（AI）は、こういったボードゲームをプレイする上では非常に強力な存在となります。 
例として、どうぶつしょうぎというボードゲームを見てみましょう。これは3×4マスの簡単なボードゲームです。このどうぶつしょうぎは二人零和有限確定完全情報ゲームの一種なのですが、なんとこのゲーム、お互いが最善手を指し続ければ78手で後手が勝利することが既に知られています。つまり、後手が正しい手を指す限り、先手は100%後手に勝つことはできないのです（参考までに、どうぶつしょうぎに絶対に負けない[最強のコンピュータと戦えるサイト](https://mame.github.io/dobutsu-shogi-master/)を貼っておきます）。このように、簡単なボードゲームであれば、コンピュータは最後まで読み切ってしまいます。
それでもこのゲームが競技として成り立っているのは、プレイヤーが人間だからです。人間は一秒間に数万手も読めませんし、ミスをすることもあります。だからゲームを作るときも気楽にいけば大丈夫！難しく考えなくても、楽しく遊ぶことができればOKです！

-とっても可愛らしいデザインのどうぶつたち。実はこのゲームを完全解析して論文を出した方もいらっしゃいます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722141/084c26db-96b9-57cc-f96d-8bb5d7f629b9.jpeg" width=80%>
# 二人零和有限確定完全情報ゲームのつくりかた

それでは実際に作っていきましょう！

### ①ゴールを決めよう
全てのゲームには、勝利するための目的、ゴールが存在します。二人零和有限確定完全情報ゲームの場合は、それらのゴールは大抵
・〇〇を取る
・〇〇をそろえる
・〇〇にたどり着く
のどれかです。例えば将棋やチェスなどは「先に相手の王様を取る」ことがゴールです。

### ②そのゲームの特徴、強みを創ろう
これはボードゲームに限ったことではありませんが、「おもしろいゲーム」を作るには、何かそのゲーム特有の強みを創る必要があります。それは本当になんでもOK！相手との駆け引きを強みにしてもいいし、デザインのおしゃれさでも大丈夫です。

### ③ルールを決めよう
とにかくぱっと思いついたものでOKです。できるだけ①と②で決定した要素を取り込めるようにした方が良いゲームができます。もし何も思い付かなければ、既存のゲームを参考にしてみても良いかもしれません。修正は後からいくらでもできるので、まずは作っていきましょう！

### ④誰かとプレイしてみよう
当然ですが、二人で行うボードゲームは相手がいなければ成り立ちません。ある程度一人で考えたら、誰かと一緒にプレイしていきましょう。

### ⑤修正をしていこう
最初から完璧なゲームシステムが出来上がっていることは稀なので、出来上がったボードゲームには大抵「この行動強すぎるな」や「こうすれば勝ちじゃん」のような、いわゆる「ゲームシステムの欠陥」が存在しています。その強すぎる行動に対してどのようにリスクをつけていくかが、これから行う修正のベースの考えとなっていきます。

例として、HEXという二人零和有限確定完全情報ゲームを見てみましょう。このゲームでは、コマを一つずつ盤に置いていって、青なら上と下、赤なら右と左をつなげることができれば勝利となります。
…ただこのゲーム、このままだと先手が圧倒的有利になってしまい、あまり面白くありません。その解決策として、「先手が打った手を後手が自分の手としてプレイするか選べる」という性質があります。つまり、先手が打った手によって自分の色を赤と青どちらにするかを決めることができるのです。これにより、先手は強すぎる手を打てば後手に取られてしまうが、弱すぎる手を打てば後手にそのまま続けられてしまうため、強すぎず、かつ弱すぎないマスにコマをおかなければなりません。
#### HEXのあそびかた
プレイヤーは交互に自分の色のコマを置いていきます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722141/b56b72f7-b7f5-01f8-164a-1e9f36152f9d.png" width=50%>
自分のコマの色と同じ色の辺をつなぐことができれば勝利となります（写真は赤の勝ち）。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722141/dbdc0be3-6146-7885-31d1-4e03cbc74faa.png" width=50%>


もしうまく修正ができた！と思ったら、もう一度誰かとプレイしてみましょう。④と⑤を繰り返して行うことによって、より洗練されたボードゲームになっていきます。

### ⑥完成！
プレイヤーが二人とも「もう一回やりたい！！」と思えるゲームができたら、自分だけのボードゲームの完成です！


# 終わりに
最後に、以前僕が作った二人零和有限確定完全情報ゲーム「Shirain!」を紹介したいと思います。Shirain!は「自分のコマを三つ一直線に並べれば勝利」という、三目並べを進化させたゲームです。普通の三目並べでは引き分けが多発しますが、Shirain!ではコマを置いた後にそのコマを動かすことができるので、引き分けがかなり少なくなります。興味のある方は、ぜひ[こちら](https://apps.apple.com/jp/app/shirain/id1501290436#?platform=iphone!)からダウンロードしてみてください！最後まで読んでいただいて、ありがとうございました！！！

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722141/33a47ab6-ae64-e5c6-de5d-3fd4afbeac0d.png" width=30%> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722141/6d01f940-bb00-0f51-7256-62658203cdab.png" width=30%>

明日はクリスマス！アドベントカレンダーの最後を飾るのは、このアドベントカレンダーの企画者であるなべさんです✨