Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

NitroHack 4.0.0 release

68 views
Skip to first unread message

Daniel Thaler

unread,
Jan 16, 2012, 12:17:07 AM1/16/12
to
Hi everyone!

This is the initial public release of NitroHack, a fork of NetHack.

The website for NitroHack is http://nitrohack.org, where you can also
find screenshots and downloads.

Change log:

Back end features:
- NitroHack network protocol
NitroHack supports network play without telnet or ssh over its own
protocol. The protocol is based on JSON and should make it very
easy to implement a browser-based NitroHack client (TODO!).

- New save game format
The old format was mostly just a dump of the data structures
from memory onto disk.
The new format has 2 sections:
1) A log of the initial random seed and every game action
performed afterward. This allows a perfect reconstruction of
the game.
2) A binary save appended after the log. It uses a fixed-width,
fixed-endian architecture and compiler independent format, but
is otherwise a direct descendant of the old save format. This
format was kept mostly so that bones files could be created in
it, but it is also used in the savegames for slightly improved
loading speed.
The log file is written continuously, so the "INSURANCE" option
and the recover utility are gone - a crashed game can always be
restored by replaying the log. After the game ends, the log
marked as closed and kept.

- Built in game replay viewing (aka new and improved ttyrec)
The reason for keeping logs of finished games. Once there was a
way to reconstruct the state of the game at any point it would
have been silly not to use it for game viewing.
Since the replay mode is based on abstract game commands rather
than directly recorded screen output, it is completely feasible
to replay a that was played on a unix tty in a windows tile port
or vice versa.
A viewer for games is built into the new nethack UI. You can
perform commands that don't affect the game state (like view
inventory) while viewing a game replay.

- New options code
Options changed ingame are written back to the options file,
which you are not supposed to edit by hand any more. The options
have moved to ~/.config/NitroHack/NitroHack.conf (for game
options) and ~/.config/NitroHack/curses.conf for the options of
the curses UI.
Logs of active and completed games are also under
~/.config/NitroHack/

- Birth options
Want to play without Elbereth? It is now possible to do so without
recompiling. ELBERETH, REINCARNATION, SEDUCE and bones files have
become a new kind of option: birth options, which can only be set
before the character is created.

- Full separation of user interface code from game code.
The core game code has moved into a library (libnitrohack.so or
nitrohack.dll). The game library exposes an API of exactly 23
functions and is largely OS independent. The display code is part
of the OS/platform dependent executable and must provide a list
of callbacks (windowprocs) to the game. There is no shared global
state between the two.
This was a prerequisite for the network protocol, which encodes
the api calls and callbacks almost literally.
With this change, the days of multiple window port binaries are
over. It now makes much more sense to have separate programs, for
example nitrohack-curses and nitrohack-qt.
The NitroHack network server is technically a UI port and uses
the same mechanisms.

- rewritten input system which allows safe key (re)mapping
The came core never, ever requests a key from the UI. All
interactions happen on an abstract level: The ui sends commands
to the core as a string ("wait", "move", etc.), the game may
request a direction or a position (etc) in return.
This allows the UI to perform key mapping safely, because it
is never necessary to guess what context some request for input
occurs in.

- All-new curses based text mode UI
All the old window ports became obsolete due to the extensive API
changes.
A new UI based on curses (ncurses on unix, pdcurses on windows)
has been written. It is a significant upgrade compared to the old
tty port in terms of usability and features:
* unicode display, with customizable display chars
* configurable keymap, with a configuration dialog
* full arrow key and function key use
* multiple visible message lines
* improved status
* permanent inventory display (if your terminal is wide)
* Inventory menu with item actions
* real line editing

- Layered drawing
The game core provides a set of display items for each location
to the UI, rather than a single display char. For example a
monster on an item on a trap can be represented logically.
The curses UI displays the alternatives by blinking between them
(unless you disable blinking in the options).

- Mersenne twister random number generator
An OS independent RNG with known state was required in order to
make game logs replayable. The mersenne twister is the best
choice.

- Re-runnable game core.
Several of the main data structures have been made const, all
others are carefully re-initialized when a game is started or
loaded.
This makes it possible to have a main menu for starting games,
viewing the top ten or changing options.
Previously this was not possible, as the altered global state
from one game would have affected a second, so exiting was the
only option.

- No more level files and no more lock files.
All levels are now kept in memory at all times. This makes a lot
of locking unnecessary. It also allows viewing of levels you are
not currently on.
The only remaining locking is of active game logs via OS
mechanisms which are not based on files: fcntl on UNIX and
LockFile on Windows.
(For a game where all levels have been visited, this change could
result in up to 5 Mb of extra memory use! The horror!!)

- No more support for antique systems and compilers
Support for everything that belongs in a computer history museum
has been removed: BE, DOS, Classic Mac, Atari, VMS, etc ...
The list of supported compilers has likewise been reduced to gcc,
clang and msvc (and probably Intel's compiler, too).
This allowed the removal of lots and lots of crufty code and
compat macros.

- Code cleanups
The number of "#ifdef FOO" has been cut down from 1938 to just 51
That makes the code much more readable, because the indentation
isn't being interrupted every couple of lines. To this end almost
all compile options that didn't become birth options were enabled
unconditionally or removed.
All functions have been converted to use standard prototypes
rather than K&R declarations. Ugly things like prototype widening
and the follow-on #defines went away.
Tools like git diff can now correctly show what function a line
or change is in.
All instances of the keyword "register" have been removed -
optimizing compilers handle this for us. Likewise NEARDATA which
only made sense on 16-bit computers.

- New build system: Cmake
On Linux you get safe parallel builds with pretty colorized
output, on Windows the generated Visual Studio 2010 project
builds without problems.


Game features:
- Autopickup rules
Real rule sets that control what gets picked up replace the
pickup list + exceptions system. Rules can match based on the
name, object type and BUC status.
The following example rule set picks up all food as well as
lizard corpses, but no other corpses:
1. IF name matches "*lizard*" AND type is "food": < GRAB
2. IF name matches "*corpse*" AND type is "food": LEAVE >
3. IF type is "food": < GRAB
Rules are evaluated in order until a matching rule is found. If
no rule matches, the item is left behind by default.

- Character history tracking
NitroHack will automatically track the following items
(with a turn timestamp) for use in your ascension posts:
* new depth reached
* new experience level reached
* wishes with the exact wish text
* killed a unique monster
* lifesaved
* crowning
* artifact gifts
* basic quest status
* major oracle consultations
* performed the invocation
* gained/lost the amulet of yendor (only shown if the amulet is
identified)
You can view your heroic deeds with #history

- Dungeon overview + dungeon annotations
This change was inspired by the "Dungeon Map Overview 3" patch
(by Hojita Discordia) as found in UnNetHack.
You can now #annotate a level to name/describe it.
#overview / Ctrl+O will show a menu of all the levels you remember
including your annotations and significant features (shops,
altars, ...)
You can select a level from the overview menu to view your memory
of it.

- Dump log
Inspired by Jukka Lahtinen's dumplog patch.
When you die, a dump log containing the following information
will be created:
* Final (ascii) screenshot
* Player stats
* Full inventory, including listings of the contents of
containers
* Player attributes
* Known spells
* Skills
* Conducts
* Vanquished opponents
* Final messages
* dungeon overview
* heroic deeds

- sorted loot
based on code by Jukka Lahtinen and Patric Müller in UnNetHack.
Item types are sorted based on:
1) item name
2) enchantment
3) BUC
4) erodeproofing
5) erosion
6) greasedness

- Miscellaneous changes, in no particular order
* You can use adjust to split stacks (Sam Dennis)
* Top ten saves 10000 entries by default
* Unexplored locations, stone and dark rooms are all logically
different in the drawing code (but only dark rooms are shown
differently by default)
* object class symbols are shown in menu headers
* you may choose to always show uncursed status in the options
(Pasi Kallinen)
* you will be prompted to quiver if firing with an empty quiver
(Jukka Lahtinen)
* thrown or fired items will always be picked up automatically
if you set pickup_thrown in the options (Roderick Schertler)
* reading spellbooks early is allowed (Alex Smith)
* naming of monsters, items & item types via menu (from NAO)
* Improved the died while helpless descriptions (Pasi Kallinen)
* monster targeting with m when a position is requested
(inspired by Pasi Kallinen's patch)
* Very long message history (20k messages)
* Removing armor and accessories will always trigger a prompt,
even if there is only one possible choice.
* Open doors when the player walks into them (AceHack)
* extinct species are shown together with genocided species
(based on a patch by Jukka Lahtinen)

- Fix about 10% of all known NetHack bugs
C343- 2 Wielded silver arrows don't cause silver damage on some
silver-haters. (Alex Smith)
C343- 7 When a steed pushes a boulder into a pool, the message
misuses "you". (Alex Smith)
C343- 8 Plural of Nazgul is Nazgul - not Nazguls. (Patric Müller)
C343- 12 You can't use '>' to enter a pit. (Patric Müller)
C343- 15 You can get a message that an invisible monster looks
much better. (Alex Smith)
C343- 18 Scaring a mimicking mimic gives an incorrect "turns to
flee" message. (Alex Smith)
C343- 30 Cursed scroll of destroy armor on cursed armor doesn’t
always interact correctly. (Alex Smith)
C343- 50 A sleeping steed may answer a #chat. (Alex Smith)
C343- 54,-55 "Ulch" message fixes. (Alex Smith)
C343- 74 Entering a long running, un-interruptible command after
stoning starts will kill you. (Patric Müller)
C343- 88 Polymorphing a statue into a boulder can leave an
incorrect display. (Alex Smith)
C343- 94,SC343-8 Probing a re-anmiated statue may cause a panic.
(Patric Müller)
C343-100 Game may crash if thrown potion hits bars before a
monster. (Patric Müller)
C343-109 There is a grammar error in the Tourist leader's
greeting. (Alex Smith)
C343-111 Grammar of some graveyard sounds messages is wrong in
some cases. (Alex Smith)
C343-116 Grammar error in messages related to choking on gold.
(Patric Müller)
C343-123 Plural of "mother-in-law" is incorrect. (Alex Smith)
C343-136 A samurai quest guardian message uses "ninja" where
"ronin" is intended. (Patric Müller)
C343-160 The name "leather spellbook" is misleading. (Alex Smith)
C343-171 Silver weapon damage message is sometimes missing when
hero is polymorphed. (Patric Müller)
C343-179 If a potion of acid is destroyed by water, the game may
crash. (Patric Müller)
C343-189 Temple donations and protection lost to gremlin attack
interact incorrectly. (Patric Müller)
C343-211 Engraving under water gives a poorly worded message.
(Patric Müller)
C343-218 Applying a wielded cream pie can crash the game.
(Patric Müller)
C343-222 It's possible to end up wielding a cockatrice corpse
when no longer polymorphed. (Arthur O'Dwyer)
C343-231 Time is distorted while sinking into lava.
C343-235 Casting spell of protection gives incorrect message if
hero is swallowed or in rock. (Patric Müller)
C343-248 You can’t put candles in a candelabrum while underwater
(Sgeo)
C343-252 There is a typo in the quote from "The Count of Monte
Cristo." (Patric Müller)
C343-258 Grammar error in samurai quest: "wakarimasu?" instead of
"wakarimasu ka?" (Patric Müller)
C343-259 "Dr. Dolittle" is spelled incorrectly. (Patric Müller)
C343-270 Dying in a shop while wielding two weapons may cause a
warning message. (Patric Müller)
C343-275 If a lit, wielded, candle or potion of oil burns out,
the game may crash. (Patric Müller)
C343-276 If a figurine auto-transforms while wielded or worn, the
game may crash. (Patric Müller)
C343-298 Kicking at "empty space" uses no time.
C343-318 Opening or closing the castle drawbridge using music
takes no time. (Alex Smith)
C343-324 Bisecting a long worm with 1hp crashes the game.
(Patric Müller)
C343-356 Wearing an amulet of restful sleep confuses internal
sleep state bookkeeping. (L's "Gremlin's Curse")
C343-386 Pearl rings can rust. (Alex Smith)
C343-398 The game may crash if a wielded potion of polymorph is
drunk. (Alex Smith)
C343-399 Messages referring to a named vault guard have
grammatical errors. (Alex Smith)
SC343-12 Calling high priests on Astral reveals their identity.
SC343-20 Hangup save while picking up gold in a shop may
duplicate the gold. (Patric Müller)
My sources for these fixes were UnNetHack, AceHack, the Patchdb.

What didn't change:
The game mechanics of NitroHack remain identical to those of NetHack.
All the behavior of items and monsters, scoring, difficulty etc. is
unchanged.
I do believe that there are several things that could be done here, but
I wanted to do all these fundamental things first.

BanMido

unread,
Jan 16, 2012, 1:54:44 AM1/16/12
to
On 1/16/2012 10:47 AM, Daniel Thaler wrote:
> Hi everyone!
>
> This is the initial public release of NitroHack, a fork of NetHack.
>
> The website for NitroHack is http://nitrohack.org, where you can also
> find screenshots and downloads.
>
> Change log:
> [...]

Wow, those are substantial changes! How much time did all this effort take?

> I do believe that there are several things that could be done here, but
> I wanted to do all these fundamental things first.

Indeed.
I wonder what other NetHack variant developers think about this project.

Krice

unread,
Jan 16, 2012, 4:29:04 AM1/16/12
to
On 16 tammi, 08:54, BanMido <smartrefere...@gmail.com> wrote:
> Wow, those are substantial changes!

Epic changes when you think how difficult it is to work with
Nethack's source code. This is different from typical
forks and could break the barrier that I think was there
when Dev Team abandoned Nethack.

Patric Mueller

unread,
Jan 16, 2012, 6:36:24 AM1/16/12
to
Daniel Thaler <dan...@invalid.address.com> wrote:
> Hi everyone!
>
> This is the initial public release of NitroHack, a fork of NetHack.
>
> The website for NitroHack is http://nitrohack.org, where you can also
> find screenshots and downloads.

Cool work, you have added some great features.

> Change log:
>
> Back end features:
> - NitroHack network protocol
> NitroHack supports network play without telnet or ssh over its own
> protocol. The protocol is based on JSON and should make it very
> easy to implement a browser-based NitroHack client (TODO!).

When asking for the password for the public server you should add a
note that the password will be sent without any encryption over the
net.

There is no possibility to watch running games on the public server
(yet)?

> - Birth options
> Want to play without Elbereth? It is now possible to do so without
> recompiling. ELBERETH, REINCARNATION, SEDUCE and bones files have
> become a new kind of option: birth options, which can only be set
> before the character is created.

You could add conduct tracking to these birth options (great name for
this BTW).

> - Layered drawing
> The game core provides a set of display items for each location
> to the UI, rather than a single display char. For example a
> monster on an item on a trap can be represented logically.
> The curses UI displays the alternatives by blinking between them
> (unless you disable blinking in the options).

The blinking between different categories of display characters is an
interesting solution to the limitations of the ASCII display.

> - Dump log
> Inspired by Jukka Lahtinen's dumplog patch.
> When you die, a dump log containing the following information
> will be created:

You're missing an xlogfile like log. Without this you're public server
won't be able to participate in the next Junethack!

While trying NitroHack on a Windows 7 64bit, both local and remote
games had problems with numpad. I got "bad command" when trying to use
the even numbers. With NumLock off, the "Count: 444" stuff worked
flawlessly.

When playing local on this system, the game froze after showing the
tombstone and I couldn't find the dumplog of the crashed game so I
suppose it crashed while trying to write the dumplog.

Bye
Patric

--
NetHack-De: NetHack auf Deutsch - http://nethack-de.sf.net/

UnNetHack: http://apps.sf.net/trac/unnethack/

Patric Mueller

unread,
Jan 16, 2012, 7:44:33 AM1/16/12
to
BanMido <smartre...@gmail.com> wrote:
> On 1/16/2012 10:47 AM, Daniel Thaler wrote:
>> Hi everyone!
>>
>> This is the initial public release of NitroHack, a fork of NetHack.
>>
>> The website for NitroHack is http://nitrohack.org, where you can also
>> find screenshots and downloads.
>>
>> Change log:
>> [...]
>
> Wow, those are substantial changes! How much time did all this effort take?

The first commit was on March 31st 2011. If you go to
https://github.com/DanielT you can see an activity graph for
NitroHack.

>> I do believe that there are several things that could be done here, but
>> I wanted to do all these fundamental things first.
>
> Indeed.
> I wonder what other NetHack variant developers think about this project.

I've been following it from the start as he forked his from my Vanilla
NetHack git repository so I got a notice at the beginning.

I dislike adding a new curses UI (instead I would rather already have
seen a working web client, would be way cooler then yet another curses
UI) and the cmake building seems a bit fragile (I didn't succeed in
installing it in a custom directory for example, but I don't have lots
of cmake experience) but this is not something that would be IMO an
obstacle to an eventual merger of code from NitroHack into UnNetHack.

Currently, most of the work done is in regards to internal structure
and interfaces outwards, not gameplay changes. So in general it
shouldn't be too hard integrate that.

The feature I like most is the possibility of a web client. I wanted
to tackle that myself (that's why there is no official
UnNetHack graphical UI client yet) but if somebody else does the work
(and probably even better than I could) I won't complain about that.


There are some things missing that shouldn't be missing when playing
on public server. For example as far as I can see, you can't watch
in-progress games or send mails to the player (but it doesn't use
dgamelaunch, so this is understandable). BTW, Tome4 has an in-game IRC
client, now that's interactive.

Patric Mueller

unread,
Jan 16, 2012, 8:14:29 AM1/16/12
to
You think the reason that there is no widely accepted successor to
Vanilla NetHack is that the code is too complex and too spaghetti and
therefore the other forks are ...?

What exactly is this barrier you mention and how is it an obstacle to
a non-official vanilla successor?

Daniel Thaler

unread,
Jan 16, 2012, 8:53:41 AM1/16/12
to
On 16.01.2012 12:36, Patric Mueller wrote:
> Daniel Thaler<dan...@invalid.address.com> wrote:
>> Hi everyone!
>>
>> This is the initial public release of NitroHack, a fork of NetHack.
>>
>> The website for NitroHack is http://nitrohack.org, where you can also
>> find screenshots and downloads.
>
> Cool work, you have added some great features.

Thanks!

>> Change log:
>>
>> Back end features:
>> - NitroHack network protocol
>> NitroHack supports network play without telnet or ssh over its own
>> protocol. The protocol is based on JSON and should make it very
>> easy to implement a browser-based NitroHack client (TODO!).
>
> When asking for the password for the public server you should add a
> note that the password will be sent without any encryption over the
> net.

It is now changed.

> There is no possibility to watch running games on the public server
> (yet)?

That's right, it's not there yet.

>> - Birth options
>> Want to play without Elbereth? It is now possible to do so without
>> recompiling. ELBERETH, REINCARNATION, SEDUCE and bones files have
>> become a new kind of option: birth options, which can only be set
>> before the character is created.
>
> You could add conduct tracking to these birth options (great name for
> this BTW).

I think I got the name from angband.
I also intend to do more with conducts - currently the server is
entirely unaware of them for example.

>> - Layered drawing
>> The game core provides a set of display items for each location
>> to the UI, rather than a single display char. For example a
>> monster on an item on a trap can be represented logically.
>> The curses UI displays the alternatives by blinking between them
>> (unless you disable blinking in the options).
>
> The blinking between different categories of display characters is an
> interesting solution to the limitations of the ASCII display.
>
>> - Dump log
>> Inspired by Jukka Lahtinen's dumplog patch.
>> When you die, a dump log containing the following information
>> will be created:
>
> You're missing an xlogfile like log. Without this you're public server
> won't be able to participate in the next Junethack!

I'll have to look into it.

> While trying NitroHack on a Windows 7 64bit, both local and remote
> games had problems with numpad. I got "bad command" when trying to use
> the even numbers. With NumLock off, the "Count: 444" stuff worked
> flawlessly.

I guess it shows that I tested the windows build on a notebook without a
numpad :-)

> When playing local on this system, the game froze after showing the
> tombstone and I couldn't find the dumplog of the crashed game so I
> suppose it crashed while trying to write the dumplog.

- Daniel

BanMido

unread,
Jan 16, 2012, 9:01:34 AM1/16/12
to
On 1/16/2012 6:14 PM, Patric Mueller wrote:
> BanMido<smartre...@gmail.com> wrote:
>> On 1/16/2012 10:47 AM, Daniel Thaler wrote:
>>> Hi everyone!
>>>
>>> This is the initial public release of NitroHack, a fork of NetHack.
>>>
>>> The website for NitroHack is http://nitrohack.org, where you can also
>>> find screenshots and downloads.
>>>
>>> Change log:
>>> [...]
>>
>> Wow, those are substantial changes! How much time did all this effort take?
>
> The first commit was on March 31st 2011. If you go to
> https://github.com/DanielT you can see an activity graph for
> NitroHack.

Thanks for the pointer Patric.

That is almost a year worth of work, thanks for the effort mate! I
really hope something good and substantial comes out of it.

Daniel Thaler

unread,
Jan 16, 2012, 9:06:43 AM1/16/12
to
On 16.01.2012 13:44, Patric Mueller wrote:
> I dislike adding a new curses UI (instead I would rather already have
> seen a working web client, would be way cooler then yet another curses
> UI)

The curses UI was required in order to validate that the internal API
made sense and debug the interaction. Going straight to a web client
would have been extremely difficult.

> There are some things missing that shouldn't be missing when playing
> on public server. For example as far as I can see, you can't watch
> in-progress games or send mails to the player (but it doesn't use
> dgamelaunch, so this is understandable).

The server code is extremely raw - none of it even existed a month ago.
I have all sorts of features on my TODO there.

- Daniel

Krice

unread,
Jan 16, 2012, 3:53:08 PM1/16/12
to
On 16 tammi, 15:14, Patric Mueller <bh...@bigfoot.com> wrote:
> You think the reason that there is no widely accepted successor to
> Vanilla NetHack is that the code is too complex and too spaghetti and
> therefore the other forks are ...?

Other forks have been minor, right? This fork is more like an
inspiration for birth control.

> What exactly is this barrier you mention and how is it an obstacle to
> a non-official vanilla successor?

It's there, trust me. I'm sure Linley ran into it in Crawl,
Dev Team in Nethack and I had my own experiences with Kaduria,
which I then rewrote to C++/OOP to climb over that wall.
It wasn't easy, I can tell you that much.

Patric Mueller

unread,
Jan 16, 2012, 4:51:33 PM1/16/12
to
Krice <pau...@mbnet.fi> wrote:
> On 16 tammi, 15:14, Patric Mueller <bh...@bigfoot.com> wrote:
>> You think the reason that there is no widely accepted successor to
>> Vanilla NetHack is that the code is too complex and too spaghetti and
>> therefore the other forks are ...?
>
> Other forks have been minor, right?

Certainly not because they are held back by "too complex code". Just
look at Slash'Em and Vulture's. The first has features en masse and
the second has a UI with lots of bling-bling.

They are minor because the NetHack community didn't accept them as a
successor, or because they didn't find a big audience of non NetHack
roguelike player, or because they didn't even want to appeal to a
large audience.

> This fork is more like an inspiration for birth control.

If simpler code and numbers of variants would be automatically ensure
popularity, Angband would be way more popular than NetHack.

>> What exactly is this barrier you mention and how is it an obstacle to
>> a non-official vanilla successor?
>
> It's there, trust me. I'm sure Linley ran into it in Crawl,
> Dev Team in Nethack and I had my own experiences with Kaduria,
> which I then rewrote to C++/OOP to climb over that wall.
> It wasn't easy, I can tell you that much.

You're not explaining anything.

GaryOlson

unread,
Jan 16, 2012, 9:25:17 PM1/16/12
to
On Jan 15, 11:17 pm, Daniel Thaler <dan...@invalid.address.com> wrote:
> Hi everyone!
>
> This is the initial public release of NitroHack, a fork of NetHack.
>
> The website for NitroHack ishttp://nitrohack.org, where you can also
> find screenshots and downloads.
>
> Change log:
>
You read a Scroll of Immense Change and Code Simplification. You feel
impressed, awed, and immeasurably humble. Would you like to download a
copy of NitroHack and Play (y/n)?

How can one say No to this question?

Thanks for all the hard work.

Gary Olson

Jonadab the Unsightly One

unread,
Jan 17, 2012, 8:15:44 AM1/17/12
to
Wow. Is that changelog real? It's not April first. Maybe it's real.

I have GOT to give this a try...

(To compile it, I needed to install a minor dependency, and while I
had Synaptic running I went ahead and had it install all the available
updates, which included a kernel update, so now I need to reboot; long
story short, I haven't got to try it out yet. But I will, oh, yes.
Just going from the changelog, it looks to be exactly what the nethack
community needs and has been lacking: a fork that's conservative
about gameplay changes and thus can be readily accepted as a
straightforward upgrade from vanilla. Not that the existing forks are
all bad, but the ones I'm familiar with are all clearly _variants_.
This one looks much more like it has the potential to be the fork that
eventually obviates and takes the place of the codebase it was forked
from.)

Jonadab the Unsightly One

unread,
Jan 17, 2012, 8:27:57 AM1/17/12
to
On Jan 16, 7:44 am, Patric Mueller <bh...@bigfoot.com> wrote:

> I dislike adding a new curses UI

If a NetHack fork is going to amount to anything, it inevitably
has to have a TTY version. Otherwise it's just not NetHack-ey
enough to really catch on.

> (instead I would rather already have seen a working web client,

Admittedly, that would be a rather nifty enhancement.
Depending on how it's implemented, ASCII versus tiles
(or different tile aspect ratios, or entirely custom tiles for
that matter) could be accomplished simply by pointing to
a different external stylesheet.

(Plus, then we could unofficially call it WebHack.)

> There are some things missing that shouldn't be missing
> when playing on public server. For example as far as I can
> see, you can't watch in-progress games or send mails to
> the player (but it doesn't use dgamelaunch, so this is
> understandable).

With the changelog being as substantial as it is, I can
definitely see why they wanted to go ahead and do
a release before getting around to such things.

But yeah, it'll eventually need better public-server support.

> BTW, Tome4 has an in-game IRC client, now that's interactive.

Many multiplayer games have in-game chat. NetHack,
by virtue of its turn-based nature and the fact that you
have the dungeon entirely to yourself (modulo NPCs),
can live without this, because the player can use #
and then just type whatever, pause, and hit escape;
observers can send scrolls of mail (once implemented).
The main reason I can think of to add in-game chat
would be so multiple observers can kibitz among
themselves.

Jonadab the Unsightly One

unread,
Jan 17, 2012, 8:35:13 AM1/17/12
to
On Jan 16, 8:14 am, Patric Mueller <bh...@bigfoot.com> wrote:
> You think the reason that there is no widely accepted successor to
> Vanilla NetHack is that the code is too complex and too spaghetti and
> therefore the other forks are ...?

I don't know about the OP, but my opinion would be that the
other forks I'm familiar with all fall into one of two categories:
either it's clearly a variant, not a vanilla NetHack fork (the
biggest of these being SLASH'EM, but there are several
other really notable ones) or else they exist mainly to
provide a wonky non-standard interface (e.g., enormous
isometric tiles). This being NetHack, the majority of
players are never going to agree on any one such.

> What exactly is this barrier you mention and how is it an
> obstacle to a non-official vanilla successor?

My take would be that a _variant_ is never going to be
a clear successor for _vanilla_. Thus, UnNetHack and
SporkHack and NetHack Brass and so forth may be
interesting for a player who has got bored with vanilla
and wants to play a variant, but they're _not_ going to
replace vanilla NetHack it its role as the default
starting-point roguelike for people who've not seriously
played a roguelike before. As for SLASH'EM, it's
just plain too hard to replace vanilla for beginners.

Jonadab the Unsightly One

unread,
Jan 17, 2012, 10:20:38 AM1/17/12
to
On Jan 16, 7:44 am, Patric Mueller <bh...@bigfoot.com> wrote:
> the cmake building seems a bit fragile

I did notice that some of the error messages are less informative than
would be ideal. For example, it tends to complain that variables are
not set when what it really means is you need to install
dependencies. An experienced *nix admin should be able to track down
such things, but better messages about exactly what is needed would
not go amiss.

Also, the dependency on Jansson should be advertised in the build
instructions, along with instructions on where to get it (source, at
least), as it's not a particularly common library. Debian, for
example, doesn't appear to include it at all in stable. Worse, a
quick web search mostly turns up the DJGPP port. Yeah, thanks Google,
that'll sure help. (DJGPP, for those who don't know, is a DOS port of
gcc and a number of other common *nix utilities, from the days of
sixteen-bit hardware; it was nice to have in its day, but the idea
that people might still be using it is kind of painful. I thought it
had been wholly obviated by cygwin and/or mingw32 some time ago,
except for those very few people still using DOS as such.) The only
Debian-related references to Jansson that I can find are for Sid, and
I haven't yet managed to find the upstream site either.

Patric Mueller

unread,
Jan 17, 2012, 10:34:24 AM1/17/12
to
Jonadab the Unsightly One <jonadab.the...@gmail.com> wrote:
>
> Also, the dependency on Jansson should be advertised in the build
> instructions, along with instructions on where to get it (source, at
> least), as it's not a particularly common library. Debian, for
> example, doesn't appear to include it at all in stable. Worse, a

It's not called stale, erm, stable for nothing. That's the curse of more
advanced features, you get more dependencies. ;-)

