UserManual > History > HistoryChanges
A Many-Branching Tree
Some of the changes between Angband 2.6.1 and now
It is very hard to pin down, along the way from 2.6.2 to the current version, exactly what changes were made, and exactly when they were made. Most releases involved so many changes from the previous release as to make "diff files" not very useful, since often the diff files are as long as the code itself. Most of the changes, with the notable exception of the creation of some of the new "main-xxx.c" files for the various new platforms, and a few other minor exceptions generally noted directly in comments in the source, were written by Ben or Robert, either spontaneously, or, more commonly, as the result of a suggestion or comment by an Angband player.
The most important modification was a massive "code level cleanup" for 2.7.x, largely completed in 2.7.8, that made all other modifications much simpler and safer. This cleanup was so massive that in many places the code is no longer recognizable, for example, via "diff -r", often because it was rewritten from scratch.
The second most important modification was the design of a generic "z-term.c" package, which allows Angband to be ported to a new machine with as few as 50 lines of code. Angband 2.9.3 thus runs without modification on many machines, including Macintosh, PowerMac, Unix/X11, Unix/Curses, Amiga, Windows, OS2-386, DOS-386, and even DOS-286.
It would be difficult to list all of the changes between Angband 2.6.1 and the current version, because many of them were made in passing during the massive code level cleanup. Many of the changes are invisible to the user, but still provide increased simplicity and efficiency, and decreased code size, or make other more visable changes possible. For example, the new "project()" code that handles all bolts, beams, and balls, the new "update_view()" code that simplifies line of sight computation, or the new "generate()" code that builds new levels in the dungeon. Many changes have been made to increase efficiency, including the new "process_monsters()" and "update_monsters()" functions, and the new "objdes()" and "lite_spot()" routines. The generic "z-term.c" package yielded efficient screen updates, and enabled the efficient use of "color".
The most visible (to ordinary players) changes that happened as a result of Ben Harrison's maintainership were (a) a far greater degree of user- customizability as shown by the info.txt files, (b) the "fractional" speed system, with +10 in the new scheme equalling +1 in old money, and (c) object stacking, the ability to have more than one object in a square: first tried in 2.7.9, completed in 2.8.2.
It should also be pointed out at this point that the far cleaner nature of Ben's code as compared to previous versions has given many other people the opportunity to base code for their own Angband variants on it. And so a plethora of new variants have appeared, many of them far more different from Angband now than Angband ever was from Moria, and yet still based on Ben's coding ideals for Angband.
