AI Gaming はじめてみた


# TL;DR
https://www.aigaming.com がBitCoinを賭けて戦う、バトルフィールドだ！！
AIやpythonに興味があれば、一緒に参加しよう！！

# この記事は
pythonもAIも初学者なnoyaがAI Gamingというプラットフォームで学習をはじめたというお話

# AI Gamingとは


> AIgaming.com is a platform that allows computer programs (bots) to challenge each other in games, puzzles and competitions, with the added incentive of winning cryptocurrency (Bitcoin and Satoshi)

プレイヤーがお互いに対戦型ゲーム（○×ゲームとか、囲碁とか）をするBotを作成し、仮想通貨を賭けて競うためのプラットフォームです。とのこと。実際は、Oppoturnityについて入れたりする欄もあるので、AI人材を見つけるための基盤としての一面もあるのでしょうが、Oppoturnityに関しては無視することもできるので、気にせず登録してよいかと思います。

# How to Start
登録作業はとても簡単。さすが洗練されてきていますね。

1. https://www.aigaming.com にアクセス
2. 右上のRegisterから登録
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53452/64ed8802-edbe-5072-2a94-7d62777a8cff.png)
3. 必要事項を入力後、ダッシュボードがアクティベートされます

# どんなゲームがあるの？
簡単なゲームから難しいゲームまで２０種類くらいのゲームがリリースされています。

## Nought and Crosses
小学生の頃に熱中した○×ゲーム
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53452/7bc90588-2dbe-db40-f9d7-acaa0a7d5796.png)

## Battle Ship
相手の船を見つけて、早く全滅させた方が勝ち。（お互いに船の位置は見えておらず、着弾時の情報から場所を推測しています）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53452/bc876d29-95dd-8292-f743-97e166555e92.png)

## Match game
2枚のパネルを開いて、同じならポイント獲得！な神経衰弱。パネルの裏も表も画像のURLが渡されるので、まずはそれぞれのパネルが何なのか（動物・言葉・場所）を判断し、無駄なオープンを減らすところからスタートか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53452/1f59118a-14c5-96dd-0c2f-699f5488b7cc.png)

# BitCoinの稼ぎ方
## Missionをクリア
登録時にいくらかのSatoshiが配布され、ミッションを進めていくことでSatoshiを増やしていくことができます。現在で最大4万Satoshiまで獲得できる模様。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53452/85b2a78a-f2d9-a38a-af56-61827cdcfc60.png)

最初はあまり気にしなくても、○×ゲームをやっていれば、３０００Satoshiくらいにはなっていました。中には練習用Botと１００連戦して５０％以上の勝率をマークせよ、なんていうのもあります。

## Betして勝つ
Satoshiを賭けて戦うこともできます。ただ、賭けて戦うケースはまだ稀みたいです。将来、貯めたSatoshiを全額投入！みたいなバトルがみられたりもするのでしょうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53452/0572372e-83ad-a8b0-5034-6673298379cf.png)

## 引き出し方
調べ中。（あまり興味がない）

# 遊び方
上部メニューの”EDITOR"からコーディング画面に入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53452/7c51c876-240d-f68a-2e02-eaf2c8eb6ccc.png)

そのあと、Select Game Typeでゲームを選択すると、それぞれのゲームで「とりあえず動く」Botコードが記述されています。何もせずに右上のRunを押せば大抵の場合、ゲームが始まって、そして負けると思います。

## Trouble
自分の場合は登録したあとに、ユーザアカウント名が気に入らなかったので変更したのですが、その場合botの名前が登録済みのBotの名前と一致せずゲームがはじめらませんでした。
デフォルトのBotの名前は```(アカウント名)-defbot```になっているので```MY ACCOUNT >> BOT MANAGEMENT```で対応するBotを生成するか、旧アカウント名のBotを使うかなど、対応します。

## Coding
Sampleを参考にコーディングしましょう。
基本的にはゲームマスタが交代にとある関数にゲームの情報を引数として呼び出す(○×ゲームの場合は```calculateMove(gameState)```）ので、その中身を実装します。
gameStateの構造や返し値のフォーマットについては、https://www.aigaming.com/Help の各ゲームの説明かProgrammer’s Referenceにかなり丁寧に記載されています。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53452/25bbf9d2-5e84-ec6d-e2ff-3b64b1201665.png)

○×ゲームの場合は```gameState.Board```で一次元の配列としてボードの状態が引き渡されるので、これを理解して、自分のマークを置く位置nを```{Positison: n}```というJSONオブジェクトで返せばOKです。

## 対戦を始める
Select Opponentのドロップダウンで対戦相手を選択可能です。

- housebot-practice : 弱いBot。まずはこいつに勝ちましょう。
- housebot-competition　:　強いBot。筆者は現時点でまだ勝ててません。

### 対戦相手を指定する
ドロップダウンではなく、直接入力することで、対戦するBotを指名可能です。
面白いのは、自分自身とも対戦できるという点です。ブラウザを２面開いて、お互いに指名し合ってRunすれば、対戦可能です。（自分の作ったBot同士で対戦する、というミッションもあるので、是非とも試してみてください）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/53452/4cf1f8b9-e447-31f3-9fd8-d0a6e87203b3.png)

# これからやってみようと思うこと
- competition Botに勝つ
- 画像認識や自然文解析のクラウド基盤と連携して、他のゲームに挑戦する

# まとめ
以上、簡単にAI Gamingについてご紹介しました。ブラウザで完結し、気軽にpythonおよびAIについて、各自のレベルに合わせて学習できる、良い基盤だと思います。

それでは今回はこの辺で。