> quick web search mostly turns up the DJGPP port. [...]

I think you misread the domain.

http://www.digip.org/jansson/ is the right place to go.

Karl Garrison

unread,
Jan 17, 2012, 10:43:23 AM1/17/12
to
On Jan 16, 12:17 am, Daniel Thaler <dan...@invalid.address.com> wrote:
> Hi everyone!
>
> This is the initial public release of NitroHack, a fork of NetHack.
>
> The website for NitroHack ishttp://nitrohack.org, where you can also
> find screenshots and downloads.
>
> Change log:

<snip>

I would call that nothing short on an epic feat. One comment about
the interface, though: the "jumping" of the permanent inventory window
to make room for messages is distracting. I would probably prefer to
have these transient messages overlap something else than to push down
the inventory list.

Oh, and magenta borders for transient pop-up windows? Who would
choose such a color? ;-)


--
Karl Garrison
kgar...@pobox.com

Daniel Thaler

unread,
Jan 17, 2012, 11:24:50 AM1/17/12
to
On 17.01.2012 16:43, Karl Garrison wrote:
> Oh, and magenta borders for transient pop-up windows? Who would
> choose such a color? ;-)

A nod to the work of a guy called Karl Garrison :-)

Patric Mueller

unread,
Jan 17, 2012, 4:07:54 PM1/17/12
to
Jonadab the Unsightly One <jonadab.the...@gmail.com> wrote:
> On Jan 16, 7:44 am, Patric Mueller <bh...@bigfoot.com> wrote:
>
>> I dislike adding a new curses UI
>
> If a NetHack fork is going to amount to anything, it inevitably
> has to have a TTY version. Otherwise it's just not NetHack-ey
> enough to really catch on.

