Friday 9 January 2009

Congratulations to Angband.

A hearty congratuations to the Angband folks. The new version (v3.1.0) is now officially GPL, thus ending a saga over licensing that has dragged on for literally years. Whilst I'm not entirely a fan of the GPL (its a bit too viral for my tastes; yes, I am aware of the counterarguments that this may not the case), I do support the principle of open-source software where feasible (and there are many reasons why in some circumstances a closed-source/propriety-based route for software is preferable).

Hence Kharne, if it ever gets released will probably be LGPL at most. It cannot be GPL since it uses 3rd party VCL components which themselves are not-GPL compatible (for the record, the license terms of said components allow embedding and distribution in free software).

Getting back to Angband, a couple of change in the new version have caught my programmer's eye. Firstly,

"Set up an event system for UI display updates, where the game communicates with the UI by sending messages saying that something's changed that the UI might be interested in, rather than deciding that specific things should be redraw. The main screen updates all use this system now. Amongst other things, this system should help things like the borg and graphical frontends, because they can hook right into changes in state. (#348) "

Obviously Angband is at heart (and still is) a console application, but it is interesting to note they appear to have finally moved to a paradigm that window-based GUIs have had since almost the year dot. Its a heck of a lot easier for the UI to be in charge of updating the screen than it is for screen updates to be scattered willy-nilly about the rest of the code. As I'm not familiar with the Angband codebase to any extent beyond being "inspired" by its dungeon generation algorithm, I don't know the exact reasons for the switch now, but being a professional software engineer in my non-Roguelike existance, I'd put money on two things: 1) refactoring the UI code was most likely a massive job and they had to wait until they had a sucker^H^H^H^H^H^Hvolunteer lined up to do it, and 2) the previous code was getting really really REALLY unmaintainable.

The second change of note ties somewhat into this recent thread on r.g.r.d:

"Monster HP is now specified as an average value around which to randomise, instead of using a "12d5"-type calculation. Uniques always have the number of HPs specified in the monster.txt file, like before."

At first glance, this sounds like an attempt to blunt the fangs of that fearsome elite mob, the RNG. Is this such a good thing? I'm not sure. For standard monsters, isn't part of the "fun" finding one that goes down like a sack of potatoes, or one that is hard as nails? Or is the fact that one orc may have six times as many hit points as his brother simply random-masochism or the sake of it?

No comments: