WSL2でDCSS Webtile1人プレイ

この記事はRoguelike Advent Calendar 2022の1日目の記事です。
adventar.org

ざっくり自己紹介

NetHack変愚蛮怒Dungeon Crawl Stone Soup(以下DCSS)などのローグライクを遊んでいました。最近あまりプレイできていませんが……
また、趣味の一環としてDCSSのオンラインプレイサーバーを運用したりしています。
WebTiles - Dungeon Crawl Stone Soup

オンラインプレイサーバーの問題点

DCSSのオンラインプレイサーバーは非常に便利です。ありふれたブラウザのみでアクセスでき、自分で管理する必要もありません。
他人のプレイも観戦できますし、ランキングも残ります。
しかし、「他人にプレイを見られるのはちょっと……」という感想もそこそこありました。
なので、「ローカルのコンピュータで自分専用のプレイサーバーを簡単に立ち上げ、思う存分プレイする」手順を今回は紹介します。

WSL2をインストールする

DCSSのサーバーはLinux上で動いています。そこそこ前までWindowsPCの上でLinuxを動かそうとすると仮想PCソフトをインストールして、Linuxインストールして、それから……みたいないろいろ手順が必要だったため、慣れていないと遊ぶ前にやる気が枯渇してしまいがちです。
WSL2(Windows Subsystem for Linux 2)を使うことで、そこらへんの手順の簡略化を図ります。*1

下準備としてタスクバーの検索フォームから「Windowsの機能の有効化または無効化」を検索し、「LinuxWindowsサブシステム」「仮想マシンプラットフォーム」の2カ所にチェックが入っているかを確認します。入っていなければチェックを入れます。

Windowsキー+Xを押して「Windows PowerShell(管理者)」を起動します。「このアプリがデバイスに変更を加えることを許可しますか?」に「はい」を押します。
PowerShellのウィンドウが立ち上がってコマンド入力待ち状態になるので、インストールコマンドを打ちます。

wsl --install

インストールが終了したら、Microsoft Storeから「Ubuntu 22.04.1 LTS」を検索し、こちらもインストールします。「開く」を押します。

Linuxの画面が立ち上がります。

Enter new UNIX username: 
New password:
Retype new password:

使いたいユーザー名(半角英数で)、パスワード(2回)を入力します。

Welcome to Ubuntu 22.04.1 LTS (略)
 
(ユーザー名)@(マシン名):~$

と表示されたらひとまず完了です。

Linux設定もろもろ

プログラムのアップデート
sudo apt update && sudo apt upgrade

パスワードが要求されるので入力します。"Do you want to continue? [Y/n]" と表示されるので"Y"を入力します。

ビルドに使うプログラムをまとめてインストールします。

sudo apt install build-essential flex bison libsdl1.2-dev libsdl-image1.2-dev libncurses-dev ccache binutils-gold python3-pip

手打ちだと面倒なのでWindows Terminalを使ったほうがいいかもしれません……

sudo apt install python3.10-venv
python3 -m venv dcss
cd dcss

python仮想環境を作ってその中に入ります。

source ./bin/activate

python仮想環境を有効化します。プロンプトの頭に(dcss)が付きます。

pip install pyyaml tornado

使用するpythonライブラリを仮想環境内にインストールします。

git clone --recursive -b stone_soup-0.29 https://github.com/crawl/crawl.git dcss-0.29

ソース一式をダウンロードします。今回はDCSS 0.29を使います。

cd dcss-0.29/crawl-ref/source
notepad.exe AppHdr.h

Windows側のメモ帳でファイルを開いて編集できます。

// #define DGAMELAUNCH
 ↓
#define DGAMELAUNCH

#define DGL_MACRO_ABSOLUTE_PATH
 ↓
// #define DGL_MACRO_ABSOLUTE_PATH

2カ所修正します。

make WEBTILES=y SAVEDIR=saves

ビルドします。

python3 webserver/server.py 

サーバーを起動します。(Ctrl+Cで停止します)
http://localhost:8080/#lobby にブラウザでアクセスします。
[Register]のリンクをクリックしてユーザー名とパスワードを設定し、ログインします。
[Play trunk]を押せばゲームが開始します。(edit rc)を押すことで設定ファイルが編集できます。



簡略化といいつつそこそこ長くなってしまいました……まあ備忘録として誰かの役に立てば幸いです。

次回はInfyさんの「好きなところを語る①:Cogmind」です!

*1:Hyper-V非対応のPCでは動かないかもしれません。ご了承ください。