I think you mix up ASCII[*] map display and a TTY version. In Vanilla
several ports are display the map with ASCII even though it's really a
GUI and the rest of the interface is also using real GUI elements.

I don't think a tty version is really needed anymore these days as
long as you have an ASCII map for feeling like an hardcore player and
(actually IMO more important) that you have the possibility to play
online via a public server (including community features like watching
running games and talking to players).

[*] If we're nitpicking, IBMgraphics and DECgraphics already aren't
really ASCII anymore, but I think we know what we mean by "ASCII".

Jonadab the Unsightly One

unread,
Jan 17, 2012, 4:40:16 PM1/17/12
to
On Jan 17, 10:34 am, Patric Mueller <bh...@bigfoot.com> wrote:
> I think you misread the domain.
> http://www.digip.org/jansson/ is the right place to go.

Oh. Ah. So I did.

Man, how did I misread _that_ as _that_? Maybe I should get my eyes
checked.

Anyway, I'll have to look into that.

Jonadab the Unsightly One

unread,
Jan 17, 2012, 5:00:13 PM1/17/12
to
On Jan 17, 4:07 pm, Patric Mueller <bh...@bigfoot.com> wrote:

> I think you mix up ASCII[*] map display and a TTY version. In Vanilla
> several ports are display the map with ASCII even though it's really a
> GUI and the rest of the interface is also using real GUI elements.
>
> I don't think a tty version is really needed anymore these days
> long as you have an ASCII map for feeling like an hardcore player

