スターサーバーが終了するため、ホームページを移転しました。このブログは特に変わりなく、たまに更新します。
2024年12月25日
2024年12月07日
Rogue が難しすぎる人でも、XRogue はなんとかなるかもしれない
Roguelike Advent Carender 2024 の、12/07 の記事です。昨日は、gkuraki 氏の変愚蛮怒 アーチャー 雑感 でした。
目次
はじめに

最近、古い Linux 機に古典的なローグライクを色々入れて、たまにプレイしたりしているのですが、初代ローグは特に難しいです。本当にすぐ死にます。

ローグのページの Rogue 5.4.5x には識別の巻物を一種類にまとめるオプションがあり、それを利用しているので少しは簡単なはずですが、それでもすぐ死にます。
日本で有名なローグと言えばローグ・クローンIIだと思いますが、それと比べても難しく感じます。クローンの方のソースは読んだ事がありませんが、ダメージの計算式が全く違うとか。
初代ローグは本当に運が良くないと下層に行けないので、現代にプレイすると、正直辛い部分もあります。上級者にとってはそうではないかもしれませんが…
ただ、ローグは流石に運の要素が強すぎて厳しいという人でも、以下で紹介する XRogue であれば楽しめるかもしれません。
XRogue の紹介

XRogue 8.0.3 は、ローグのページにあるローグのヴァリアントです。
プレイ感覚としては、Rogue と NetHack の中間という印象を持ちました。英語ですが、NetHack よりは複雑でないため、慣れてしまえば問題はないと思います。最初のハードルが高いかもしれませんが…
Rogue との違いの一部
ゲーム開始時の選択要素
Rogue では、ゲーム開始直後に迷宮に放り出されますが、XRogue では、まず最初に以下のクラスから一つを選択します。日本語訳は、README_jp.TXT のものです。
- Fighter(ファイター、戦士)
- Paladin(聖騎士)
- Ranger(レンジャー)
- Magic-User(魔法使い)
- Cleric(牧師)
- Thief(盗賊)
- Assassin(刺客)
- Druid(ドルイド僧)
- Monk(修道士)
もちろん、各クラスには特徴があり、例えばファイターは近接攻撃が強く、序盤の生存に有利です。魔法使いやレンジャーは様々な魔法を使うことができ、identify の魔法は、同名の巻物と同じ効果です。
次に、能力値を割り振ります。この六種になじみの無い方でも、これらの意味は、README_jp.TXT に書いてあるので安心です。先に紹介したクラスの特徴も、同じテキストにあります。
そして、冒険を開始する前に、商店で買い物ができます。ほぼ裸一貫で始まる Rogue との大きな違いです。ここの商品は識別されていて、強化値も見ることができます。
豊富なアイテム
Rogue に比べ、武器、防具、その他のアイテムが、とにかく増えており、Rogue に存在しない魔法のアイテムや、アーティファクトまであります。私はまだ、アーティファクトを手にした事はありませんが…
魔法のアイテム、Gauntlets of ogre power を装備し、Str が上昇した状態。固定値になるため、Str を下げられても安心。他にも、Cloak of displacement だったり、アイテムを収納できるアイテムなど、色々あります。
増えた手段
Rogue の場合、アイテムの数は限られており、運が悪いとどうにもならない状況に陥ることがよくあります。しかし、XRogue では、クラスによっては、呪文、祈り、聖歌が使えたり、あるいは敵を脅したり、物を盗んだりできるため、それらによって状況を打開できるかもしれません。
取引
迷宮の中に、交易所が出現することがあります。また、Quartermaster(補給係将校)と出会えた場合、彼から商品を買うこともできます。
多彩な怪物
Rogue では各アルファベットに一種類でしたが、多数の怪物が追加されています。多数で出現する怪物や、友好的な怪物など。ただ、モノクロ表示なので、怪物を一目で識別できず、'='コマンドでその怪物を調べる必要がある場面があり、残念ながら手間も増えています。
怪物の行動
Rogue では、ほぼ全ての怪物が、プレイヤーを認識するとひたすら攻撃し続けましたが、XRogue では、不利になると逃げる場合もあります。また、怪物も罠にかかったり、アイテムを拾ったりします。
速度
Rogue と違い、プレイヤーと怪物が交互に行動するシステムではなく、速い者が多く行動するようになっています。
開始前にアイテムを購入できたり、迷宮内にも交易所があったり、怪物もよくアイテムを落とすので、物資が不足しがちな Rogue に比べ、どうしようもない死は少ない印象です。もっとも、25階が現時点の最高記録である私の感想なので、もっと深い階層では Rogue より難しくなる可能性もあります。

私自身がまだ未熟な事もあり、紹介しきれなかった要素はまだ多くあります。英語ではありますが、Rogue も英語ですが、英語がわからなくてもなんとかなるゲームですし、Rogue が難しすぎるという人や、未知の要素を楽しみたい人には、プレイしてもらいたいゲームです。
本当は、二週間後に NetHack 3.7 についても書くつもりで予約していたのですが、忙しくなりそうなのでキャンセルしました。
明日の記事は、現時点(24/12/06 23:13)では未定です。
以下は、必要な人に向けての、XRogue のデータの一部と、ビルド方法になります。
XRogue の情報
XRogue では様々なアイテムが追加されていますが、以下は武器と防具のリストです。武器のデータはソースを読まないとわからないものではありますが、これを知らないと厳しいと思うので、用意しました。一応、装備制限に関しては、マニュアルにヒントがありますが。
<武器> <近接> <投射> <装備制限> mace 2d10 2d10 long sword 3d4 2d8 dagger 2d8 1d6 two-handed sword 3d10 3d8 F R P dart 2d4 2d6 spear 2d6 3d10 trident 3d6 3d4 spetum 2d6 2d8 bardiche 3d4 2d10 pike 2d8 2d8 bastard sword 3d8 3d6 F A T Mo halberd 2d8 2d4 battle axe 2d8 3d8 <弓> short bow 1d1 1d1 sling 1d1 1d1 crossbow 1d1 1d1 <矢> arrow 2d4 1d6 rock 2d4 1d6 crossbow bolt 2d4 2d4 装備制限に記載がある場合、そのイニシャルのクラスでなければ装備できません。 Mo = Monk です。
<鎧>leather armor 8 ring mail 7 studded leather armor 5 scale mail 7 padded armor 6 chain mail 6 splint mail 5 banded mail 5 plate mail 4 plate armor 3 Thief & Assassin は、(studded) leather armor 以外の鎧を装備できません。 重い鎧を装備すると、速度が低下します。また、所持重量の割合が一定以上になった場合も、速度が低下します。
Linux でのビルド手順例(Rogue, Super Rogue, Ultra Rogue, XRogue, ついでに Moria)
Windows の場合、ローグのページに実行ファイルがあるので、それをダウンロードすれば大丈夫でしょう。
以下は、Linux(AntiX Linux 23.1 32bit)でのビルドの一例です。起動用のシェルスクリプトを同一のディレクトリに作り、そこにパスを通し、起動しやすいようにしています。
マニュアル類や、この例で使わないソースも一応ダウンロードしていますが、必要に応じて判断してください。
ダウンロードは全て wget で済ませたかったですが、私が作成したパッチについては、ブラウザを使う形になります。
以下は、全てのビルドに関する共通事項です。
http://yozvox.web.fc2.com にあるソースファイルは ~/yozvox.web.fc2.com にダウンロードし、 ~/yozvox.web.fc2.com/games に起動用シェルスクリプトを作成する 最初の一度だけ、 $ cd ~ $ mkdir yozvox.web.fc2.com $ mkdir yozvox.web.fc2.com/games を行い、 ~/.bashrc に # set PATH so it includes user's yozvox.web.fc2.com bin if it exists if [ -d "$HOME/yozvox.web.fc2.com/games" ] ; then PATH="$HOME/yozvox.web.fc2.com/games:$PATH" fi を書き込み端末を再起動するとパスが通る
共通事項 終わり
以下が、それぞれのビルドの手順です。

