Mac OS XにポートされたNetHack。

最大の特徴はウィザードリィのような3Dダンジョン表示*1と、愉快なアイコンで飾られたユーザ・インターフェース。 vanillaのストイックなASCII表示と比べると、同じゲームとは思えないほどだ。
装備や各ステータス、能力値が専用の欄にアイコンやグラフで表示され、いちいち確認する手間も必要ない。

バージョン2.0.0から2D表示(Traditional Mode)であるASCII表示と2Dタイル表示が搭載された。こちらもシンプルながら非常に美しい。

残念ながらMac OS Xでしか動作しないが、OpenGLによるダンジョン画面はたいへん美しい。
公式サイトにいくつかスクリーンショットがある。一見の価値あり。

元のNetHackソースにはウインドウポート追加部分以外は手が加えられていない。つまり手を加えればヴァリアントを動かしたりパッチを充てるのも可能。野良バージョンアップを行った者もいる。

  • 具体的には、元のNetHackソースにヴァリアントのパッチを充て、その後NetHack3Dのパッチを充てることで可能らしい。後述の作者からの返信を参照。

長らく更新が途絶えているが、中身の公式バージョンアップや、Intel Macと(Snow) Leopardに完全対応する日は来るのだろうか。

  • 2009/7/31に生存報告あり。余ってるIntel Macがある人は貸すなり安く売るなりしてあげてください。
    • 2010/7/22に更新あり。MacBookを買ったそうです。

関連リンク


地下48:506 より
作者の生存報告。

一応メールもらえば返信してます。(一時期送信できないことがありましたが)
本家更新のアップデートは448さんの方法でOKです。

nethack 3.4.3のソースにjnethackのパッチをあてて、そのあと3D公式のdiffを充てる。
3D公式のinto.win.nh3d.2.0.2.zipを解凍してwin/に入れる。
あとは3D公式にあるとおりにCocoa_GNUStep/Makefile.srcを編集して、
% ./sys/Cocoa_GNUStep/setup.sh
% make
% make install
で完了。

サイト更新がないのは単にいまさらPPCのバイナリ公開してもなあ・・・。
という理由からです。10.5/Intel環境がなくて追いきれないのですよ。
10.5でファイルロックまわりが変更になってるっぽいんでいじりたいんですが
仕事で使うClassicアプリで置き換え不能なやつがあってOS更新できないんです・・・。
中古Intelも思ったより値段下がらないし。今年こんなで予想以上に金もないしorz
てことで、連絡(だけ)は取れるから!とれるからね!

地下40:303- より
ヴァリアントや追加職業のパッチは可能かと尋ねたメールへの作者からの返信。

基本的なNetHackの仕組みを保持しているならば動かすことは可能です。

とりあえずの手順的には、もとnethackのソースにヴァリアントのパッチを当てて、その後nethack3dのパッチでたぶんいけるかと思います。もしpatchでダメだったら、nethack3Dのnethack部分の変更(nh3dポート使用のための追加部分)を手動で追加してください。これによってヴァリアント側 からNethack3Dのポートを利用できるようになります。

追加職業については、English.lproj内、及び Japanese.lproj内のUsermakesheet.nibと、それに併せてNH3DUserMakeSheetController.mを編集する必要があります。
追加する職業にあわせてボタン類と、ボタンに対応したメソッドを書き加えてください。

具体的には、NH3DUserMakeSheetController.mの
‐ ( IBAction )checkRace:( id )senderメソッドで種族を、
‐ ( IBAction )checkRole:( id )senderメソッドで職業を追加します。

ボタンに設定したtagの値を使ってcase文で分岐です。
現在、種族で0〜4、職業で0〜12を使ってますのでそれ以降を追加していただければ大丈夫です。

追加された種族や職業、モンスターやアイテムなどのグラフィックですが、3Dモデルがなければ自動的に代替のモデルが使用されますので、一応そのまま遊ぶことは可能です。
もし3Dモデルを用意するならば、NH3DOpenGLView.mの編集が必要になります。 モンスター類は元nethackの作成するpm.hにて定義されますので、(たとえばイェンダーならPM_WIZARD_OF_YENDORというように。)それを参考にモデルロードの為の記述をNH3DOpenGLView.m内で行ってください。
その辺、最近のバージョンでは高速化のために非常に汚くなっていて見るとうんざりしますが、力業ですのでやってること自体は単純です。
‐ ( id )loadModelFunc・・・(種族種類など)から始まるメソッドにて、種族ごとに読み込ませています。ここに必要な処理を書き足してください。

あと、そのメソッド呼び出しの高速化のため、
‐ ( void )cashMethod
以下でずらずらと対応メソッドを記述してます。ずらずら書いてある部分をコピペして、pm.hで定義されたモンスター名のと頃を新しい物に書き換えればオッケーです。 最初の頃のバージョンの方がこの辺きれいだった&他の・・たとえばメソッドじゃなくて関数にしてしまうとかもあったのですが、objective-Cの機能の実験もかねてこんな形になっちゃってます。

と、これくらいでとりあえず動くようにはなるかと思われます。


*1 個人的にはFCのポートピア連続殺人事件を思いだす。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-08-23 (月) 12:17:56 (3135d)