I can't say I really agree with this.

> (actually IMO more important) that you have the possibility to play
> online via a public server (including community features like watching
> running games and talking to players).

That's important too. Given that the Nitro source is available,
I'm relatively sure somebody will see that it happens. (The dev
himself made positive noises about it upthread, so it may even
be built right into a future release.)

> [*] If we're nitpicking, IBMgraphics and DECgraphics already aren't
> really ASCII anymore,

IBM used to call their character set "Extended ASCII".

But...

> but I think we know what we mean by "ASCII".

Yeah.

I still think the terminal UI _is_ worth having, though.

Not that it needs to be the only UI, of course. Quite the
contrary. In fact, with Nitro's UI separated out from the
rest of the code, it should be easier than ever before for
various people to implement various different UIs to suit
different people's tastes -- and they could all be used to
play the same game, even on the same public server(s).

Even better, with the network protocol being the way it is,
it should be possible for a person using one UI to watch a
public-server game played by a person using a different
UI (and different UI settings) entirely. No more hunting
around for transliterative fonts so you can watch games
where people are using the other kind of graphics without
seeing a bunch of cyrillic characters or whatever.

And I agree that a web-based UI would be nice to have,
particularly if it's well implemented and doesn't require
any plugins.

Patric Mueller

unread,
Jan 17, 2012, 5:26:10 PM1/17/12
to
Jonadab the Unsightly One <jonadab.the...@gmail.com> wrote:
>
> Just going from the changelog, it looks to be exactly what the nethack
> community needs and has been lacking: a fork that's conservative
> about gameplay changes and thus can be readily accepted as a
> straightforward upgrade from vanilla. Not that the existing forks are
> all bad, but the ones I'm familiar with are all clearly _variants_.

