ゲーム

99人でテトリスをプレイするバトロワ「TETRIS 99」で1位を獲得できるAI「ジェフ」が登場


Nintendo Switch Onlineの加入者向けに提供されている「TETRIS 99」は、テトリスを99人で同時にプレイして1位を決めるというバトルロイヤルゲームです。そんなTETRIS 99で1位になることができるAI「ジェフ」が登場しました。ジェフはコンピュータービジョンを駆使してフィールド上のテトリミノの配置を認識し、深さ優先探索アルゴリズムを用いて落下してくるテトリミノの適切な配置を見つけるそうです。

First place in Tetris 99 using computer vision, classical AI, and a whole lot of free time | TetrisAI
https://bpinzone.github.io/TetrisAI/


TETRIS 99は通常のテトリスのルールに加えて、「プレイヤーが高得点を獲得すると、対戦相手のフィールドにテトリミノを追加する」というお邪魔要素が追加されています。99人で同時にプレイし、他プレイヤーからの妨害に屈せず、最後まで生き残ったプレイヤーが勝者となります。

そんなTETRIS 99で1位を獲得することができるAIを作成したのが、Ben Pinzone氏とSteven Schulte氏の2人。以下は2人が作成したテトリスAIの「ジェフ」が、TETRIS 99で1位を獲得する瞬間を収めた動画。ジェフはまだ完璧なテトリスAIではないそうで、1位を獲得することもあれば、10~15位で負けてしまうこともある模様。以下の動画を見れば、プレイ時間が経過すればするほど、ジェフがテトリミノの配置に苦労していることがわかります。

Jeff wins - YouTube


ジェフには以下の3つの要素があります。

目:画面からゲームの状態を確認する
脳:テトリミノをどこに落とすかを考える
手:Nintendo Switchに動きを入力する

◆目
当初、Pinzone氏らはテレビの前にウェブカメラを置き、これを使ってゲームの状況を読み取ろうとしていたそうです。しかし、ウェブカメラの撮影する映像は画質が低く、撮影のために部屋の照明を調整しなければいけないなどの問題が発生したそうです。そこで、Pinzone氏らはHDMIスプリッターとキャプチャーカードを使用して、Nintendo Switchからの映像出力をPCで直接読み取ることにしました。

テトリスでは横10マス、縦20マスのフィールド上にテトリミノを配置する必要があるため、プレイフィールドを10×20に分割し、テトリミノを構成する各ブロックを個別に認識できるようにしたそうです。さらに、テトリスでは次に落ちてくるテトリミノがフィールド右横の「NEXT」に表示され、ユーザーのタイミングで自由に落とせるテトリミノを「HOLD」に確保することができます。これらも認識できるよう検出領域を拡大したそうです。


なお、ジェフの目はOpenCVを使用してPythonで実装したそうです。

◆脳
ジェフの脳の役割は、ゲームの状態をテキストベースで表現し、次にどのような動きをすべきかを判断することです。そのために、ゲーム画面の状態を把握し、深さ優先探索で実行可能なすべての動きのシーケンスを検索し、ボードが最適になるシーケンスを見つけ、最適な動きのシーケンスを実行することができるアルゴリズムをPinzone氏らは開発。Pinzone氏はジェフの脳を「ワークスティーリング(タスクを盗むことができるアルゴリズム)型マルチスレッド深さ優先探索アルゴリズム」と表現しています。

◆手
手にはBluetooth経由でNintendo Switchコントローラーをエミュレートする「joycontrol」に少し手を加えたものを使用しているそうで、Schulte氏は「すべての功績は開発者と貢献者にあります」と記しています。

GitHub - mart1nro/joycontrol: Emulate Nintendo Switch Controllers over Bluetooth
https://github.com/mart1nro/joycontrol


ジェフは最高のプレイを実行できれば1位を獲得することができますが、プレイヤーの残り人数が10~15人ほどになると負けてしまうのがほとんどだそうです。Schulte氏は「努力すればジェフがほぼ無敵になれると、かなり自信を持って言えます。ただし、開発時間が長くなるにつれ、ジェフに大幅な改善を施す可能性はますます低くなっています。ジェフの開発はとても楽しかったですが、人間のTETRIS 99プレイヤーの勝利を奪いたくはありません。そのため、現状のジェフの状態に満足しています」と記しています。

なお、ジェフのソースコードはGitHub上で公開されています。

GitHub - bpinzone/TetrisAI
https://github.com/bpinzone/TetrisAI?tab=readme-ov-file

この記事のタイトルとURLをコピーする

・関連記事
NES版テトリスの真の上限レベルを突破して2周目に突入した人物が現れる、勝負はキルスクリーンを超えて2周目の世界へ - GIGAZINE

ブラウザ内蔵PDFビューアでテトリスがプレイできる「PDFトリス」が登場 - GIGAZINE

世界的パズルゲーム「テトリス」の知られざる歴史とは? - GIGAZINE

テトリスのテトリミノを積み重ねて文字を描画する「Tetris Font」 - GIGAZINE

13歳のゲーマーがファミコン版テトリスを「完全攻略」、レベル157でキルスクリーン到達に成功 - GIGAZINE

NES版テトリスのレベル上限到達時のクラッシュを活用して任意のコードを実行し理論的にテトリスを無限プレイ可能にした猛者が登場 - GIGAZINE

in ソフトウェア,   動画,   ゲーム, Posted by logu_ii

You can read the machine translated English article Introducing the AI 'Jeff' that can win f….