
Nintendo Switch Onlineの加入者向けに提供されている「TETRIS 99」は、テトリスを99人で同時にプレイして1位を決めるというバトルロイヤルゲームです。そんなTETRIS 99で1位になることができるAI「ジェフ」が登場しました。ジェフはコンピュータービジョンを駆使してフィールド上のテトリミノの配置を認識し、深さ優先探索アルゴリズムを用いて落下してくるテトリミノの適切な配置を見つけるそうです。
そんなTETRIS 99で1位を獲得することができるAIを作成したのが、Ben Pinzone氏とSteven Schulte氏の2人。以下は2人が作成したテトリスAIの「ジェフ」が、TETRIS 99で1位を獲得する瞬間を収めた動画。ジェフはまだ完璧なテトリスAIではないそうで、1位を獲得することもあれば、10~15位で負けてしまうこともある模様。以下の動画を見れば、プレイ時間が経過すればするほど、ジェフがテトリミノの配置に苦労していることがわかります。
ジェフには以下の3つの要素があります。
目:画面からゲームの状態を確認する
脳:テトリミノをどこに落とすかを考える
手:Nintendo Switchに動きを入力する目
Pinzone氏らはHDMIスプリッターとキャプチャーカードを使用して、Nintendo Switchからの映像出力をPCで直接読み取ることにしました。
ジェフの目はOpenCVを使用してPythonで実装したそうです。脳
ジェフの脳の役割は、ゲームの状態をテキストベースで表現し、次にどのような動きをすべきかを判断することです。そのために、ゲーム画面の状態を把握し、深さ優先探索で実行可能なすべての動きのシーケンスを検索し、ボードが最適になるシーケンスを見つけ、最適な動きのシーケンスを実行することができるアルゴリズムをPinzone氏らは開発。Pinzone氏はジェフの脳を「ワークスティーリング(タスクを盗むことができるアルゴリズム)型マルチスレッド深さ優先探索アルゴリズム」と表現しています。手
手にはBluetooth経由でNintendo Switchコントローラーをエミュレートする「joycontrol」に少し手を加えたものを使用しているそうで、Schulte氏は「すべての功績は開発者と貢献者にあります」と記しています。ジェフは最高のプレイを実行できれば1位を獲得することができますが、プレイヤーの残り人数が10~15人ほどになると負けてしまうのがほとんどだそうです。Schulte氏は「努力すればジェフがほぼ無敵になれると、かなり自信を持って言えます。ただし、開発時間が長くなるにつれ、ジェフに大幅な改善を施す可能性はますます低くなっています。ジェフの開発はとても楽しかったですが、人間のTETRIS 99プレイヤーの勝利を奪いたくはありません。そのため、現状のジェフの状態に満足しています」と記しています。
なお、ジェフのソースコードはGitHub上で公開されています。
GitHub – bpinzone/TetrisAI
https://github.com/bpinzone/TetrisAI?tab=readme-ov-file
First place in Tetris 99 using computer vision, classical AI, and a whole lot of free time | TetrisAI
https://bpinzone.github.io/TetrisAI/
コメント