You make it sound like it's bad to be a variant. If you compare the
different vanilla NetHack versions with each other, they are more
different than some of the variants that have existed.

Do you know AceHack and if you do what is with AceHack that
disqualifies it from being a straightforward upgrade?

> This one looks much more like it has the potential to be the fork that
> eventually obviates and takes the place of the codebase it was forked
> from.)

What do you need an upgrade for when you don't change anything?

Jonadab the Unsightly One

unread,
Jan 17, 2012, 5:36:07 PM1/17/12
to
On Jan 17, 10:34 am, Patric Mueller <bh...@bigfoot.com> wrote:
> > Debian, for example, doesn't appear to
> > include it at all in stable. Worse, a
>
> It's not called stale, erm, stable for nothing.

I don't want to upgrade my OS every six months, but
you'll notice I'm not advocating Windows XP, either.

There were admittedly a couple of years where I found
Debian stable to be completely unusable (say, in early
2005), because its versions of absolutely everything
were so thoroughly antiquated that you couldn't install
new versions of anything, even things that supported
three-version-old libraries. Coming out during this
time is probably the key factor that made Ubuntu so
popular so quickly. It was also about then that I
wrote an Uncyclopedia article about Debian, to the
effect that it was a repository of "stable" software,
with "stable" meaning that the software was so old
it was no longer under active development or in
widespread use. I think I even claimed that Debian
contained Netscape 3, which was an exaggeration
even then. (I believe Woody actually did contain
Netscape 4, though.)

Currently, though, Squeeze is less than a year old,
and it had relatively recent versions of most major[1]
libraries at that time, and you can install the latest
versions of almost any application you want (including
fast-moving ones like Firefox) if you are so inclined.

> That's the curse of more
> advanced features, you get more dependencies. ;-)

I don't mind having to compile the library from source.
I'm a computer geek. I can do stuff like that. And when
you're downloading the first public release of something
right after it's announced, you expect some of that.
I didn't intend to complain about the fact that NitroHack
depends on Jansson. That wasn't what I meant.

---
[1] I define a "major" library as one that is used by a
lot of software in widespread deployment -- especially
software that is installed by default in many distros.
Cairo, for example, is a major library. GTK is even
more major. glibc, of course, is in a class by itself.

Jonadab the Unsightly One

unread,
Jan 17, 2012, 6:46:09 PM1/17/12
to
On Jan 17, 4:40 pm, Jonadab the Unsightly One
> Anyway, I'll have to look into that.

