お金をかけずにサーバーの勉強をしよう

NetHackインストール

2024年1月10日

メニューへ戻る

NetHackを日本語化してインストールして遊ぶぞ!

そろそろサーバーのお勉強も飽きてきたところで、ゲームをインストールしようと思います。

最新のマシン・高価なグラボを使って美麗なグラフィックで楽しむゲームも良いですが、そればっかりじゃ飽きるでしょう。

そこで Linuxのターミナルで遊べる文字だけのロールプレイングゲームですよ。
NetHack

四の五の言わずにインストールすべきゲームです。


1.環境

Ubuntu Server 22.04.3を使って作業しますが、多分 Debian系の Linuxなら手順は同じでしょう。

英語のままならパッケージインストールできるんですが、ここでは日本語化するためソースコードからコンパイルを行います。

なんと、gccのインストールと C言語のソースプログラムのコンパイルをするお勉強になってしまって一石二鳥です。


2.ゲーム本体のソースコードをダウンロード

2024年1月10日時点での最新版は 3.6.7です。

[~/work/nethack] というワーキングディレクトリを作ってそこで作業しています。
curlコマンドでダウンロードします。

subro@UbuntuServer2204-1:~/work/nethack$ curl -O https://www.nethack.org/download/3.6.7/nethack-367-src.tgz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 5446k  100 5446k    0     0   863k      0  0:00:06  0:00:06 --:--:-- 1244k

ダウンロードできました。


3.日本語化パッチのダウンロード

こちらも curlコマンドでダウンロードしようとしましたが、どうしても失敗してしまいます。

OSDNにあるんですが、証明書の有効期限が切れてるようでそのせいかも知れません。

仕方ないので Firefoxでダウンロードしましたけど、途中で証明書が不正(期限切れだから)の旨が出ますが、それを承知でダウンロードしました。

こちらでダウンロードできます。
JNetHack

本体のバージョンに合わせて 3.6.7-0.1 が対象になります。

サーバーが中国に行っちゃってから凄く重くなった OSDNですが、どうにかダウンロードできました。

ダウンロードしたファイル [jnethack-3.6.7-0.1.diff.gz] は ワーキングしている [~/work/nethack]ディレクトリに配置しました。


4.ソースファイルの展開と日本語化パッチあて

現時点でのワーキングディレクトリの中はこうなっています。

subro@UbuntuServer2204-1:~/work/nethack$ ls -l
合計 6396
-rw-rw-r-- 1 subro subro  970551  1月 10 19:20 jnethack-3.6.7-0.1.diff.gz
-rw-rw-r-- 1 subro subro 5577415  1月 10 18:24 nethack-367-src.tgz

本体のソースファイル(nethack-367-src.tgz)は tgz形式(gzip圧縮 & tarアーカイブ)の圧縮ファイルですので、tarコマンドで解凍します。

subro@UbuntuServer2204-1:~/work/nethack$ tar -xzvf nethack-367-src.tgz
〜〜〜 省略 〜〜〜

subro@UbuntuServer2204-1:~/work/nethack$ ls -l
合計 6400
drwxrwxr-x 10 subro subro    4096  2月 16  2023 NetHack-3.6.7
-rw-rw-r--  1 subro subro  970551  1月 10 19:20 jnethack-3.6.7-0.1.diff.gz
-rw-rw-r--  1 subro subro 5577415  1月 10 18:24 nethack-367-src.tgz

[NetHack-3.6.7]ディレクトリ以下にソースファイルが解凍・展開されています。

日本語化パッチをあてるため、[NetHack-3.6.7]ディレクトリに移動します。

subro@UbuntuServer2204-1:~/work/nethack$ cd NetHack-3.6.7

subro@UbuntuServer2204-1:~/work/nethack/NetHack-3.6.7$

カレントディレクトリを移動しました。

patchコマンド(apply a diff file to an original)を使ってパッチ適用をします。

