4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Slay the SpireをAIにプレイさせる方法

Last updated at Posted at 2025-01-26

本記事について

大人気ローグライクゲーム「Slay the Spire」を「spirecomm」というライブラリを使用してサンプルのAIにプレイさせました。
そのAIにプレイさせる具体的な方法を紹介します。

AIのプレイ動画

Act3の50階層のボスを倒すまでのAIのプレイ動画です。
鍵を入手していなかったため、Act4には到達できませんでしたが、基本的には優秀なAIであり、終始危なげなくプレイしていたという印象を受けました。

Slay the Spireとは

Mega Crit Gamesが開発した、非常に人気の高いデッキ構築型ローグライクゲームです。
プレイヤーは塔を登りながら、各階層でモンスターと戦い、新しいカードやアイテム(レリック)を獲得し、それらを使用してデッキを強化していきます。
数百種類のカードとレリックが存在し、遭遇する敵やイベント、入手できるレリック、塔構造などがランダムなため、高い戦略性が求められ、再プレイ性の高いゲームとなっています。
コミュニティが活発で、多くのMod(一般ユーザーが公開した、本ゲームの要素や機能を変更するためのプログラム)が無料で公開されています。

spirecommとは

Slay the Spireと外部プロセスを通信するためのPythonライブラリです。
本ゲームから外部プロセスに現在のゲームの状態(プレイヤーの手札、デッキ、体力、敵の状態など)を送信したり、外部プロセスからゲームにコマンド(ゲーム開始、カードの使用、ターンの終了など)を送信したりできます。
本ライブラリを使用することで、外部のAIに本ゲームを自動プレイさせたり、AIに強化学習させることが可能です。
本ゲームをプレイするサンプルのAIが付属されており、今回このサンプルAIにプレイさせました。

実行環境

  • MacBook Air
  • Apple M2
  • macOS Sonoma 14.5
  • Python 3.11.5
  • pip 24.3.1
  • zsh 5.9

準備するプログラムと設定ファイル

Steam

Slay the Spire本体とModを入手するために必要です。
上記公式サイトからインストールしてください。

Slay the Spire(Game)

Slay the Spire本体です。Steamストアページから購入・インストールしてください。
インストール後は、以下の場所に配置されます。

~/Library/Application Support/Steam/steamapps/common/SlayTheSpire/SlayTheSpire.app

spirecomm

以下のコマンドを実行してインストールしてください。
Pythonは3.5以上のバージョンである必要があります。

インストール用コマンド

cd ~
git clone https://github.com/matthewReff/spirecomm.git
cd spirecomm
python3.11 -m venv myenv
source myenv/bin/activate
pip install --upgrade pip==24.3.1
pip install .

ModTheSpire

Slay the SpireにModを適用するためのランチャーです。
上記のSteamワークショップから入手してください。
上記ページのサブスクライブボタンを押すと、以下の場所に自動的にダウンロードされます。

~/Library/Application Support/Steam/steamapps/workshop/content/646570/1605060445/ModTheSpire.jar

ダウンロード後、以下の場所に移動させてください。

~/Library/Application Support/Steam/steamapps/common/SlayTheSpire/SlayTheSpire.app/Contents/Resources/ModTheSpire.jar

インストール用コマンド

cd ~/Library/Application\ Support/Steam/steamapps/common/SlayTheSpire/SlayTheSpire.app/Contents/Resources
mv ~/Library/Application\ Support/Steam/steamapps/workshop/content/646570/1605060445/ModTheSpire.jar .
ls -l ModTheSpire.jar

MTS.sh

ModTheSpireを起動するためのスクリプトです。以下の場所に作成してください。

~/Library/Application Support/Steam/steamapps/common/SlayTheSpire/SlayTheSpire.app/Contents/Resources/MTS.sh

作成したMTS.shに実行権限を付与し、以下の内容を記述してください。