Rogue 5.4.5x $ cd ~/yozvox.web.fc2.com まずはマニュアル類ダウンロード $ wget http://yozvox.web.fc2.com/rogue36.txt $ wget http://yozvox.web.fc2.com/rogue36_jp.txt $ wget http://yozvox.web.fc2.com/rogue.txt $ wget http://yozvox.web.fc2.com/rogue_jp.txt スポイラー $ wget http://yozvox.web.fc2.com/rvm.html $ wget http://yozvox.web.fc2.com/rvm.pdf $ wget http://yozvox.web.fc2.com/rvm_jp.html $ wget http://yozvox.web.fc2.com/rvm_jp.pdf $ wget http://yozvox.web.fc2.com/rvm-msg.html $ wget http://yozvox.web.fc2.com/rvm-msg.pdf $ wget http://yozvox.web.fc2.com/rvm-msg_jp.html $ wget http://yozvox.web.fc2.com/rvm-msg_jp.pdf ソース $ wget http://yozvox.web.fc2.com/rogue5.4.5x-src.zip 今回は使わないが、一応その他のソースも $ wget http://yozvox.web.fc2.com/rogue3.6-src.tar.gz $ wget http://yozvox.web.fc2.com/rogue5.2-src.tar.gz $ wget http://yozvox.web.fc2.com/rogue5.4.5-src.zip $ wget http://yozvox.web.fc2.com/rogue5.4.5p-src.zip $ wget http://yozvox.web.fc2.com/rogue5.4.5x-src_o03.zip $ unzip rogue5.4.5x-src.zip $ cd rogue5.4.5x-src $ make dist.m32 $ mkdir ../rogue5.4.5x $ mv rogue ../rogue5.4.5x $ cp rogue.ttl ../rogue5.4.5x $ cp README.txt ../rogue5.4.5x カラーモードで起動するシェルスクリプト作成 $ cd ../games $ touch rogue54 $ echo -e $'#!/bin/sh' > rogue54 $ echo -e $'cd ~/yozvox.web.fc2.com/rogue5.4.5x' >> rogue54 $ echo -e $'if [ -e rogue.save ]; then' >> rogue54 $ echo -e $' ./rogue rogue.save' >> rogue54 $ echo -e $'else' >> rogue54 オプションについては README.txt を参照 -14 で snake -> slime -16 で snake -> slime & bright(PC98/88風カラー) キャラクター名は好きな名前で。英数字以外は受け付けるか不明 $ echo -e $' ./rogue -10 キャラクター名' >> rogue54 $ echo -e $'fi' >> rogue54 権限付与 $ chmod 755 rogue54 $ cd ~ ゲーム開始 パスは通っているので、次回以降はこれだけで良い $ rogue54

Super Rogue 9.0.1 $ cd ~/yozvox.web.fc2.com ソース $ wget http://yozvox.web.fc2.com/srogue9.0-1-src.tar.gz 足りないファイルがあるのでダウンロード $ wget http://yozvox.web.fc2.com/srogue9.0-1-linux.tar.gz $ wget https://raw.githubusercontent.com/RoguelikeRestorationProject/srogue/refs/heads/master/rogue.ext 必要であれば、以下のパッチを ~/yozvox.web.fc2.com にダウンロードする このファイルは、ブラウザでダウンロードする必要がある https://www.mediafire.com/file/v2o3ujmi7zhsjro/srogue9.0-1-current_sav_ASCII_LF.patch/file ファイル展開 $ mkdir srogue9.0-1-src $ tar zxvf srogue9.0-1-src.tar.gz -C srogue9.0-1-src $ cd srogue9.0-1-src 足りないファイルをコピー $ tar zxf ../srogue9.0-1-linux.tar.gz srogue.doc $ cp ../rogue.ext srogue9.0-1-src セーブファイルのパスを、スコアファイルと同じ場所に変更する パッチを当てる。任意 $ patch -p1 < ../srogue9.0-1-current_sav_ASCII_LF.patch $ make dist.linux $ mkdir ../srogue9.0-1 $ mv srogue ../srogue9.0-1 $ cp srogue.doc ../srogue9.0-1 $ cp LICENSE.TXT ../srogue9.0-1 シェルスクリプト作成 $ cd ../games $ touch srogue9 $ echo -e $'#!/bin/sh' > srogue9 $ echo -e $'cd ~/yozvox.web.fc2.com/srogue9.0-1' >> srogue9 $ echo -e $'if [ -e srogue.sav ]; then' >> srogue9 $ echo -e $' ./srogue srogue.sav' >> srogue9 $ echo -e $'else' >> srogue9 キャラクター名は好きな名前で。英数字以外は受け付けるか不明 $ echo -e $' ./srogue -n キャラクター名' >> srogue9 $ echo -e $'fi' >> srogue9 権限付与 $ chmod 755 srogue9 $ cd ~ ゲーム開始 パスは通っているので、次回以降はこれだけで良い $ srogue9

Ultra Rogue 1.0.7 デフォルトのセーブデータ名が存在せず、セーブ時に自分で 名前を付け、ロードはそのファイル名を引数として渡して 実行する形になる。 $ cd ~/yozvox.web.fc2.com ソース $ wget http://yozvox.web.fc2.com/urogue1.0.7-src.tar.gz 必要であれば、以下のパッチを ~/yozvox.web.fc2.com にダウンロードする このファイルは、ブラウザでダウンロードする必要がある https://www.mediafire.com/file/f436ftyyy5q64pa/urogue1.0.7-current_chr_ASCII_LF.patch/file $ mkdir urogue1.0.7-src $ tar zxvf urogue1.0.7-src.tar.gz -C urogue1.0.7-src $ cd urogue1.0.7-src キャラクターファイル(urogue.chr)のパスを、スコアファイルと 同じ場所に変更するパッチを当てる。任意 $ patch -p1 < ../urogue1.0.7-current_chr_ASCII_LF.patch $ make dist.linux $ mkdir ../urogue1.0.7 $ mv urogue ../urogue1.0.7 $ cp README ../urogue1.0.7 シェルスクリプト作成 $ cd ../games $ touch urogue $ echo -e $'#!/bin/sh' > urogue $ echo -e $'cd ~/yozvox.web.fc2.com/urogue1.0.7' >> urogue $ echo -e $'if [ -e "$1" ]; then' >> urogue $ echo -e $' ./urogue $1' >> urogue $ echo -e $'elif [ $# = 0 ]; then' >> urogue キャラクター名は好きな名前で。英数字以外は受け付けるか不明 $ echo -e $' ./urogue -n キャラクター名' >> urogue $ echo -e $'else' >> urogue $ echo -e $' echo "$1 is not found."' >> urogue $ echo -e $'fi' >> urogue 権限付与 $ chmod 755 urogue $ cd ~ ゲーム開始 パスは通っているので、次回以降はこれだけで良い ニューゲームの場合は以下 $ urogue セーブデータをロードする場合、セーブデータ名を引数として渡す $ urogue セーブデータ名

