NetHack を日本語化して遊ぶ

UNIX系OS では長い伝統を持つローグライクな RPG、NetHack を日本語化して debian squeeze で遊ぶ為のメモです。Emacs好きのぽちは、ついでに nethack-el を使って Emacs上で遊べるようにしてみました。NetHack というゲーム自体については NetHack - Wikipedia猿でもできる JNetHack(通称サルネト)などを読んでみて下さい。

Emacs上での JNetHack のプレイ画像 【NetHack】初心者尼僧の奮闘記【Emacs】

事前に用意するパッケージ

ビルドする時に必要になる以下のパッケージをあらかじめインストールしておきましょう。

$ sudo apt-get install build-essential libncurses5-dev bison flex

ソースコードを準備する

NetHack から Nethack本体の現時点で最新版のソースコード、nethack-343-src.tgz を入手します。また、SourceForge.jp の JNetHack Project から現時点の最新日本語化パッチ、jnethack-3.4.3-0.10.diff.gzを入手します。ついでに nethack-el から現在のところの最新版、nethack_el-0.9.5.tar.gz も持って来ましょう。

パッチを当てる

nethack-343-src.tgz と jnethack-3.4.3-0.10.diff.gz、nethack_el-0.9.5.tar.gz を同じ作業用ディレクトリに置いてパッチを当て、UNIX系OS向け Makefile のセットアップ用シェルスクリプトを実行します。

$ tar zxf nethack_el-0.9.5.tar.gz
$ tar zxf nethack-343-src.tgz
$ cd nethack-3.4.3
$ zcat ../jnethack-3.4.3-0.10.diff.gz | patch -p1   # 日本語化パッチ当て
$ patch -p1 < ../nethack_el-0.9.5/enh-343.patch     # nethack-el用パッチ当て
$ sh sys/unix/setup.sh

ソースコードの修正

japanese/Install.lnx を参考にして適宜修正しましょう。それに加えて、include/config.h から #define XI18N の行をコメントアウトし、include/config.h の #define COMPRESS の行を実際の gzip のパス、/bin/gzip に修正します。また、ディストリビューションのパッケージシステムの管理外なので、混乱しないようにデフォルトインストール先の /usr/games/ を /usr/local/games/ に変更します。その為には Makefile を以下のように修正しましょう。

GAMEDIR  = $(PREFIX)/local/games/lib/$(GAME)dir
SHELLDIR = $(PREFIX)/local/games

あとは、

$ make all
$ sudo make install

で日本語化パッチと nethack-el用パッチの当てられた NetHack のインストールが完了します。

nethack-el をバイトコンパイルする

実は必ずしも nethack-el をバイトコンパイルする必要は無いみたいで、展開して出来たディレクトリ、nethack_el-0.9.5 を nethack に名前を変えて、そのまま elisp のロードパスの通ってる場所へ、ロードパスにサブディレクトリを追加する subdirs.el と一緒に放り込んでおいても動くらしいですけども、ここでは実行速度の事も考えてバイトコンパイルしておこうと思います。

まずは作業用ディレクトリで展開した nethack_el-0.9.5 の中の Makefile の先頭にある emacs へのパスを適宜変更します。通常は、

# path to your emacs
EMACS = /usr/bin/emacs23

でかまわないでしょう。次に nethack_el-0.9.5内に移動してバイトコンパイルします。

$ cd nethack_el-0.9.5
$ make all

これで elc という拡張子のバイトコンパイルされたファイルがたくさん出来上がります。そのうちの

を /usr/local/share/emacs/23.2/site-lisp/ に nethack という名前のディレクトリを作ってその中へ放り込みましょう。この際、/usr/local/share/emacs/23.2/site-lisp/ には /usr/share/emacs/23.2/site-lisp/ から subdirs.el をコピーします。

$ sudo mkdir /usr/local/share/emacs/23.2/site-lisp/nethack
$ sudo cp nethack*.elc /usr/local/share/emacs/23.2/site-lisp/nethack/
$ sudo cp nethack-compat.el /usr/local/share/emacs/23.2/site-lisp/nethack/
$ sudo cp /usr/share/emacs/23.2/site-lisp/subdirs.el /usr/local/share/emacs/23.2/site-lisp/

.emacs に nethack-el の為の設定を追加する

Emacs の設定ファイルである .emacs に以下の設定を追記します。

;;; ローカルなロードパスの追加
(setq load-path (append '("/usr/local/share/emacs/23.2/site-lisp") load-path))
;;; nethack を emacs上で遊ぶ為の設定
(setq process-coding-system-alist
      (cons
       '("nethack" euc-jp . euc-jp)
       process-coding-system-alist))
(autoload 'nethack "nethack" "Play Nethack." t)
(setq nethack-program "/usr/local/games/jnethack")

これで Emacs を起動して M-x nethack すればゲームがはじまります。一応どのキーにどういう操作が割り当てられているか C-h b してキーバインディングを確認してから遊んでみましょう。

注意!たまにキー操作をミスするとフリーズする事がありますが C-g で回復してゲームを続けられます。

まだまだ下準備

このままではゲーム中のセーブが書き込まれないので、インストール先の /usr/local/games/lib/jnethakdir/ 内のファイル、logfile、record のパーミッションをグループ書き込み可にする必要があります。

$ sudo chmod g+w /usr/local/games/lib/jnethackdir/logfile
$ sudo chmod g+w /usr/local/games/lib/jnethackdir/record

個人用設定ファイルはホームディレクトリ直下に .jnethackrc というファイルを作り、そこに設定を書きます。NetHack の遊び方や設定ファイルの書き方については doc/jGuidebook.txt を一通り読んでみて下さい。

動作確認環境 : Debian GNU/Linux 6.0 squeeze

戻る


Last updated : 2011/03/27
Author : 犬山ぽち丸 / INUYAMA Pochimaru / Pochimaru Inuyama
E-mail : pochi@hoshinoumi.net
Key ID : 4A1B5E85
Key fingerprint : 4605 4D40 6154 20C1 5592 3E54 5A37 FEE9 4A1B 5E85

正当な XHTML 1.1 です 正当な CSS です