#!/bin/sh
cd ~/Library/Application\ Support/Steam/steamapps/common/SlayTheSpire/SlayTheSpire.app/Contents/Resources
./jre/bin/java -jar ModTheSpire.jar

インストール用コマンド

cd ~/Library/Application\ Support/Steam/steamapps/common/SlayTheSpire/SlayTheSpire.app/Contents/Resources
touch MTS.sh
chmod u+x MTS.sh
ls -l MTS.sh
setopt interactivecomments
vim MTS.sh # 内容を編集

BaseMod

Slay the SpireのModの導入・開発を支援するためのModです。
同様に上記のSteamワークショップからサブスクライブボタンを押し、ダウンロードしてください。
本Modは以下の場所に自動的に配置されます。

~/Library/Application Support/Steam/steamapps/workshop/content/646570/1605833019/BaseMod.jar

本Modを以下の場所に移動してください。

~/Library/Application Support/Steam/steamapps/common/SlayTheSpire/SlayTheSpire.app/Contents/Resources/mods/BaseMod.jar

インストール用コマンド

cd ~/Library/Application\ Support/Steam/steamapps/common/SlayTheSpire/SlayTheSpire.app/Contents/Resources
mkdir -p mods
cd mods
mv ~/Library/Application\ Support/Steam/steamapps/workshop/content/646570/1605833019/BaseMod.jar .
ls -l BaseMod.jar

Communication Mod

Communication ModはSlay the Spireと外部プロセスとの通信を可能にするModです。
このModを使用することで、ゲームの状態を外部プロセスに送信したり、外部プロセスからゲームにコマンドを送信したりすることができます。
spirecommと似ていますが、spirecommはこのCommunication Modを利用して、ゲームを簡単に制御できるようにするためのPythonライブラリです。
Communication ModはJavaで書かれています。

同様に、上記のSteamワークショップから入手してください。

本Modは以下の場所に配置されます。

~/Library/Application Support/Steam/steamapps/workshop/content/646570/2131373661/CommunicationMod.jar

以下の場所に移動してください。

~/Library/Application Support/Steam/steamapps/common/SlayTheSpire/SlayTheSpire.app/Contents/Resources/mods/CommunicationMod.jar

インストール用コマンド

cd ~/Library/Application\ Support/Steam/steamapps/common/SlayTheSpire/SlayTheSpire.app/Contents/Resources
mkdir -p mods
cd mods
mv ~/Library/Application\ Support/Steam/steamapps/workshop/content/646570/2131373661/CommunicationMod.jar .
ls -l CommunicationMod.jar

config.properties

Communication Modの設定ファイルです。

以下の場所に作成してください。

~/Library/Preferences/ModTheSpire/CommunicationMod/config.properties

そして以下のような内容を記述してください。

verbose=false
command=python /Users/miya/spirecomm/main.py
runAtGameStart=true

verboseは詳細なログを表示するためのフラグです。
commandはプレイさせるAI(main.py)のパスです。"/Users/miya"は著者のホームディレクトリですので、ご自身のホームディレクトリに置き換えてください。。"~"は使用できないようです。
runAtGameStartは、ゲーム起動時に自動的にAIにプレイさせるかを指定するフラグのようです。

作成用コマンド

mkdir -p ~/Library/Preferences/ModTheSpire/CommunicationMod
cd ~/Library/Preferences/ModTheSpire/CommunicationMod
setopt interactivecomments
vim config.properties # config.propertiesの内容を編集

AIにプレイさせる方法

上記のプログラムと設定ファイルの準備が完了後、MTS.shを実行し、ModTheSpireを起動します。
すると、以下のようなランチャー画面が表示されます。

ModTheSpire.png

BaseModとCommunicationModにチェックを入れ、Playボタンを押すとAI(main.py)によるプレイが開始されます。

ModTheSpireを起動するためのコマンド

cd ~/spirecomm
source myenv/bin/activate
~/Library/Application\ Support/Steam/steamapps/common/SlayTheSpire/SlayTheSpire.app/Contents/Resources/MTS.sh
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?