XRogue 8.0 $ cd ~/yozvox.web.fc2.com マニュアル $ wget http://yozvox.web.fc2.com/READMEX80.TXT $ wget http://yozvox.web.fc2.com/READMEX80_jp.TXT ソース $ wget http://yozvox.web.fc2.com/xrogue8.0-src.tar.gz 必要であれば、以下のパッチを ~/yozvox.web.fc2.com にダウンロードする このファイルは、ブラウザでダウンロードする必要がある https://www.mediafire.com/file/w2kr9cwwvrmtupp/xrogue8.0-current_sav_ASCII_LF.patch/file $ mkdir xrogue8.0-src $ tar zxvf xrogue8.0-src.tar.gz -C xrogue8.0-src $ cd xrogue8.0-src セーブファイルのパスを、スコアファイルと同じ場所に変更する パッチを当てる。任意 $ patch -p1 < ../xrogue8.0-current_sav_ASCII_LF.patch $ make dist.linux $ mkdir ../xrogue8.0 $ mv xrogue ../xrogue8.0 $ cp README_jp.TXT ../xrogue8.0 シェルスクリプト作成 $ cd ../games $ touch xrogue8 $ echo -e $'#!/bin/sh' > xrogue8 $ echo -e $'cd ~/yozvox.web.fc2.com/xrogue8.0' >> xrogue8 $ echo -e $'if [ -e xrogue.sav ]; then' >> xrogue8 $ echo -e $' ./xrogue xrogue.sav' >> xrogue8 $ echo -e $'else' >> xrogue8 キャラクター名は好きな名前で。英数字以外は受け付けるか不明 $ echo -e $' ./xrogue -n キャラクター名' >> xrogue8 $ echo -e $'fi' >> xrogue8 権限付与 $ chmod 755 xrogue8 $ cd ~ ゲーム開始 パスは通っているので、次回以降はこれだけで良い $ xrogue8

