KMC活動ブログ

京大マイコンクラブの活動の様子を紹介します!!

変愚蛮怒をブラウザで遊べるようにしてみました

id:hanazukiです.わたしがKMCに入部したころは,いつ部室に顔を出しても決まって同じ人が奥の部屋のこたつに座っていて,その先輩はゲームを作っているんだか遊んでいるんだか専攻は何なのかどこに住んでいるのかよく知らなかったのですが,とにかく後輩の面倒見がよく,わたしは先輩の作ったり遊んだりしていた変愚蛮怒へんぐばんどというゲームを教えてもらいました.変愚蛮怒はローグライクと呼ばれる種類のロールプレイングゲームで,ターミナル上で動くように全てが文字で表現されています.@が主人公,pが人間,oがオーク,緑の#が木,青い~が水溜まりといった具合です.

変愚蛮怒のプレイ画面: はじまりの街は~#に囲まれ,宿屋や商店が立ち並ぶ.通りには野犬Cがうろついているのが見える.街の外には鬱蒼とした#が広がり,小山^の麓には洞窟>もあるようだ.何か邪悪な者たちの根城になっているに違いない.

何かオプションを付けてビルドすると,文字の代わりにモンスターの画像を出したりもできるらしいですが,やったことがないので詳しくは知りません.文字をじっと見ているとだんだん人間やオークや森や池に見えてくるので,特に支障なくいつもテキストモードで遊んでいます.

初めにチュートリアルとして受けられる「もの言えぬ証人 (Dump Witness)」クエストでは冒険者が家の中で不審死しているので様子を見てこいと言われます.実はこの家の間取りはKMCの部室を模していて*1,酔っぱらいの薬*2の横に転がってる屍は部員なんだよ*3……なんてセールストークを先輩から聞かされて*4,確かにお風呂場に箱が積んである*5し,バルコニーに殺人蜂もいる*6と興味を惹かれて遊び始めました*7

当時のKMCの計算サーバにはこのゲームがインストールされていて,自宅や大学にいるときも部室にSSH接続して冒険をしていたものでした.他に遊んだことがあるローグライクは『わくわくぷよぷよダンジョン』と『チョコボの不思議なダンジョン』シリーズくらいなもので,ローグライクというものにそこまで詳しいわけでも愛着があるわけでもないのですが,変愚蛮怒はいまでも時折ふと遊びたくなります.

今は部室のサーバにはインストールされていないし,SSHの時代でもないので,もうちょっと手軽に遊べるようになるといいなーと思って,ブラウザで動くようにしてみました.現時点では,昨日リリースされた3.0.2-beta3をベースにしていて,バージョン3.0系列のベータ版を追いかけるように更新をしてゆくつもりでいます(変愚蛮怒の開発チームとは完全に独立した試みです).ゲーム内容には手を加えていないので,公式のスコアサーバーに墓標を立てられるようにもしています.オフラインでも遊べるはずなので,旅のお供にもどうぞ.

ブラウザ版はプログレッシブウェブアプリ(PWA)になっていて,ブラウザで「アプリをインストール」(Chrome, Edge)や「ドックに追加」(Safari)などの操作をしてもらえば,^nなどを含むほとんど全てのキー操作を使えるようになります.もしおかしな挙動があれば,ヘルプメニューからフィードバックを送ってもらえると助かります*8

変愚蛮怒本体はC++で書かれているのでEmscriptenでWebAssemblyにコンパイルして,SvelteとXterm.jsで書いたフロントエンドにcursesのインターフェイスをでっち上げて繋いでいます.セーブデータや設定はIndexedDBに保存するようになっていて,設定のエクスポート・インポート機能をおいおい実装したいと思っています.Windows版に使われているBGM・効果音もWeb Audioで再生するようにしてみました.これまでSSH越しに遊んでいてもちろん音はなかったので新鮮な感じがしますね.スコアの投稿にはlibcurlが使われていましたが,fetch APIに差し替えています.

ソースコードはGitHubで公開しています.変愚蛮怒オリジナルからの差分は,オリジナルと同じMoria/Angbandライセンスに加えて,将来OSS化したくなったときに備えてMITライセンスのデュアルライセンスとしますが,現状で全体としてはより制約が厳しい方のMoria/Angbandライセンスになります.

*1:連中は学外の木造アパートを隠れ家にしているらしい.

*2:20歳未満の部員が酔っぱらいの薬を飲んだら牢屋行きになる.

*3:朝に部室へ行けば転がっている部員を見ることができるそうだ.

*4:噂を信じちゃいけないよ.

*5:浴槽の底には古代のアーティファクトが眠っているらしい.

*6:通常,バルコニーに巣食っているアシナガバチは部員を殺害しない.

*7:変愚蛮怒は常習癖がつきやすい.君はもう手遅れだ.

*8:多少のバグでも報告してほしいそうだ.