Sorted. Jansson compiles and installs very quickly and easily.
I then found one other dependency that needed to be installed
(the dev package for libncursesw), and had to delete the build
directory and start over after getting it installed (because I
don't know the cmake equivalent of make clean), but then
build and install proceeded without further incident, bringing
me to the following point:

nathan@warthog:/opt/nitrohack/nitrohack-data$ ls -l
total 3440
-rw-r--r-- 1 root root 56159 Jan 17 18:27 libnitrohack_client.so
-rw-r--r-- 1 root root 2574540 Jan 17 18:27 libnitrohack.so
-rw-r--r-- 1 root root 4979 Jan 15 11:03 license
-rw-r--r-- 1 root root 587654 Jan 17 18:27 nhdat
-rwxr-xr-x 1 root root 171684 Jan 17 18:27 nitrohack
-rwxr-xr-x 1 root root 97162 Jan 17 18:27 nitrohack_server
nathan@warthog:/opt/nitrohack/nitrohack-data$ ./nitrohack
./nitrohack: error while loading shared libraries: libnitrohack.so:
cannot open shared object file: No such file or directory
nathan@warthog:/opt/nitrohack/nitrohack-data$

*That* problem was resolved by creating symlinks in /usr/lib
pointing to the .so files (both of them) in the directory where
they were installed (/opt/nitrohack/nitrohack-data in my case,
because I didn't think /root/nitrohack/nitrohack-data was a
real good idea, so I changed it at the ccmake stage).

With so symlinks in place, nitrohack runs and displays
the main menu.

Before I get serious about playing it I'm going to finish
up my current game on NAO (seeing as how I'm on the
plane of air, currently), but after that...

Jonadab the Unsightly One

unread,
Jan 17, 2012, 7:07:56 PM1/17/12
to
On Jan 17, 6:46 pm, Jonadab the Unsightly One
Did I write "air"? I meant earth.

Jonadab the Unsightly One

unread,
Jan 17, 2012, 6:52:43 PM1/17/12
to
On Jan 17, 5:26 pm, Patric Mueller <bh...@bigfoot.com> wrote:

> You make it sound like it's bad to be a variant.

No, I didn't mean it like that. It's good to have
variants. Variants are good. I've played around
with a couple of them already, and I'm very new
to the game. I intend to play more variants as
time goes on. I like having variants around.

I just mean no single variant is likely to take the
place of vanilla.

> Do you know AceHack

Haven't gotten around to that one yet.

> What do you need an upgrade for when you
> don't change anything?

Bug fixes and UI improvements?

I don't mean that _nothing_ should be changed
in terms of gameplay, though. Some change is
good. I just mean that, for the mainline codebase,
changes should be conservative and carefully
considered. Some of the things that eventually
made it into vanilla NetHack started out in variants.
But not every change that variants experiment with
makes it in to vanilla.

There has to be a vanilla codebase from which
the various variants branch out, that's all I'm saying.

Of course the "birth options" in NitroHack could
potentially be (ab)used to allow multiple variants
to coexist within a single version of the game...

Daniel Thaler

unread,
Jan 17, 2012, 8:05:42 PM1/17/12
to
On 18.01.2012 00:46, Jonadab the Unsightly One wrote:
> nathan@warthog:/opt/nitrohack/nitrohack-data$ ./nitrohack
> ../nitrohack: error while loading shared libraries: libnitrohack.so:
> cannot open shared object file: No such file or directory
> nathan@warthog:/opt/nitrohack/nitrohack-data$

Congratulations, you found a bug.

There is a little shell script that gets created whose only purpose is
to set up LD_LIBRARY_PATH before running nitrohack; unfortunately it got
generated wrong.

I have now fixed that, so your suffering will prevent others from
experiencing the same problem.

- Daniel

Jason Cannon

unread,
Jan 17, 2012, 9:31:11 PM1/17/12
to
Just gave it a try. Doesn't look like I'll be giving up my tty vanilla
just yet, but from looking at the changelog it has a lot of features I
like.

A few questions:
--Since it will eventually have built in server support, were you
planning on having an automatic updater?
--As a few have mentioned above, will it be possible to play something
like sporkhack using birth options, or to somehow integrate variants
into the Nitrohack system?
--Since I can't edit the options file by hand, how would I go about
reassigning a symbol, such as putting boulders to 0 and ghosts/shades
to 9?
Also, as mentioned above, num_pad needs some work on windows before it
will be comfortable to use.

Patric Mueller

unread,
Jan 18, 2012, 4:09:42 AM1/18/12
to
Jason Cannon <jason...@gmail.com> wrote:
>
> --As a few have mentioned above, will it be possible to play something
> like sporkhack using birth options, or to somehow integrate variants
> into the Nitrohack system?

Because variants usually involve more changes to the core code than
you can comfortably customize by just toggling options, I don't think
this is reasonable. In the worst case you would end up with
essentially several binaries compiled into one program.

But because of the even more strict separation of game engine and
client code, it should be possible to have one client being able to
talk to different nitrohack-derived servers or at least port any
client to a nitrohack-variant with not much more effort than a
recompile as long as there are no incompatible or conflicting
client-server-protocol changes in the variants.

Daniel Thaler

unread,
Jan 18, 2012, 7:14:53 AM1/18/12
to
On 18.01.2012 03:31, Jason Cannon wrote:
> Just gave it a try. Doesn't look like I'll be giving up my tty vanilla
> just yet, but from looking at the changelog it has a lot of features I
> like.
>
> A few questions:
> --Since it will eventually have built in server support, were you
> planning on having an automatic updater?

The point of the server protocol is to eventually allow tiles clients to
play on public servers. It will also make implementing a web client easier.

> --As a few have mentioned above, will it be possible to play something
> like sporkhack using birth options, or to somehow integrate variants
> into the Nitrohack system?

I think many people don't appreciate how large the changes in UnNetHack
etc actually are. Birth options are meant to control minor gameplay
variations with little impact on the overall code.

> --Since I can't edit the options file by hand, how would I go about
> reassigning a symbol, such as putting boulders to 0 and ghosts/shades
> to 9?

I suppose I wasn't clear about that. The options you get with 'O' don't
need to be changed by editing the file any more. For the display
characters you will need to edit unicode.conf, which maps things to
unicode letters. On Linux it is in ~/.config/NitroHack/; on Windows you
should look in C:\Users\<username>\AppData\Roaming\NitroHack\
The lines in that file have the format <name> <color> <code point>:
"boulder" 7 25c6
"ghost" 7 0020
could become
"boulder" 7 0030
"ghost" 7 0039

- Daniel

Patric Mueller

unread,
Jan 18, 2012, 9:51:24 AM1/18/12
to
Daniel Thaler <dan...@dthaler.de> wrote:
> On 18.01.2012 03:31, Jason Cannon wrote:
>
>> --As a few have mentioned above, will it be possible to play something
>> like sporkhack using birth options, or to somehow integrate variants
>> into the Nitrohack system?
>
> I think many people don't appreciate how large the changes in
> UnNetHack etc actually are. Birth options are meant to control minor
> gameplay variations with little impact on the overall code.

I protest about large changes in UnNetHack and want that to be changed
to "natural evolution". ;-)

>> --Since I can't edit the options file by hand, how would I go about
>> reassigning a symbol, such as putting boulders to 0 and ghosts/shades
>> to 9?
>
> I suppose I wasn't clear about that. The options you get with 'O'
> don't need to be changed by editing the file any more. For the display
> characters you will need to edit unicode.conf, which maps things to
> unicode letters. On Linux it is in ~/.config/NitroHack/; on Windows
> you should look in C:\Users\<username>\AppData\Roaming\NitroHack\
> The lines in that file have the format <name> <color> <code point>:
> "boulder" 7 25c6
> "ghost" 7 0020
> could become
> "boulder" 7 0030
> "ghost" 7 0039

Oh, only Unicode codepoints? Not Unicode strings of display width 1?

For example there are very few codepoints for "small letter q" with
additional accents but with combining characters you can almost have
as many different q's as you like.
Message has been deleted

Pasi Kallinen

unread,
Jan 18, 2012, 11:00:42 AM1/18/12
to
In rec.games.roguelike.nethack Daniel Thaler <dan...@dthaler.de> wrote:
> On 18.01.2012 03:31, Jason Cannon wrote:
>> Just gave it a try. Doesn't look like I'll be giving up my tty vanilla
>> just yet, but from looking at the changelog it has a lot of features I
>> like.
>>
>> A few questions:
>> --Since it will eventually have built in server support, were you
>> planning on having an automatic updater?
>
> The point of the server protocol is to eventually allow tiles clients to
> play on public servers. It will also make implementing a web client easier.
>

A small note here: It's possible to use tiles when playing on nethack.alt.org,
if you use the ebonhack frontend. (You also need to turn on vt_tiledata on NAO,
because otherwise ebonhack cannot distinguish between some glyphs)


--
Pasi Kallinen
pa...@alt.org
http://bilious.alt.org/ -- NetHack Patch Database

Daniel Thaler

unread,
Jan 18, 2012, 12:42:36 PM1/18/12
to
On 18.01.2012 15:51, Patric Mueller wrote:
> Oh, only Unicode codepoints? Not Unicode strings of display width 1?
>
> For example there are very few codepoints for "small letter q" with
> additional accents but with combining characters you can almost have
> as many different q's as you like.

Internally, NitroHack uses unicode strings.
The config format doesn't support that though, because I found that more
than one character in the string doesn't work in most builds of ncursesw
(it seems to depend on the version or the configure flags) and isn't
supported at all in pdcurses.
If your ncursesw has CCHARW_MAX > 1, I'll extend the config format for
you ;-)

- Daniel

Jonadab the Unsightly One

unread,
Jan 18, 2012, 1:12:08 PM1/18/12
to
On Jan 18, 11:00 am, pa...@alt.org (Pasi Kallinen) wrote:

> A small note here: It's possible to use tiles when playing
> on nethack.alt.org, if you use the ebonhack frontend.

This however has some rather significant limitations.