パッチの [jnethack-3.6.7-0.1.diff.gz]ファイルは gz形式(gzipによる圧縮)のファイルです。
これを gunzipコマンドで展開してから リダイレクトで patchコマンドに渡しても良いのですが、面倒なので zcatコマンドで展開しながらパイプで patchコマンドに渡します。

subro@UbuntuServer2204-1:~/work/nethack/NetHack-3.6.7$ zcat ../jnethack-3.6.7-0.1.diff.gz | patch -p1
patching file ChangeLog.j
patching file README.md
patching file READMEj1.txt
patching file configure
〜〜〜 中略 〜〜〜
patching file win/win32/mhstatus.c
patching file win/win32/mswproc.c
patching file win/win32/nethack.rc
patching file win/win32/vs2017/NetHack.sln
patching file win/win32/vs2017/NetHack.vcxproj
patching file win/win32/vs2017/NetHackW.vcxproj
patching file win/win32/vs2017/afterdlb.proj
patching file win/win32/vs2017/afternethack.proj
patching file win/win32/vs2017/nh340key.def
patching file win/win32/vs2017/nh340key.vcxproj
patching file win/win32/winMS.h

何か Windows用のファイルもあるようですが、上手く行ったようです。

パッチ適用後のディレクトリの内容です。

subro@UbuntuServer2204-1:~/work/nethack/NetHack-3.6.7$ ls -l
合計 120
-rw-rw-r--  1 subro subro 27745  1月 10 19:28 ChangeLog.j
drwxrwxr-x  4 subro subro  4096  2月 16  2023 DEVEL
-rw-rw-r--  1 subro subro 21580  2月 16  2023 Files
-rw-rw-r--  1 subro subro  7598  2月 16  2023 Porting
-rw-rw-r--  1 subro subro  9345  2月 16  2023 README
-rw-rw-r--  1 subro subro  1591  1月 10 19:28 README.md
-rw-rw-r--  1 subro subro  2085  1月 10 19:28 READMEj1.txt
-rw-rw-r--  1 subro subro   134  1月 10 19:28 configure
drwxrwxr-x  2 subro subro  4096  1月 10 19:28 dat
drwxrwxr-x  2 subro subro  4096  1月 10 19:28 doc
drwxrwxr-x  2 subro subro  4096  1月 10 19:28 include
drwxrwxr-x  2 subro subro  4096  1月 10 19:28 japanese
drwxrwxr-x  2 subro subro  4096  1月 10 19:28 src
drwxrwxr-x 13 subro subro  4096  2月 16  2023 sys
drwxrwxr-x  2 subro subro  4096  1月 10 19:28 util
drwxrwxr-x 13 subro subro  4096  2月 16  2023 win


5.コンパイルに必要なパッケージのインストール

build-essential・bison・flex・nkf・libncurses5-dev の 5つを入れます。
build-essentialに gccなどコンパイラが入っています。

subro@UbuntuServer2204-1:~/work/nethack/NetHack-3.6.7$ sudo apt install -y build-essential bison flex nkf libncurses5-dev
〜〜〜 省略 〜〜〜

インストールできました。


6.コンパイル

[configure]ファイルがシェルスクリプトなんですが、これを実行するとこの環境に合ったコンパイル用の設定ファイルを自動で作ってくれます。

[configure]ファイルに実行権限が無かったので、[rxwrw-r--](764)に変えます。

subro@UbuntuServer2204-1:~/work/nethack/NetHack-3.6.7$ chmod 764 configure

subro@UbuntuServer2204-1:~/work/nethack/NetHack-3.6.7$ ls -l configure
-rwxrw-r-- 1 subro subro 134  1月 10 19:28 configure

実行権限がつきましたので実行します。

subro@UbuntuServer2204-1:~/work/nethack/NetHack-3.6.7$ ./configure

