3.4.0

NetHackの日本語版」を目指す

1.2までは「日本人のためのNetHack」を目指して作成されていましたが、 3.4ではメンテナンスコストの削減のために単に「NetHackの日本語版」を目指します。

これにより、1.2までの追加機能(F、リポート、GTK…)は切り離します。

ソースパッチの形式の統一

変更部分は、

#if 0 /*JP*/
 foo
 bar
#else
 ほげ
 ふが
#endif
でくくります。 単純な追加でない限り#if 1 /*JP*/は使いません。

変更前・変更後とも一行の場合かつ、変更がこの部分で完結する場合は、

/*JP
foo
*/
ほげ
の形を取ります。この部分は専用プログラムでパッチを当てます。

複数行だが完結する変更部分は

#if 0 /*JP:T*/
 foo
 bar
#else
 ほげ
 ふが
#endif
とします。これも専用プログラムでパッチを当てます。

C ソース部分は差分を取ったときに追加行だけですむ形にします。 これによりパッチミスを発見しやすくします。

翻訳

  • 「あなた文」は気にしない。
  • 訳語統一は後回し。
  • 原文の味が出なくてもとりあえず直訳して後で考える。
  • ウイザードモードのメッセージは後回し。
  • impossible(), panic() は翻訳しない。

3.6.0

対応プラットフォーム

Windows,Unixのそれぞれtty,guiの対応を目標とします。 MS-DOS/DJGPPは対応しません。

WindowsではVisualStudioのみの対応とします。

レポジトリの文字コードはShift_JISに

レポジトリの文字コードはWindows用のShift_JISにします。 これは、メンテナがWindowsをメインに使っていることと、 文字コード変換はWindowsよりUnixの方がやりやすいだろうという判断です。

ISO-2022-JP対応は外す

ISO-2022-JP(JIS)対応は外します。 おそらくもう使われていないでしょうし、文字コード変換処理が シンプルになります。

怪物名、アイテム名として日本語名のみを持つようにする

3.4まではこれらは内部的には英語名で持ち、出力のときに日本語に変換していました。 この方法は全ての出力処理に変換処理を追加する必要があり、 メンテナンスコストが非常に高いものでした。 3.6ではこれらは日本語名で持つことにより、メンテナンスコストを大幅にできました。

副作用として虐殺や願いで英語名を指定できなくなりますが、3.4の頃からゲーム中には日本語名しか表示されていないので、 ゲームとしては問題ないはずです。

但し、現状makedefsで英語名を使っていますので、 monst.c,object.cを直接上書きせずにmonstj.c,objectj.cを作成する形にします。

日本語版専用のデータファイルを持たずに英語版を上書きする

3.4までは英語版のhelpファイルに対して日本語のjhelpファイルを用意していましたが、 helpファイル自体を日本語で上書きするようにします。

これによりビルド部分のパッチを減らせます。