
ここは、Software Design 2016年10月号に寄稿した、「Unixコマンドライン探検隊」第6回のローグ(rogue)とロゴマチック(rogomatic)についての記事を補足する資料を提供するページです。取り扱っている情報は、技術評論社のSoftware Designサポートページで配布しているものとほぼ同じものです。本誌の記事とあわせて活用してください。また、技術的な情報、記事の修正などはSoftware Desingのサポートページを参照してください。
ローグは、ソースコードと一緒に提供されるドキュメントも英語である上、難易度的に高いこのゲームを手がかりなしでの攻略はハードルが高いかもしれません。以下に、日本語訳したドキュメントを含む、ゲームの攻略情報を提供します。
これらの資料は、誌面で取り上げたrogue Version 5.4.4. の配布ドキュメントとソースコードから著者が読み取った情報です。ひょっとすると、誤りがあるかもしれません。もしもおかしいなと思う場合、不明瞭な部分があれば、英語原文、ソースコードを確認してみてください。
英語でないと意味が不明瞭な部分もあるので、ぜひ原文(ビルドした時にできるrogue.html)と一緒によんでください。もとの文章は30年程前の環境のために書かれているので、現在はあまり使われていないような、面白いことも書かれています。
文中Unix関連のシェル、コマンドはRogueが配布されたBSD Unixが対象のようですので、シェルのプロンプトはcshのデフォルト“%”です。端末のスピード(1200 baud)などの記述があります。Ethernetなどではなく、シリアル(モデム経由やRS-232Cインターフェース)でホストシステムへ接続された端末を想定した話です。これが、一般的な環境でした。
昔大学の計算機センターでよくあった話だろうと思います。センターでアドベンチャーゲームをプレーしていると肩越しに、「木に登って、鳥の巣を確認しろ」、次は「家に戻ってカーペットの下を確認するのだ」などと、口出ししてくる奴がいました。ゲームをすべてやり終えたのかと聞いてみると、自分はプレーしていない。でもソースコードを読んだから、よく分かっているということ。
Unixなどでのゲームは、商用目的ではないので、製作者も大体ソースコードを配布する形で広く遊んでもらえるようにしていました。だいたいどのゲームも、辛口のコンピューターナードをうならせるために難易度は高めです。もちろん、攻略本なんてありません。今日ではそうした人気のゲームは、どこかのWeb上に攻略情報があるかもしれませんが、以前はUsenetなどネットニュースを使っての情報のやりとりが中心でした。
今回の記事の執筆のため、ひさしぶりにローグのソースコードを眺めていて、改めて感じたことがあります。こうしたゲームはソースコードが攻略情報の源泉であり、さらにゲームを面白くしたり難易度を調整したいなら、自らプログラムをハックして楽しむのが正しいコンピューター技術者のゲームの楽しみ方だということです。
本誌でも紹介しましたが、ローグの後さまざまなローグライクゲームが登場します。hack(ハック)は、ローグが出て間もなく登場しました。ハックは後にNethack(ネットハック)として発展し今も多くのファンがいます。難易度は、ローグよりも高いかもしれません。ローグが決められた単純な行動しかできないのに対してありとあらゆることができるのも特徴です。アイテムや職業の選択、ともに旅をする動物、さらにダンジョンを進んでいくと様々な謎が待ち構えています。きっと製作者たちは、ローグにこうした要素があったらと思って、機能やシナリオを加えていったのでしょう。
みなさんも、ソースコードが提供されているお気に入りのゲームを、ソースを読んで攻略し、自分なりのオマージュ作品を作ってみてはいかがでしょうか。
$ mkdir Rogue+Rogomatic
$ cd Rogue+Rogomatic
wgetではなくcurlを使うなら -O オプションを指定
$ wget http://www.anthive.com/rog/rogue5.4.4-ant-r1.1.2-src.tar.gz
$ wget http://www.anthive.com/rog/rogomatic-r2.0.2.tar.gz
$ tar xvzf rogue5.4.4-ant-r1.1.2-src.tar.gz
$ tar xvzf rogomatic-r2.0.2.tar.gz
$ wget http://image.gihyo.co.jp/assets/files/magazine/SD/2016/201610/download/rogue_rogomatic.patch_20160623
作業用ディレクトリにパッチファイルがあることを確認しパッチを当てる
$ patch -p0 < rogue_rogomatic.patch_20160623
$ wget http://image.gihyo.co.jp/assets/files/magazine/SD/2016/201610/download/make_brew.patch_20160621
$ cd rogue5.4.4-ant-r1.1.2
$ patch -u Makefile < ../make_brew.patch_20160621
$ cd rogue5.4.4-ant-r1.1.2
$ ./configure
ここで、不足のパッケージをyum, apt, brewでインストールする
(例えばubuntuでは、ncursesのライブラリが必要かもしれない)不足のパッケージをインストールしたら再びconfigureを実行# Ubuntuでの例 $ sudo apt install libncurses5-dev
(arm64bit環境では、config.guessが古くてconfigureに失敗するかもしれない)$ wget -O config.guess 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' $ wget -O config.sub 'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
$ make
問題がなければインストール
$ sudo make install
$ cd ../rogomatic-r2.0.2
$ ./configure
ここで、不足のパッケージをyum, apt, brewでインストールする
(例えばubuntuでは、autoconfが必要かもしれない)
# Ubuntuでの例
$ sudo apt install autoconf
configureが成功するまで続ける
$ make
問題がなければインストール
$ sudo make install
/var/games/rogomaticは手動で作成する、アクセス権限は誰でも読み書き可
$ sudo mkdir -p /var/games/rogomatic
$ sudo chmod 777 /var/games/rogomatic
$ cd ..
/usr/local/binにr-o-mをインストール
$ sudo cp r-o-m /usr/local/bin
$ sudo chmod 755 /usr/local/bin/r-o-m
これで、ビルドとインストールは完了
実行用のディレクトリを任意の場所に作って実行するとよい
$ mkdir playground
$ cd playground
ためしにrogomaticを10回実行させる
$ r-o-m 10
著者がビルドと動作確認をした環境は、Ubuntu 16.04とOS X 10.11.6 + brew です。 Linuxであれば、他のディストリビューション、バージョンなどでもおそらく動くだろうと思います。
OS X + portを使っては確認していませんが、必要なライブラリが用意できればおそらく動作するだろうと思います。