[Makefile]ファイルができているのが分かります。
これがこのソースファイルのセットのコンパイルの仕方を記述したファイルで、makeコマンド(GNU make utility to maintain groups of programs)から利用されます。

subro@UbuntuServer2204-1:~/work/nethack/NetHack-3.6.7$ ls -l
合計 132
-rw-rw-r--  1 subro subro 27745  1月 10 19:28 ChangeLog.j
drwxrwxr-x  4 subro subro  4096  1月 10 19:47 DEVEL
-rw-rw-r--  1 subro subro 21580  2月 16  2023 Files
-rw-rw-r--  1 subro subro 10742  1月 10 19:47 Makefile
-rw-rw-r--  1 subro subro  7598  2月 16  2023 Porting
-rw-rw-r--  1 subro subro  9345  2月 16  2023 README
-rw-rw-r--  1 subro subro  1591  1月 10 19:28 README.md
-rw-rw-r--  1 subro subro  2085  1月 10 19:28 READMEj1.txt
-rwxrw-r--  1 subro subro   134  1月 10 19:28 configure
drwxrwxr-x  2 subro subro  4096  1月 10 19:47 dat
drwxrwxr-x  2 subro subro  4096  1月 10 19:47 doc
drwxrwxr-x  2 subro subro  4096  1月 10 19:47 include
drwxrwxr-x  2 subro subro  4096  1月 10 19:47 japanese
drwxrwxr-x  2 subro subro  4096  1月 10 19:47 src
drwxrwxr-x 13 subro subro  4096  2月 16  2023 sys
drwxrwxr-x  2 subro subro  4096  1月 10 19:47 util
drwxrwxr-x 13 subro subro  4096  2月 16  2023 win

ではコンパイルします。
makeコマンドでコンパイルするのを「メイクする」って言いますね。

subro@UbuntuServer2204-1:~/work/nethack/NetHack-3.6.7$ make all
( cd src ; make )
make[1]: ディレクトリ '/home/subro/work/nethack/NetHack-3.6.7/src' に入ります
cc -g -O -I../include -DNOTPARMDECL -DDLB -DCOMPRESS=\"/bin/gzip\" -DCOMPRESS_EXTENSION=\".gz\" -DSYSCF -DSYSCF_FILE=\"/home/subro/nh/install/games/lib/jnethackdir/sysconf\" -DSECURE -DTIMED_DELAY -DHACKDIR=\"/home/subro/nh/install/games/lib/jnethackdir\" -DDUMPLOG -DCONFIG_ERROR_SECURE=FALSE -DCURSES_GRAPHICS   -c -o monstj.o monstj.c
touch ../src/config.h-t
〜〜〜 中略 〜〜〜
Done.

途中一杯ワーニングがでましたが、どうにかコンパイルできました。


7.インストール

インストールします。

subro@UbuntuServer2204-1:~/work/nethack/NetHack-3.6.7$ make install
( cd src ; make )
make[1]: ディレクトリ '/home/subro/work/nethack/NetHack-3.6.7/src' に入ります
jnethack is up to date.
〜〜〜 中略 〜〜〜
true; cp -n sys/unix/sysconf /home/subro/nh/install/games/lib/jnethackdir/sysconf; true  /home/subro/nh/install/games/lib/jnethackdir/sysconf; true  /home/subro/nh/install/games/lib/jnethackdir/sysconf; chmod 0600 /home/subro/nh/install/games/lib/jnethackdir/sysconf;
You may also want to reinstall the man pages via the doc Makefile.

インストールできました。


8.プレイ

どこにインストールされたかというと、[~/nh/install/games/jnethack]ファイルがそれです。

実行してみます。

subro@UbuntuServer2204-1:~$ ~/nh/install/games/jnethack

キャラメイクですね。
ちゃんと日本語になってる!\(^o^)/


NetHack, Copyright 1985-2023
         By Stichting Mathematisch Centrum and M. Stephenson.
         Version 3.6.7 Unix, built Jan 10 20:16:35 2024.
         See license for details.


