ダンジョン探索型 RPG の草分け的な存在でもある NetHack を CentOS にインストールしてみました。テキストキャラクターインターフェース RPG の元祖とも言える Rogue の後継で、いくつかの進化バージョンがありますが、今回紹介するのは UTF-8 に対応した日本語版 jNetHack 3.4.3 です。なお、今回導入した環境は CentOS 6.7 64bit ですが、(TTY 向けの導入しか紹介していないので)他の Linux ディストリビューションでもほぼ同様の方法で導入できると思います。


導入の方法ですが、現在は yum で簡単にインストール・・・ というわけにはいかないようで、必要なライブラリを揃えて、ソースコードを SVN からクローンして、パッチを充ててからビルドしてインストール、という手順が必要になるようです。以下にその手順を紹介します。

まずはビルド時に必要となるライブラリ群を yum で導入します。ここはコマンド一発:
# yum install -y libX11-devel ncurses-devel libXt-devel libXaw-devel

次に SourceForge から jNetHack のソースコードを入手し、更に UTF-8 対応用パッチを入手します。なお、以下の作業は全て /usr/local/src ディレクトリ以下で行うので、最初にこのディレクトリに移動しておきます:
# cd /usr/local/src

# svn co http://svn.sourceforge.jp/svnroot/jnethack/ jnh-svn
# wget http://elbereth.up.seesaa.net/nethack/jnethack-3.4.3-0.10-utf8-2.patch.bz2


ソースコードのディレクトリに移動し、UTF-8 パッチを適用します:
# cd ./jnh-svn/jnethack/trunk
# bzip2 -d /usr/local/src/jnethack-3.4.3-0.10-utf8-2.patch.bz2
# cat /usr/local/src/jnethack-3.4.3-0.10-utf8-2.patch | patch -p1

ビルド前に Linux 用にファイルを編集します。まず sys/unix/Makefile.top の該当業(青字部分)を編集します:
# vi sys/unix/Makefile.top

: # make NetHack PREFIX = /usr/local GAME = jnethack # GAME = nethack.prg GAMEUID = games GAMEGRP = bin # Permissions - some places use setgid instead of setuid, for instance # See also the option "SECURE" in include/config.h GAMEPERM = 04755 FILEPERM = 0644 EXEPERM = 0755 DIRPERM = 0755 :

次に sys/unix/Makefile.src の CLAGS を Linux 用に変更します:
# vi sys/unix/Makefile.src

: # flags for Linux # compile normally # CFLAGS = -O2 -fomit-frame-pointer -I../include : CFLAGS = -W -g -O2 -fomit-frame-pointer -I../include :

また include/unixconf.h 内で Linux 用の定義が一部無効になっているので、以下の4つをコメントアウトして有効にします:
# vi include/unixconf.h

: #define SYSV #define LINUX #define TERMINFO #define TIMED_DELAY :

同様に include/config.h 内の DLB の定義もコメントアウトして有効にします:
# vi include/config.h

: #define DLB :

これで準備は完了です。以下の手順で環境設定を有効にして、make all して make install します:
# cd sys/unix
# sh ./setup.sh
# cd ../../
# make all
# make install

なお、一度ゲームをスタートした後で、再度環境変更のビルドを行う場合、↑の最後のコマンドを make install から make update にすると、それまでのセーブデータを保護しながら本体だけをアップデートすることが可能です(make install だとセーブデータも上書きします)。

これで jNetHack が導入できました。jnethack コマンド本体は /usr/local/games/ にインストールされているので、フルパスで実行するか、このディレクトリにパスを通してください:
2016070301


実行時には UTF-8 対応の端末でログインし、この本体をコマンドラインから指定して実行します:
# /usr/local/games/jnethack

すると UTF-8 対応の jNetHack が実行されます:
2016070302


vi エディタでお馴染みの H,J,K,L による移動をベースとした RPG (の元祖)です。元々の Rogue が 1980 年に生まれたので、ゲームシステム自体は 36 年前から存在していることになります:
2016070303


NetHack 自体に関してはこちらの Wiki を参照ください:
https://ja.wikipedia.org/wiki/NetHack