Jonadab the Unsightly One

unread,
Jan 18, 2012, 1:48:21 PM1/18/12
to
On Jan 17, 8:05 pm, Daniel Thaler <dan...@dthaler.de> wrote:
> Congratulations, you found a bug.

I think I may possibly have found another one:
When performing certain non-movement actions
(e.g., unlocking a chest), the direction inputs for
up and down seem to get swapped.

Either that or I'm losing my mind.

Daniel Thaler

unread,
Jan 18, 2012, 3:58:50 PM1/18/12
to
I was about to say yes, but testing reveals that you aren't.
Translating the symbolic direction constants from the key bindings into
actual z values was getting done the wrong way round ... oops.

The fix is in the repo and it looks like I'll be updating the binaries
on the weekend, as I've also fixed a crash-bug.

- Daniel

Daniel Thaler

unread,
Jan 22, 2012, 8:56:19 PM1/22/12
to
So here it is, the first bugfix release.

Unfortunately there were lots of bugs, and some of them affected the
save format. Saves from 4.0.0 will not load on 4.0.1 (there is an
outside chance that a game that didn't encounter any bugs will load on
4.0.1, but don't count on it)

In order to allow people to finish their games on nitrohack.org, the
site has both versions running in parallel. The new client and server
use a different port, so this should just work automatically.

Changes:
Alex Smith (3):
Fix reversal of up and down ladders
Fix off-by-one error in farlooking traps
Merge branch 'master' of https://github.com/DanielT/NitroHack

Daniel Thaler (57):
create the unix socket as world writeable
server: better log messages for auth failures
fix a crash in the final disclosure if creating the dump file fails
fix a crash when displaying a remote top ten list
don't reenable the cursor unconditionally when leaving a menu
only add log entries about new connections if any data is received
completed games should be marked as done, not crashed
make the filename buffers in dgn_main.c large enough to hold paths
Warn players about plain text password trnasmission
fix race in unix socket auth
The shell script should set LD_LIBRARY_PATH to LIBDIR, not BINDIR
don't retry sending connect and disconnect commands
fix a potential crash bug in cmd_display_objects when handling
lots of items
fix inverted up/down at direction prompts
call nonl(), so that ^J and return have distinct key codes
reduce the number of screen updates by using wnoutrefresh
fix the replay status display when the widow frame is disabled
replay timetest uses gettimeofday instead of clock_gettime
put location info under the inventory in the sidebar
don't use MSG_NOSIGNAL, mask SIGPIPE explicitly instead
fix '<' and '>' as targets for travel and teleport
allow ESC when choosing a travel destination
fix multi-move commands g and G
update the saveinfo utility to work with the current save format
start a new line in the message area for every action
show "Bad command" in the message area rather than in a dialog
Fix ^J vs return on windows, too
add pdcurses' alternate names for the even keypad keys to the
default keymap
improve shift+<hjkl> cursor movement at the edge of the map
fix secondary accel keys in menus
improve the key binding dialog slightly
don't count headings when showing "X more omitted"
fix an error in the binary save format which could cause crashes
show fewer error messages if a binary save has the wrong format
correct directory separator for Windows
change save parsing so that toggling autopickup doesn't break saves
increase the length of the basename array in dgn_main, too
fix topten on windows
fix: go up/down without suitable stairs should not use a move
accept command input when multi > 0
implement server messages
make ist possible to dismiss menus with space
relax server side command parsing for better forward compatibility
fix carrying containers up or down stairs
generate a log message for an improbable client/server
communication error
catch SIGSEGV on the server in order to report an error before
exiting
allow cancelling farlook with ESC
limit the number of times the client will attempt to resend a command
zero out the struct sigaction used to ignore SIGPIPE
don't show a useless second message after server errors
don't attempt to save the game after sigsegv
make it possible to view running games (but not "live")
Move version information into the public header
return the server version in the authentication response
be paranoid about the json parsing mode
update nsis script to make record and logfile writable on windows
bump the version number of the debs

- Daniel

Rob Cypher

unread,
Jan 27, 2012, 2:49:54 AM1/27/12
to
On Mon, 16 Jan 2012 05:17:07 +0000 (UTC), Daniel Thaler
<dan...@invalid.address.com> wrote:

>Hi everyone!
>
>This is the initial public release of NitroHack, a fork of NetHack.

Is there a GUI version due? Too used to graphics to go back to ASCII.

Daniel Thaler

unread,
Jan 27, 2012, 12:00:18 PM1/27/12
to
On 27.01.2012 08:49, Rob Cypher wrote:
> Is there a GUI version due? Too used to graphics to go back to ASCII.

It's planned, but not yet in progress.

Capt. Cave Man

unread,
Jan 28, 2012, 8:54:53 PM1/28/12
to
On Fri, 27 Jan 2012 18:00:18 +0100, Daniel Thaler <dan...@dthaler.de>
wrote:

>On 27.01.2012 08:49, Rob Cypher wrote:
>> Is there a GUI version due? Too used to graphics to go back to ASCII.
>
>It's planned, but not yet in progress.

I get a crash whenever I forget and use the escape key during play. At
the start menu, it exits the game, but in-game it crashes in Windows7.

In a menu or inventory screen, etc. I should use the enter key to clear
the screen, but sometimes I instinctually use escape. That's with 4.01.
Also had one at the tombstone screen, because I hit the escape key.

You should also change that start-up / menu screen so that those big
yellow letters have the nitrohack version in there somewhere (at the base
of one of the letters). I have no way of knowing if I have the most
recent release or not. I looked around for files that would declare it
too. Maybe I didn't look hard enough.

Is this thing giving a greater occurrence of food rations? I noticed
that, but it may have been simple happenstance in that one game (now
dead).

Jonadab the Unsightly One

unread,
Feb 21, 2012, 10:26:32 AM2/21/12
to
On Jan 17, 6:46 pm, Jonadab the Unsightly One
<jonadab.theunsightly...@gmail.com> wrote:
> nathan@warthog:/opt/nitrohack/nitrohack-data$ ./nitrohack
> ./nitrohack: error while loading shared libraries: libnitrohack.so:
> cannot open shared object file: No such file or directory
> nathan@warthog:/opt/nitrohack/nitrohack-data$
>
> *That* problem was resolved by creating symlinks in /usr/lib
> pointing to the .so files (both of them) in the directory where
> they were installed (/opt/nitrohack/nitrohack-data in my case,

BTW, if anyone else did this, be sure to remove or update
the symlinks when installing a newer version of NitroHack.
I don't know for sure, but I suspect some of the save/load
problems I've been experiencing may have been caused by
stale symlinks pointing to the 4.0.0 version of the .so file
while using a newer version of NitroHack.

Since 4.0.1, the symlinks are not required at all, so it's
probably best to just remove them altogether.
0 new messages