Moria 5.6-debian1-2build3p $ cd ~/yozvox.web.fc2.com まずはマニュアル類ダウンロード $ wget http://yozvox.web.fc2.com/moria-jp.txt $ wget http://yozvox.web.fc2.com/moria-en.txt $ wget http://yozvox.web.fc2.com/moria-jp.pdf $ wget http://yozvox.web.fc2.com/moria-en.pdf $ wget http://yozvox.web.fc2.com/moria_doc.zip Debian 以外? $ wget http://yozvox.web.fc2.com/moria5.6-2x-src.zip Debian であれば、おそらくこのファイル 以降はこのファイル前提で記述 $ wget http://yozvox.web.fc2.com/moria5.6.d.1-2b3p-src.zip ビルド $ unzip moria5.6.d.1-2b3p-src.zip $ cd moria5.6.d.1-2b3p-src $ sh build32.sh $ mkdir ../moria5.6.d.1-2b3p $ mv moria ../moria5.6.d.1-2b3p $ cp -r files ../moria5.6.d.1-2b3p カラーモードで起動するシェルスクリプト作成 $ cd ../games $ touch moria56 $ echo -e $'#!/bin/sh' > moria56 $ echo -e $'cd ~/yozvox.web.fc2.com/moria5.6.d.1-2b3p' >> moria56 以下は移動方法で、片方を選ぶ ローグキー移動の場合 $ echo -e $'./moria -c -r' >> moria56 テンキー移動の場合 $ echo -e $'./moria -c' >> moria56 権限付与 $ chmod 755 moria56 $ cd ~ ゲーム開始 パスは通っているので、次回以降はこれだけで良い $ moria56
2024年07月03日
SpliceHack 1.2.0 Role-Based Skills のスポイラー
NetHack のヴァリアント、SpliceHack 1.2.0では、Role 毎に取得、上昇可能なスキルを所有しており、それについてのスポイラーです。強力なスキル、そうでもないスキル、バグで全く意味のないスキル、バグは無さそうだが存在意義の分からないスキルなど、色々あります。
SpliceHack 1.2.0 Role-Based Skills についてのスポイラー 文中のスキル値(skill)は以下の値を返す。 Isrestricted 0 Unskilled 1 Basic 2 Skilled 3 Expert 4 Master 5 Grand Master 6 rn2(v) は、0 ~ (v - 1) の間のランダムな値。 rnd(v) は、1 ~ v の間のランダムな値。 rnl(v) は、0 ~ (v - 1) の間のランダムな値を取るが、 (厳密には違う場合もあるが)運が高いほど低い値になりやすい。 rn1(x, y) は、rn2(x) + y を返す。 スキル上限リスト +--------------+---+---+---+---+---+---+---+---+---+ |skills \ roles|Arc|Bar|Car|Cav|Con|Dra|Hea|Kni|Mon| +--------------+---+---+---+---+---+---+---+---+---+ |power attack | |Mas| |Mas| |Bas| |Ski| | |careful attack|Ski| | | | | | |Ski| | |flaming fists | | | | | | | | |Gra| |freezing fists| | | | | | | | | | |shocking fists| | | | | | | | |Gra| |stunning fists| | | | | | | | |Gra| |backstab | | | | | | | | | | |rat tamer | | | | |Exp| | | | | |dragon tamer | | | | | |Exp| | | | |blood rage | |Exp| | | | | | | | |panache |Exp| | | | | | | | | |wild magic | | |Exp| | | | | | | |blood magic | | | | | | | | | | |code of honor | | | | | | | |Exp| | |disarm |Exp|Bas| |Ski| |Ski|Exp|Exp|Exp| |sunder | |Exp| |Exp|Bas|Ski| | |Exp| |tumbling |Ski| | | |Bas| | | | | +--------------+---+---+---+---+---+---+---+---+---+ +--------------+---+---+---+---+---+---+---+---+ |skills \ roles|Pri|Pir|Rog|Ran|Sam|Tou|Val|Wiz| +--------------+---+---+---+---+---+---+---+---+ |power attack | |Ski| | |Mas|Bas|Ski| | |careful attack| | |Exp|Bas| |Bas| | | |flaming fists | | | | | | | | | |freezing fists| | | | | | |Gra| | |shocking fists| | | | | | | | | |stunning fists| | | | | |Bas| | | |backstab | | |Exp| | |Bas| | | |rat tamer | | | | | | | | | |dragon tamer | | | | | | | | | |blood rage | | | | | | | | | |panache | | | | | | | | | |wild magic | | | | | |Bas| |Exp| |blood magic | | | | | | | |Exp| |code of honor | | | | |Exp| | | | |disarm | |Ski|Bas| |Exp|Bas|Bas| | |sunder |Bas|Ski| |Exp|Exp|Bas|Exp| | |tumbling | |Ski|Exp| | | | | | +--------------+---+---+---+---+---+---+---+---+ スキル経験値の上昇 レベルが上昇した際、その時の role で、 スキル上限 > Unskilled のスキルの経験値がそれぞれ上昇する。 上昇値は、 rn1(3, 3) * スキル値(該当スキル) となる。 レベルが下降しても経験値は減らないので、レベルドレインと レベルアップを繰り返すと経験値を稼ぐ事ができる。レベルを 下げずに Grand Master まで上げる事はできないと思われる。 各スキルの特徴 *** power attack *** Barbarian Master Caveman Master Dragon Rider Basic Knight Skilled Pirate Skilled Samurai Master Tourist Basic Valkyrie Skilled 効果は、hitval dmgval を参照。 *** careful attack *** Archeologist Skilled Knight Skilled Rogue Expert Ranger Basic Tourist Basic 効果は、hitval dmgval を参照。 *** flaming fists *** Monk Grand Master 効果は、skill_hit_effects を参照。 *** freezing fists *** Valkyrie Grand Master 効果は、skill_hit_effects を参照。 *** shocking fists *** Monk Grand Master 効果は、skill_hit_effects を参照。 *** stunning fists *** Monk Grand Master Tourist Basic 武器を装備しておらず、ダメージ > 1 で、近接攻撃で、 変化していない場合、スタン攻撃が発生する可能性がある。 rnd(100) < (スキル値(bare handed combat) + スキル値(stunning fists) が真であるか、boxing gloves を装備中であり、 攻撃対象が大きくなく、攻撃対象の皮が厚くなく、 攻撃のダメージで攻撃対象が死亡しない場合、 攻撃対象はスタンする。 *** backstab *** Rogue Expert Tourist Basic 武器攻撃時に、以下の条件で発生する。 対象が恐怖している && (Rogue Lv > 0 || スキル値(backstab) > Unskilled) && 変化していない && (近接攻撃 || 長斧を使った攻撃) が真の場合、 スキル値(backstab) > Unskilled であれば、 ダメージ += rnd(プレイヤーレベル * (1 + スキル値(backstab))) それ以外は、 ダメージ += rnd(プレイヤーレベル) となる。 *** rat tamer *** Convict Expert Chat した鼠をペットにできるスキル。 Convict Lv > 0 であり、話相手が鼠であり、 対象が友好的でもペットでも無い場合、 rnl(10) - スキル値(rat tamer) < 2 が真の場合、その相手をペットにできる。 偽の場合、 rnl(10) *= 8 が真になると、その相手は友好的になる。 *** dragon tamer *** Dragon Rider Expert Chat したドラゴンをペットにできるスキル。 Dragon Rider Lv > 0 であるか、 スキル値(dragon tamer) > Unskilled) であり (実際にはこのスキルを持つのが Dragon Rider のみなので意味のない条件)、 話相手がドラゴンであり、 対象が友好的でもペットでも無い場合、 rnl(10) - スキル値(dragon tamer) * 3 + 対象Lv < 2 が真の場合、その相手をペットにできる。 偽の場合、 rnl(10) *= 8 が真になると、その相手は友好的になる。 *** animal friendship *** 実装されていないスキル。 *** blood rage *** Barbarian Expert 効果は、skill_hit_effects を参照。 *** panache *** Archeologist Expert スキル値(panache) > Unskilled が真であれば、(スキル値(panache) - 1)個の blessed luck stone を持っているのと同じ扱いを受ける。 しかし、このスキルを得ただけでは、さらなる幸運(extra luck) は得られない。スキルを上昇させた際に、さらなる幸運の再計算を していないため。 これを解決するには、幸運に影響するオブジェクトを一度 インベントリに加える必要がある。一度でもインベントリに 入れば、その後それを捨てても問題無い。 *** wild magic *** Cartomancer Expert Tourist Basic Wizard Expert 魔法を使用して成功した際、 スキル値(wild magic) > Unskilled が真であり、 rn2(スキル値(wild magic)) > 0 も真であれば、 使用した魔法がランダムな魔法に置換され、 その魔法のスキル値に +1 されて使用する事になる。 魔法は覚えているか否かは関係無く、存在する全ての魔法 から選ばれる。 energy 消費や、使用難易度は元の魔法で計算した後に 魔法が置換される。 このスキルを覚えると、使用した魔法が別の魔法に置換 される可能性が排除できなくなる。 *** blood magic *** Wizard Expert スキル値(blood magic) > Unskilled が真であれば、energy が足りなくても魔法を使える ようになり、不足分、hp を代わりに消費する事になる。 (extra) healing の魔法を使った場合、四倍を消費する。 いずれの場合も、hp も足りない場合は死亡する。 魔法使用後、energy <= 0 の場合、 魔法のスキル値 + スキル値(blood magic) - 1 されて使用する事になる。 *** code of honor *** Knight Expert Samurai Expert 効果は、hitval を参照。 属性値 > -10 であり、 スキル値(code of honor) > Unskilled が真であり、 プレイヤーの属性が秩序である場合、 攻撃対象が動けないか、眠っているか、 恐怖していてかつ怒っていない場合、 属性値 -= スキル値(code of honor) * 3 される。 騎士道と同じ条件だが、ペナルティは騎士道より重く、 それより優先される。 *** disarm *** Archeologist Expert Barbarian Basic Caveman Skilled Dragon Rider Skilled Healer Expert Knight Expert Monk Expert Pirate Skilled Rogue Basic Samurai Expert Tourist Basic Valkyrie Basic whip を apply コマンドで使用した際、 スキル値(disarm) -1 のボーナスが得られる。 スキル値(disarm) > Unskilled が真の場合、disarm コマンドを使用できるようになり、 武器を持った怪物にこのスキルを使用した際、 rn2(6) < スキル値(disarm) + スキル値(メイン武器) が真であれば、怪物のマスに武器を落とす事ができる。 成否に関わらず、対象の怪物を怒らせる。 スキル値によっては確実に武装解除できる。 *** sunder *** Barbarian Expert Caveman Expert Convict Basic Dragon Rider Skilled Monk Expert Priest Basic Pirate Skilled Ranger Expert Samurai Expert Tourist Basic Valkyrie Expert スキル値(sunder) > Unskilled が真の場合、sunder コマンドが使用可能になり、 武器を持っている怪物にスキルを使用した際、 a = スキル値(sunder) 怪物の武器がアーティファクトである場合 a -= 2 rn2(6) < a が偽である場合、何も起こらない。 真である場合、以下の処理を行う。 対象の怪物が石化生物の死体等(*1)を持っている場合、 プレイヤーが武器を持たず石化耐性も無い場合、 石化して死亡する。それ以外で武器を持たない場合、 持っている武器の素材が石になる処理があるが、 存在しない武器の素材を変更しようとして、 プログラムが強制終了する。武器をもっていた場合に 素材を石に変更する意図だったと思われる。 } else if (!uwep) { uwep->material = STONE; というコードだが、条件を修正した場合、 武器の素材は石にはならず、mysterious という素材になる。 この"STONE"という定数は地形のための定数であり、 間違った素材を代入しているため。 } else if (uwep && uwep->material != MINERAL) { uwep->material = MINERAL uwep->owt = weight(uwep); costly_alteration(uwep, COST_DRAIN); とすると、素材は正しく石(MINERAL)になり、 重量も正しく変化し、商品に対する処理も行われる。 怪物の持つ武器は破壊され、怪物は怒る。 *1 缶詰や人形、マスク、エッセンスの注入されたアイテムでも 同じはずだが、少なくとも缶詰や人形、マスクを怪物が武器として 使う事はないと思われる。 *** tumbling *** Archeologist Skilled Convict Basic Pirate Skilled Rogue Expert tumble コマンドを使用した際の処理は以下。 プレイヤーが飲み込まれているか罠にかかっている場合は 必ず失敗する。 Fumbling 状態である場合は必ず失敗し、d20 の物理ダメージを 受ける。 roll = rn2(6) スキル値(tumbling) <= Unskilled || roll > スキル値(tumbling) が真である場合、コマンドが失敗する。よって、 このスキルが無い場合でもコマンドは使用できるが、 必ず失敗する。 座標が不正な場合は失敗する。 対象が存在しないか、確認できない場合は失敗する。 コマンドが成功すると、対象と位置が入れ替わる。 プレイヤーの入れ替わり先に罠があった場合、 それが発動する。 roll > スキル値(tumbling) が真である場合、d2 ターン行動不能になる? が、前述の失敗条件と同じなので、これは真にならない。 *** spider friend *** 実装されていないスキル。 =========================================================== hitval (weapon.c) 近接及び飛び道具による攻撃時の一部スキルの処理 命中修正 -= スキル値(power attack) 命中修正 += スキル値(careful attack) 命中修正 += スキル値(code of honor) =========================================================== dmgval (weapon.c) 近接及び飛び道具による攻撃時の一部スキルの処理 ダメージ += スキル値(power attack) ダメージ -= スキル値(careful attack) =========================================================== skill_hit_effects (uhitm.c) 素手攻撃時の一部スキルの処理 まず、 dmg = 0 とする。 framing fists > Unskilled && rn2(25) < スキル値 が真の場合、対象に火耐性が無い場合、dmg += d6 dmg > 4 の場合、 相手の持つ巻物が破壊される場合がある。 freezing fists > Unskilled && rn2(25) < スキル値 が真の場合、対象に冷気耐性が無い場合、dmg += d6 dmg > 4 の場合、 相手の持つ水薬が破壊される場合がある。 shocking fists > Unskilled && rn2(100) < スキル値 が真の場合、対象に冷気耐性が無い場合、dmg += d20 dmg > 4 の場合、 相手の持つ杖が破壊される場合がある。 冷気耐性で判定されているのは、バグと思われる。 fists 攻撃は重複できるが、dmg は加算されるので、 アイテムを壊す確率が上昇する。 blood rage > Unskilled && hp < (mhp / 2) が真の場合、 hp < (hpm / 4) であれば、dmg += スキル値(blood rage) * 2 そうでなければ、dmg += スキル値(blood rage) しかし、blood rage は、上記がコードの意図と 思われるが、実際のコードは u.uhp < (u.uhp / 2) u.uhp < (u.uhp / 4) ? 2 : 1) のようになっているため、効力を発揮する場面は無い。 dmg がダメージに加算される。
2024年06月02日
SpliceHack 1.2.0 炉(furnace)のスポイラー
NetHack のヴァリアント、SpliceHack 1.2.0では、炉(furnace)という設備が追加されており(これ以前のバージョンにあるかは不明)、それについてのスポイラーです。検索しても、日本語の情報が全く出て来ないヴァリアントですが、せめて私だけでも書いてみようと思います。日本語版はありませんが、NetHack 経験があればプレイできると思います。バグは多いですが楽しいです。
SpliceHack 1.2.0 炉(furnace)のスポイラー 炉(furnace)の地形の上で #forge コマンドを使うと、二つの オブジェクトを組み合わせて、オブジェクトを作成したり、 怪物のエッセンスを注入したりできる。順番が結果に影響する 場合もある。 最初に選んだオブジェクトを obj1 とし、 次に選んだオブジェクトを obj2 とする。 装備しているオブジェクトや、同じオブジェクトは合成できない。 オブジェクトが石化生物の死体である場合、それを触る処理が 行われる。 オブジェクトが乗り手の死体である場合、それが蘇る。 obj2 がアーティファクトであり、obj1 がそうではない場合は 合成できない。 1. オブジェクトが両方アーティファクトである場合 以下の組み合わせである場合、それに応じたアーティファクトが 作成され、4 の処理に進む。そうでなければ処理は終了。 アーティファクトが既に存在する場合、そのベースとなる武器が 代わりに生成される。 Frostburn: Frost Brand + Fire Brand Mortality Dial: Trollsbane + Werebane Squall: Sunspot + Sonicboom 2. obj2 が死体、缶詰、人形、マスクのいずれかであり、怪物の 名前が入っている場合 obj1 にその怪物のエッセンスが注入される。obj1 の種類により、 以下のような変化が起こる。 武器であれば、攻撃時にその怪物によって異なる特殊攻撃が 追加されるようになる。 エッセンスの注入された武器で攻撃した際、50% の確率で "The (怪物名) essence in (武器名) bursts forth!" と表示され、XdY の追加ダメージを与える。 X = min(2, 怪物の一番最初の攻撃のダイス数) Y = min(6, 怪物の一番最初の攻撃のダイス面) min(x, y) は、x と y の値の内、小さい方を返す。 その場合、怪物の一番最初の攻撃のダメージタイプによる 判定も発生する。ただし、ダメージタイプが AD_STON AD_VOID の場合は 29/30 の確率で、AD_PHYS として扱われる。 効果やその発生率、ダメージ等はタイプによって異なる。 詳細は artifact.c#artifact_hit 関数内の、 /* Imbued objects. */以下を参照。 鎧であれば、変化時にドラゴンの鱗(鎧)と同じように作用する。 ドラゴンの鱗(鎧)に合成した場合、ドラゴンが優先される。 通常は変化できない怪物(M2_NOPOLY)であっても、ユニーク モンスターであっても、変化できてしまう。 鎧以外の防具にも合成できるが、おそらく意味は無い。 死体、缶詰、人形、マスク、卵、彫像の場合、その怪物の名前の 付いたオブジェクトに変化する。重量などの値は変化しない。 ユニークモンスターの名前が付いた場合、おそらく卵は孵化せず、 変化できない怪物(M2_NOPOLY)の場合、マスクは使用時に消滅する が、人形は問題無く使えてしまい、ユニークモンスターをペットに したり騎乗したりできる。 それ以外のオブジェクトは、おそらく変化しない。 5 の処理に進む。 3. それ以外の組み合わせ 以下の組み合わせであれば、それに応じたオブジェクトが作成 される。順番は逆でも問題無い。以下のリストでは、オブジェクト の定数名で表記している。 武器 BASEBALL_BAT: CLUB + RUBBER_HOSE BATTLE_AXE: AXE + AXE HEAVY_IRON_BALL: IRON_CHAIN + BOULDER LONG_SWORD: SHORT_SWORD + SHORT_SWORD SPIKED_CHAIN: IRON_CHAIN + DAGGER SPIKED_CHAIN: IRON_CHAIN + KNIFE TRIPLE_FLAIL: FLAIL + FLAIL TSURUGI: TWO_HANDED_SWORD + KATANA 防具 HELM_OF_TELEPATHY: AMULET_OF_ESP + HELMET SHIELD_OF_REFLECTION: AMULET_OF_REFLECTION + LARGE_SHIELD TINFOIL_HAT: DENTED_POT + DUNCE_CAP LEVITATION_BOOTS: HIGH_BOOTS + RIN_LEVITATION LEVITATION_BOOTS: LOW_BOOTS + RIN_LEVITATION SHIELD_OF_REFLECTION: SMALL_SHIELD + AMULET_OF_REFLECTION CLOAK_OF_PROTECTION: PLAIN_CLOAK + AMULET_OF_GUARDING 指輪 RIN_CONFLICT: RIN_HUNGER + RIN_AGGRAVATE_MONSTER RIN_POLYMORPH_CONTROL: RIN_POLYMORPH + RIN_TELEPORT_CONTROL RIN_TELEPORT_CONTROL: RIN_TELEPORTATION + RIN_POLYMORPH_CONTROL 道具 LENSES: CRYSTAL_BALL + TOWEL LOCK_PICK: SKELETON_KEY + SKELETON_KEY SKELETON_KEY: LOCK_PICK + LOCK_PICK 魔法の道具 CRYSTAL_BALL: LOADSTONE + SCR_IDENTIFY CRYSTAL_BALL: LUCKSTONE + SCR_IDENTIFY HORN_OF_PLENTY: FOOD_RATION + TOOLED_HORN MAGIC_FLUTE: FLUTE + SCR_TAMING OILSKIN_SACK: CAN_OF_GREASE + BAG_OF_HOLDING OILSKIN_SACK: CAN_OF_GREASE + BAG_OF_RATS FIRE_HORN: TOOLED_HORN + WAN_FIRE FROST_HORN: TOOLED_HORN + WAN_COLD OILSKIN_SACK: SACK + CAN_OF_GREASE DRUM_OF_EARTHQUAKE: LEATHER_DRUM + SCR_EARTH MAGIC_HARP: HARP + SCR_TAMING DWARVISH_MATTOCK: PICK_AXE + AXE 杖 WAN_CREATE_MONSTER: WAN_POLYMORPH + WAN_NOTHING WAN_ENLIGHTENMENT: WAN_OPENING + WAN_LIGHT WAN_NOTHING: WAN_OPENING + WAN_LOCKING 食料 K_RATION: C_RATION + FOOD_RATION FRUITCAKE: SLICE_OF_CAKE + SLIME_MOLD PUMPKIN_PIE: CREAM_PIE + PUMPKIN APPLE_PIE: CREAM_PIE + APPLE 魔除け AMULET_OF_REINCARNATION: AMULET_OF_LIFE_SAVING + AMULET_OF_CHANGE AMULET_OF_LIFE_SAVING: AMULET_OF_REINCARNATION + RIN_POLYMORPH_CONTROL 以上に無い組み合わせの場合、処理は終了する。 存在する組み合わせであれば、オブジェクトが作成される。 作成されたオブジェクトの変化し得る素材リストに、obj2 の素材が含まれる場合、オブジェクトの素材はその素材に 変化する。そうでない場合、obj1 の素材が含まれる場合、 オブジェクトの素材はその素材に変化する。この際、重量の 再計算がされないため、素材に関わらず、オブジェクト本来の 重量となる。 また、それとは別に、作成されたオブジェクトの重量が正しく ならない場合も確認された。これについては原因は不明。 4 の処理に進む。 4. 強化値などの引き継ぎ 作成に使用したオブジェクトと完成したオブジェクトの種類 (class)が同じ場合、強化値や使用回数(spe)を引き継ぐ。 その際、obj1 obj2 が両方同じ種類の場合、値の高い方を 引き継ぐ。 obj2 が呪われていれば、それを引き継ぐ。 obj2 が祝福されていれば、それを引き継ぐ。 obj2 に怪物の名前が付いていれば(**の死体など)、それを 引き継ぐ。それ以外で、obj1 に怪物の名前が付いていれば、 それを引き継ぐ。 obj1 obj2 は消滅する。 処理は終了する。 5. 炉の消滅 50% の確率で、"lava in the furnace cools."と表示され、 炉が消滅する。 消滅しない場合、"lava in the furnace bubbles ominously." と表示される。 処理は終了する。
2024年04月20日
Linux で、JNetHack 3.6.7 をインストール
ビルド環境: AntiX Linux 23.1 32bit
はじめに
JNetHack 3.6.7 をインストールする手順です。 Debian系であれば、ほぼ同じ手順でいいと思います。
インストール先
この方法だと、インストール先は、
~/nh/install/
となります。よって、この項のパスを通す作業を一度だけ行います。すでにパスが通っている場合は無視します。
~/.bashrc に以下を追記します。
# set PATH so it includes user's nethack bin if it exists if [ -d "$HOME/nh/install/games" ] ; then PATH="$HOME/nh/install/games:$PATH" fi
以上を書き込み端末を再起動するとパスが通ります。
ダウンロード
ファイルが存在しない場合、以下のファイルを
~/nhにダウンロードします。ディレクトリが存在しない場合は作成してください。
IBMGraphics | UTF8Graphics については、リンク先を参照してください。
jnethack-3.6.7-0.1-src-230618.zip データベースを日本語化しない場合は無視
jnethack-3.6.7-0.1-shortprefix_1.02_SJIS-JP_LF.patch 祝呪表示等を短縮しない場合は無視
jnethack-3.6.7-0.1-bugfix_1.12_SJIS-JP_LF.patch バグ修正。ダウンロードをお勧めします
jnethack-3.6.7-0.1-ibmtty_SJIS_LF.patch IBMGraphics を表示したい場合
jnethack-3.6.7-0.1-utf8tty_SJIS_LF.patch (IBM | UTF8)Graphics を表示したい場合
jnethack-3.6.7-0.1-linux-no-curses_SJIS_LF.patch 違うバージョンと共存するための名前の変更や、日本語ではまともに表示されない、curses interface の無効化など
ビルド
以下の、文頭が"$"のコマンドを実行します。
$ sudo apt-get install build-essential bison flex libncurses5-dev gzip nkf git $ cd ~/nh $ git clone https://github.com/jnethack/jnethack-alpha.git データベースを日本語化。ダウンロードしていない場合は以下の二行は無視 $ unzip ./jnethack/jnethack-3.6.7-0.1-src-230618.zip jnethack-3.6.7-0.1-build/dat/data.base $ cp ./jnethack-3.6.7-0.1-build/dat/data.base ./jnethack-alpha/dat/ $ cd jnethack-alpha バグ修正。当てた方がよいです $ patch -p1 < ../jnethack-3.6.7-0.1-bugfix_1.12_SJIS-JP_LF.patch 祝呪表記を短縮。任意 $ patch -p1 < ../jnethack-3.6.7-0.1-shortprefix_1.02_SJIS-JP_LF.patch IBMGraphics 使用可能に。任意。どちらか片方 $ patch -p1 < ../jnethack-3.6.7-0.1-ibmtty_SJIS_LF.patch IBMGraphics & UTF8Graphics 使用可能に。任意。どちらか片方 $ patch -p1 < ../jnethack-3.6.7-0.1-utf8tty_SJIS_LF.patch 任意 日本語だと、curses interface はおそらく使えないので無効化します。 また、ファイル名を変更し、他のバージョンと共存できるようにします。 これを当てると、設定ファイル名が .jnethackrc -> .jnh36rc となり、実行ファイルやディレクトリの名前も jnethack -> jnh36 となります。 $ patch -p1 < ../jnethack-3.6.7-0.1-linux-no-curses_ASCII_LF.patch $ ./configure $ make install
設定変更
~/(.jnethackrc | .jnh36rc) の文字コードを EUC-JP にする必要があります。そうでないと初期設定のペットやフルーツの名前が文字化けします。
WIZARD MODE を利用する場合、
nh/install/games/lib/(jnethackdir | jnh36dir)/sysconf
を開き、
WIZARDS=ユーザー名
に変更します。
ログを出力する場合、
nh/install/games/lib/(jnethackdir | jnh36dir)/sysconfを開き、
DUMPLOGFILE を有効にします。
私の場合、
DUMPLOGFILE=/home/ユーザー名/nh/log/jnh367.%n.%d.log
のようにしています。
(IBM | UTF8)Graphics パッチを当てた場合、グラフィックの変更は、
readme_(ibm | utf8)tty.txt
を参照してください。
起動
パスが通っているので、カレントディレクトリに関わらず、
jnethack-3.6.7-0.1-linux-no-curses_ASCII_LF.patch を当てた場合 $ jnh36 当てていない場合 $ jnethack
いずれかでゲームが起動します。(IBM | UTF8)Graphics パッチを当てた場合、端末が UTF-8 を表示する設定になっていれば、それらが表示できます。
2024年04月14日
(J)NetHack 3.6.7 win/tty の IBMGraphics について
NetHack 3.6.7 で、Windows とそれ以外の OS で、英語と日本語の両方で、IBMGraphics を表示する方法についての記事です。さらに、可能だったので、UTF8Graphics も表示できるようにしてみました。
日本語の場合、フォントを複数設定できるコンソールで、適切なフォントを指定しないと、正しく表示されないかもしれません。
Windows の場合は、デフォルトで表示できるようになっているので、コマンドプロンプトの文字コードを変更する必要はありません。
3.4.3 と同じように、コンソールの文字コードを cp437 とすることで表示できます。文字コードの変更ができないコンソールの場合、UTF-8 に対応したコンソールであれば、後述のパッチを当ててビルドすることで表示できるようになります。
日本語版では、cp437 の文字を表示するコードが無効化されていますが、それを有効にすれば英語と同じように表示でき、日本語と共存できます。後述のパッチを当てるか、自分で書き換えてビルドすることで表示できます。
コンソールの文字コードを cp437 とすると、日本語が表示できなくなります。UTF-8 に対応したコンソールであれば、後述のパッチを当ててビルドすることで両方表示できるようになります。
英語版の Windows 以外で、コンソールの文字コードが UTF-8 であれば
IBMGraphics
を表示できるようになるパッチです。前述の通り、Windows の場合は元々文字コードに関係なく表示できるので、このパッチを当てる必要はありません。
英語版で、コンソールの文字コードが UTF-8 であれば
IBMGraphics
UTF8Graphics
を表示できるようになるパッチです。
cp437 の文字の内、IBMGraphics で使用していない
0x80 ~ 0x87
の範囲の文字を置換するので、それらを表示できなくなりますが、問題は無いと思います。
日本語版で、
IBMGraphics
を表示できるようになるパッチです。
Windows の場合はコンソールの文字コードは関係ありませんが、それ以外だと、UTF-8 である必要があります。
日本語版で、コンソールの文字コードが UTF-8 であれば
IBMGraphics
UTF8Graphics
を表示できるようになるパッチです。
Windows の場合はコンソールの文字コードは関係ありませんが、それ以外だと、UTF-8 である必要があります。
cp437 の文字の内、IBMGraphics で使用していない
0x80 ~ 0x87
の範囲の文字を置換するので、それらを表示できなくなりますが、問題は無いと思います。
2023年11月12日
Chaotic Journey というゲームを公開しました
2023年08月27日
SlashTHEM-0.8.0 のアイテムの和名について
SlashTHEM-0.8.0で、侍及び忍者で開始すると、一部のアイテムが和名に変換されますが、NetHack に比べて数が増えていて、英語であることもあり、わかりづらいものもあるのでリスト化してみました。
SlashTHEM-0.8.0 Japanese-Item 英日変換用リスト 侍及び忍者でプレイすると、一部のアイテムが和名に変換されますが、そのリストです。 ゲームでは英語ですが、わかりやすいよう和訳も併記しています。英名の翻訳は日本語版 (JNetHack-3.6.7-0.1, JSlash'EM-0.0.7E7F3-J0.2.1)から。それらに存在しないものは そのまま訳したり検索してヒットしたものだったりします。 変換されるのは名前だけで、性能や材質は変わりません。 "nunchaku"は、鎖カテゴリに和名ではない"nunchiaku"があるので混同に注意して下さい。 <記号について> ! NetHack の時点で存在する和名。 + NetHack の時点で存在するが、和名が変更されたもの。 * ソースには存在するが、コメントアウトされていてゲーム内では変換されないもの。 battle-axe(戦斧): ono(斧) !broadsword(幅広の剣): ninja-to(忍者刀) bronze plate mail(青銅の鎧): tanko(短甲) club(こん棒): bokken(木剣) crystal plate mail(水晶の鎧): jade o-yoroi(翡翠の大鎧) dagger(短剣): kunai(苦無) dart(投げ矢): bo-shuriken(棒手裏剣) dwarvish mattock(ドワーフのつるはし): dwarvish zaghnal(ドワーフのザグナル) !flail(フレイル): nunchaku(ヌンチャク) !food ration(食料): gunyoki(丸薬) gauntlets of fumbling(お手玉の小手): kote of fumbling(お手玉の小手) gauntlets of power(力の小手): kote of power(力の小手) !glaive(グレイブ): naginata(なぎなた) guisarme(ギザルム): kamayari(鎌槍) halberd(ハルバード): bisento(眉尖刀) !helmet(兜): kabuto(兜) !knife(ナイフ): shito(刺刀) lance(ランス): uma-yari(馬槍) !leather gloves(革の手袋): yugake(弓懸) !lock pick(鍵開け器具): osaku(おさく) long sword(長剣): chokuto(直刀) +plate mail(鋼鉄の鎧): o-yoroi(大鎧) !potion of booze(酔っぱらいの薬): sake(酒) quarterstaff(六尺棒): bo(棒) !short sword(小剣): wakizashi(脇差し) shuriken(手裏剣): hira-shuriken(平手裏剣) spear(槍): yari(槍) splint mail(鉄片の鎧): dou-maru(胴丸) silver dagger(銀の短剣): jade-hilted kunai(翡翠の柄の苦無) silver spear(銀の槍): jade-set yari(翡翠付きの槍) trident(トライデント): magari yari(曲槍) two-handed sword(両手剣): no-dachi(野太刀) war hammer(ウォーハンマー): dai tsuchi(大鎚) !wooden harp(木の竪琴): koto(琴) doughnut(ドーナツ): onigiri(おにぎり) *wedge sandals(ウェッジサンダル): jika-tabi(地下足袋) water walking boots(水上歩行の靴): mizugumo(水蜘蛛) grappling hook(ひっかけ棒): kaginawa(鉤縄) bow(弓): dai-kyu(大弓) small shield(小さな盾): timbe(ティンベー) baseball bat(野球のバット): jo(杖) pancake(パンケーキ): okonomiyaki(お好み焼き)
2023年06月21日
JNetHack で IBMGraphics を表示する方法について
23/06/22 追記: Alt+F を有効にする方法を追加.
23/06/24 追記: メイリオを使う方法を追加.
前回、IBMGraphics を表示できるようにした JNetHack を公開しましたが, 使用するターミナルやフォントによっては問題が起こることがあります. そこで, 簡単に表示する手順を記事にしました. ただし, 64bit windows 限定です.
Windows (.exe) v3.4.1
をダウンロードします. バージョンは今現在のものです. そしてダウンロードした Hyper-Setup-3.4.1.exe を実行し, hyper をインストールします.
インストール後の画面からそのまま起動するか, デスクトップに新しくできたアイコンから起動します.
フォント, フォントサイズ, カラーリングなどを変更したい場合, アプリ左上のバーガーメニューを左クリックし, Edit -> Preferences を左クリックし, 設定ファイルを開き, 該当箇所の設定を変更します. 以下は一例です.
fontSize: 24, fontFamily: 'Consolas, "MS Gothic", monospace', blue: '#05C3DD', lightBlue: '#A4DBE8',
日本語同士の間隔が空いていて気になる場合は, 以下のようにメイリオを使うといいかもしれません. その場合, MS Gothic を指定している部分は消してください.
fontFamily: 'Consolas, "メイリオ", monospace',
また, Alt+F で #force したい場合, 以下の行の下に
// Example // 'window:devtools': 'cmd+alt+o',
この一行を追加します.
'window:hamburgerMenu': 'ctrl+alt+f',
ファイルを保存すると設定が反映されます.
ターミナルの列数と行数を変更する項目が見当たらないので、ウィンドウをゲーム画面が問題なく表示されるサイズに手動で変更します.
JNetHack.exe のプロパティを開き, 場所の項目の右側にある文字列をコピーします. そして hyper 上で,
cd コピーした文字列 jnethack
の順に入力するとゲームを開始できます. 次回以降は, hyper を起動してこの項目を実行するだけで大丈夫です.
2023年06月18日
JNetHack 3.6.7-0.1 win/tty で IBMGraphics を表示可能にしました
23/06/21 追記: JNetHack で IBMGraphics を表示する方法についてという記事を書きました. ゲーム画面の描画に問題がある場合, 参考にしてください.
23/09/30 追記: 日本語版の公式で配布しているバイナリのように、ゲームと別の場所に設定やセーブファイルを保存したい場合、バイナリ内の拡張子の無い sysconf ファイルを削除して下さい。また、公式の日本語版のセーブデータは、ここで配布しているもので読み込むと、問題が起こるかもしれません。設定ファイルは問題ないはずです。
前回公開したファイルの軽微なメッセージのミスを修正し, データベースの日本語訳を追加し, タイル版を追加し, win/tty で IBMGraphics を使用可能にしました. また, コンパイラが gcc だとプログラムが強制終了することがあったので, msvc に変更しました.
画像は, IBMGraphics を有効にしたものです. 設定は, windows terminal 上のコマンドプロンプトで,
スタートアップ -> 起動サイズ 列: 81 行: 25 コマンドプロンプト -> 外観 配色: Tango Dark フォント フェイス: Consolas フォント サイズ: 16 フォントの太さ: 太字 カーソルの形: ビンテージのようになっています.
公式で公開されているものとの違いは以下です.
- データベースを, ssakusha 氏が日本語化されたファイルに差し替えました.
- 厄介者の召喚が正常に動作するようにしました.
- .jnethackrc で設定したペットやフルーツの名前が文字化けする現象を修正しました.
- 全角文字を不正な座標に表示しようとして問題が起こるバグを修正しました.
- 魔法書の不確定名が一つ未訳だったので修正しました.
- メッセージのミスを修正しました.
- .jnethackrc を書き換えることで、windows/tty で IBMGraphics を使用できるようにしました. readme.ibmwin.txt に使用法が書いてあります. タイル版で使用できるかは確認していません.
- オプションで修飾語を短縮して表示できるように. このオプションがオンであれば、願いの際も短縮した形で入力できます. readme_shortprefix.txt に使い方が書いてあります.
- sysconf ファイルを同梱. sysconf 内のオプションにより, セーブデータや設定ファイルが全てゲームと同じフォルダに生成されるようになっています. 変更もできます.
設定ファイル(.jnethackrc)に以下を追記すると, 友好的な怪物に接触した際などに(y/n)ではなく(yes/no)を確認するようになるため, 特にローグライクキー入力時に安全になります.
OPTIONS=paranoid:Confirm quit die bones attack pray wand-break Were-change Remove
元のソース及び適用したパッチは以下です.
nethack-367-src.tgz
に,
- 日本語化パッチ jnethack-3.6.7-0.1.diff.gz
- 日本語版のバグを直すパッチ 1.11 jnethack-3.6.7-0.1-bugfix_1.11_SJIS-JP_LF.patch
- 修飾語を短縮するパッチ 1.02 jnethack-3.6.7-0.1-shortprefix_1.02_SJIS-JP_LF.patch
- win/tty で IBMGraphics を表示できるようにするパッチ jnethack-3.6.7-0.1-ibmwin_SJIS-JP_LF.patch
- Visual Studio でビルドした際, binary ディレクトリに sysconf 等いくつかのファイルを追加するようにするパッチ jnethack-3.6.7-0.1-msc_SJIS-JP_LF.patch
使用したいバイナリをダウンロードし, 展開し, フォルダ内の JNetHack.exe を実行すると開始できます. .jnethackrc を編集することで, 設定を変更できます. 詳しいことは, フォルダ内の readme_homemade_msvc.txt, それ以外のテキストファイルなどを参考にして下さい.
バグ等があった場合, このブログかツイッターまでご連絡下さい. 修正できる可能性があります. ただ, ブログはあまり確認しません.
Chaotic Journey というゲームを公開しました by (02/13)
Chaotic Journey というゲームを公開しました by Takenoko (01/19)
Chaotic Journey というゲームを公開しました by (01/17)
Chaotic Journey というゲームを公開しました by Takenoko (01/06)
(12/07)Rogue が難しすぎる人でも、XRogue はなんとかなるかもしれない
(07/03)SpliceHack 1.2.0 Role-Based Skills のスポイラー
(06/02)SpliceHack 1.2.0 炉(furnace)のスポイラー
(04/20)Linux で、JNetHack 3.6.7 をインストール
2024年07月(1)
2024年06月(1)
2024年04月(2)
2023年11月(1)
2023年08月(1)
2023年06月(2)
2023年05月(4)
2023年01月(1)
2022年12月(1)
2022年11月(2)
2022年10月(1)
2022年09月(4)
2022年06月(1)
2022年04月(2)
2022年03月(1)
2022年01月(2)
2021年12月(1)
2021年11月(2)
2021年10月(3)
2021年09月(4)
2021年08月(2)
2021年07月(2)
2021年06月(1)
2020年07月(3)
2019年12月(1)
2019年11月(2)
2019年09月(2)
2019年08月(4)
2019年07月(4)
2019年06月(2)
2019年04月(3)
2019年03月(2)
2018年07月(2)
2018年02月(2)
2018年01月(2)
2017年12月(1)
2017年11月(1)
2017年04月(1)
2017年03月(1)
2016年10月(1)
2016年09月(1)
2015年09月(2)
2015年08月(1)
2015年03月(2)
2015年02月(4)
2014年11月(5)
2014年05月(4)
2014年04月(10)
2014年03月(5)
2014年02月(1)
2014年01月(3)
2013年12月(4)
2013年11月(7)
2013年10月(1)
2013年03月(1)
2013年02月(2)
2013年01月(8)
2012年10月(3)
2012年07月(1)
2012年06月(6)
2011年09月(1)
2011年08月(1)
2011年03月(4)
2011年02月(12)
2011年01月(2)
広告
この広告は60日以上更新がないブログに表示がされております。
以下のいずれかの方法で非表示にすることが可能です。
・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。