キャラクターの種族,職業,性別,属性を適当に選んでよろしいですか?[ynq]

とりあえず y で適当に選ばせました。

では y でゲーム開始です。

       名前: subro                                                                 これでよい? [ynq]
       職業: 盗賊
       種族: 人間                                                                  subro, 混沌の男性の人間の盗賊
       性別: 男性
       属性: 混沌                                                                  y + はい; ゲームを始める
                                                                                   n - いいえ; 職業を選び直す
                                                                                   q - 抜ける
                                                                                   (end)

 でメッセージを進めます。

                                                                                   これは,コスの書に述べられているものである.

                                                                                      天地創造の後,破壊神モーロック,創造主マルドゥークと違いして
                                                                                      反乱す.破壊神モーロック,マルドゥークの聖器のなかより,万物
                                                                                      の力の源「イェンダーの魔除け」を盗みだし,それを彼の潜む
                                                  ------                              世界の底,ゲヘナの闇の洞窟に隠し,時を待てり.
                                                  .d@...
                                                  |.$..|                           主神コスは「魔除け」を望み,他の神々に対し
                                                  |....|                           絶対的優勢を得ようとしている.
                                                  .....|
                                                  ------                           あなたは現在,まだ追いはぎではあるが,生まれたときからコス
                                                                                   の下僕と予言されている.主神のため,イェンダーの魔除けを発見
                                                                                   するか,そのために死ぬかが運命づけらている.あなたの運命の時
                                                                                   は来た!我々のために,コスの加護のあらんことを!
                                                                                   --More--







Subro 追いはぎ                 強:17 早:18 耐:14 知:10 賢:9 魅:8 混沌
地下:1 $:0 体:12(12) 魔:2(2) 鎧:7 経験:1

@ が自分です。
d がお供の仔犬。 viと同じダイヤモンドカーソル h j k l で移動します。

ようこそsubro,NetHackの世界へ!このゲームではあなたは人間の盗賊(混沌の男性)だ.  注意しろ!今晩は新月だ.




                                                  ------
                                                  .d@...
                                                  |.$..|
                                                  |....|
                                                  .....|
                                                  ------











Subro 追いはぎ                 強:17 早:18 耐:14 知:10 賢:9 魅:8 混沌
地下:1 $:0 体:12(12) 魔:2(2) 鎧:7 経験:1

しばらくダンジョンを歩いた後の図





                                                  ------
                                               ###..<...#
                                               #  |....|###########
                                               #  |....|#      -.-|---
                                             #####.d@..|#      |.....|
                                             #    ------#     #-.....|
                                             ############     #|.....|
                                             #          #     #-------
                                            #`          #     #
                                                        #     #
                                                        #     ##
                                                        #      #
                                                        #------#
                                                        #|....|#
                                                        #.....|#
                                                         ------

Subro 追いはぎ                 強:17 早:18 耐:14 知:10 賢:9 魅:8 混沌
地下:1 $:9 体:12(12) 魔:2(2) 鎧:7 経験:1

とまぁこんなゲームなんです。


==========
驚かれましたか?
昔の文字しか出せない UNIXのコンピューターで、こんなものが作られていたんですね。
いつの時代もコンピューター好きはゲーム好きなんです。

NetHackの画面に出てくる文字が何を表しているかとかはこちらで。
GuideBook

セーブは S です。
※とりあえずこれだけは。

こちらのブログに NetHackを日本語化する方法が書いてありますのでご紹介しておきます。
日本語化しなくともキーボードのチートシートが素晴らしいです。
コンパイルしやすくなったJNetHack3.6.6で遊ぼう!

現代になってもまだアップデートされているこのゲーム、熱烈なファンが世界中にいますね。
たまにはこういう原初のゲームに触れてみると却って新鮮かも知れませんよ。

細かいコマンド類は、う〜ん、ググって下さい!