参考サイト:Linux 用 jnethack 3.4.3 のコンパイル例
(ほぼ参考サイトの劣化コピーです。申し訳ありません。)
はじめに
CentOS 6.3 で tty / X11 版をコンパイルした例です。
(Qt版は 現行バージョン(qt4)に対応していないので、諦めました。)
(GNOME版も 現行バージョンに対応していないので、諦めました。(gdk_imlib.hが無くなった))
以前からcocotなんか使わずにUTF-8に対応できないかなと悶々としていたら、
既に対応してくださっている方がいました。(感謝)
というわけで、最新ソースを svn で取得しつつ、UTF-8対応版のjnethackが出来るようにする。
環境:OS CentOS 6.3
環境:jenethack version 3.4.3-10 ベースの最新開発バージョン(SV)
手順
必要なパッケージの導入
yum install libX11-devel ncurses-devel libXt-devel libXaw-devel
最新開発バージョンの取得
ソースの作業用ディレクトリに移動する。
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
cd ./jnh-svn/jnethack/trunk
bzip2 -d /usr/local/src/jnethack/jnethack-3.4.3-0.10-utf8-2.patch.bz2
cat /usr/local/src/jnethack/jnethack-3.4.3-0.10-utf8-2.patch | patch -p1
ファイルの編集
Makefile の該当行を編集
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
...
X11 版もコンパイルする場合は以下の設定も必要。
# per discussion in Install.X11 and Install.Qt
# VARDATND = ←ここをコメント
# VARDATND = x11tiles NetHack.ad pet_mark.xbm
VARDATND = x11tiles NetHack.ad pet_mark.xbm rip.xpm ←ここのコメントを外す
# for Atari/Gem
# VARDATND = nh16.img title.img GEM_RSC.RSC rip.img
# for BeOS
# VARDATND = beostiles
# for Gnome
# VARDATND = x11tiles pet_mark.xbm rip.xpm mapbg.xpm
...
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 -I/usr/include $(GNOMEINC)
# X11を使う場合/usr/includeも追加。GNOMEを使う場合、$(GNOMEINC)を追加
X11 版もコンパイルする場合は以下の設定も必要。
...
LFLAGS = -L/usr/X11R6/lib ←flags for Linux を参照しながら、別の行のを編集する。
WINSRC = $(WINTTYSRC) $(WINX11SRC) $(WINQTSRC) $(WINGNOMESRC) ← X11版、Qt版、GNOME版を追加する
WINOBJ = $(WINTTYOBJ) $(WINX11OBJ) $(WINQTOBJ) $(WINGNOMEOBJ) ← X11版、Qt版、GNOME版を追加する
WINX11LIB = -lXaw -lXmu -lXext -lXt -lXpm -lX11 ← -lXpmを追加する。
WINLIB = $(WINTTYLIB) $(WINX11LIB) $(WINQTLIB) $(WINGNOMELIB) ← X11版、Qt版、GNOME版を追加する
...
sys/unix/Makefile.utl の該当行を編集
...
# flags for Linux
# compile normally
CFLAGS = -O2 -fomit-frame-pointer -I../include ←ここのコメントを外す
LFLAGS = -L/usr/X11R6/lib ←ここのコメントを外す
# OR compile backwards compatible a.out format
# CFLAGS = -O2 -b i486-linuxaout -fomit-frame-pointer -I../include
# LFLAGS = -b i486-linuxaout -L/usr/X11R6/lib
...
# flags for debugging:
# CFLAGS = -g -I../include
# CFLAGS = -O -I../include ←ここをコメントにする
# LFLAGS = ←ここをコメントにする
include/unixconf.h の該当行を編集
コメントアウトされている Linux の定義を有効にします。
# define SYSV
# define LINUX
# define TERMINFO
# define TIMED_DELAY
include/config.h の該当行を編集
コメントアウトされている 以下の定義を有効にします。
# define DLB
X11版/QT版/GNOME版もコンパイルする場合は以下の設定も必要。
# define X11_GRAPHICS
# define QT_GRAPHICS
# define GNOME_GRAPHICS
<<<
以下はいろいろとあって変更なし。
# define USE_XPM ←編集しなくとも有効になっているくさい
# define AUTOPICKUP_EXCEPTIONS ←バグを含んでいる?
<<<
win/X11/JNetHack.ad の該当行を編集(X11 版のみ)
確認するぐらいでいいかな?とくに編集してなくても何かが設定してあった。
JNetHack*font: -misc-fixed-medium-r-*--12-*
JNetHack*display_file*font: -misc-fixed-medium-r-*--12-*
JNetHack*tombstone*font: -misc-fixed-medium-r-*--12-*
JNetHack*rip*font: -misc-fixed-medium-r-*--12-*
JNetHack*menu*font: -misc-fixed-medium-r-*--12-*
JNetHack*text*font: -misc-fixed-medium-r-*--12-*
JNetHack*map*font: -misc-fixed-medium-r-*--14-*
JNetHack*fontSet: -misc-fixed-medium-r-*--12-*
タイル表示する場合は以下の設定をします。
JNetHack.tile_file: x11tiles
JNetHack.tile_width: 16
JNetHack.tile_height: 16
タイルを使用しない場合はタイル設定の行頭に "!" をつけます。
コンパイル
$ cd sys/unix
$ sh ./setup.sh
$ cd ../../
$ make all
いつものごとくコンパイルエラーが出る。対処方法は[[こちら|jnethackコンパイルエラー]]
インストール
はじめてインストールする場合
# make install
X11 版の場合はリソースファイルもコピーします。
# cp win/X11/JNetHack.ad /usr/X11R6/lib/X11/app-defaults/JNetHack
上書きする場合(セーブデータが保護されます)
# make update
エラーメッセージ
インストール時に
chgrp: invalid group name `games'
システムに games グループが登録されていません。
新しく games グループを作るか Makefile の GAMEGRP を変更してインストールしてください。
起動時に Warning: cannot write scoreboard file record
record ファイルのパーミッションが設定されていない場合表示されます。
# chmod g+w /usr/games/lib/jnethackdir/record
上記のように書き込み権限を有効にします。
終了時に Cannot open log file!
logfile ファイルのパーミッションが設定されていない場合表示されます。
# chmod g+w /usr/games/lib/jnethackdir/logfile
上記のように書き込み権限を有効にします。
セーブ時に No such file or directory Exec to compress save/[キャラクター名] failed.
compress もしくは gzip が存在しないか設定が間違っています。
include/config.h の COMPRESS の設定が正しいかどうか確認してください。
# define COMPRESS "/usr/bin/gzip" /* FSF gzip compression */
環境設定
設定ファイル
ホームディレクトリに ~/.jnethackrc ファイルを作成してプレイヤー名などの設定を
することができます。
設定ファイルの書き方は doc/jGuidebook.txt を参照してください。
tty 版と X11 版の切り替えは以下の通りです。
OPTIONS=windowtype:tty # tty 版の場合
OPTIONS=windowtype:x11 # X11 版の場合
~JNetHack 1.x 系で追加されたスコア送信機能や Radar パッチは 3.4.x 系では
分離されているので report や radar オプションを設定しても有効にはなりません。
X11 版のウインドウサイズ
起動時に -g オプションをつけるとメインウインドウの大きさを設定できます。
$ jnethack -g 640x480