Angband Forums

Angband Forums (http://angband.oook.cz/forum/index.php)
-   Development (http://angband.oook.cz/forum/forumdisplay.php?f=10)
-   -   Angband 2.9.3L (http://angband.oook.cz/forum/showthread.php?t=9529)

Gwarl August 13, 2019 10:37

Angband 2.9.3L
 
The L is for .live

I've been working on updating 2.9.3 with some newer features and made a repository with my changes. The reason I chose 2.9.3 is because many variants, even those based on 2.8.1 incorporate many patches that were eventually added to Vanilla. So it serves as a starting point for refurbishing other variants (it seems that many variants stopped keeping up with vanilla changes after 2.9.3).

https://github.com/OwenGHB/angband-293L

This removes most frontends and deprecates most others, besides curses. There are several patches to modernise the GCU frontend.

L64 patch - There's a bug in older versions and variants of angband which causes them to fail on 64 bit systems, it was incorporated into 3.0.x and has been applied here

xterm colour patch - At some point poschengband incorporated a colour scheme brought into V in 3.1.2v2 and I've gotten quite practiced at applying it to older variants which need it. 2.9.3 follows the same pattern as it is the pattern. This patch is incorporated here.

bigscreen - Through laborious comparisons of 2.9.3, 2.9.4, 2.9.7 and 3.0.1, using the 2.9.0 bigscreen patch as a guide, I managed to reconstruct the changes which 3.0.1's bigscreen curses mode relies on, and added the option to play with a main term window larger than 80x24. Interestingly I noted that not all the hardcoded constants which the original bigscreen patch modified were updated in V - this is why gruesome software bugs still leap out from halfway down the screen - they appear on line 23 (Term->hgt-1). This makes a huge difference

monster list - A feature already present in 3.0.6, copying the implemention from there was quite difficult as it would have relied on other fundamental changes, and I'm not sure I even like the 3.0.6 iteration that much. Instead I applied a patch for version 2.9.1 which hadn't broken compatibilty with 2.9.3 to provide a visible monster list subwindow. This is a little different, it applies color coding to enemies based on whether they are OOD, unique, OOD uniques etc

Note that you can't use bigscreen and the monster list at the same time, as thus far you can either have a large playing area or subwindows, but not both. This is still the case in 4.x but the situation is different in poschengband and its forks - a GCU port upgrade I intend to bring to current V and then backport.

I would also like to have [ as a command to see the monster list without needing to use a subwindow, present as a feature in 3.1.2 but with code in places that don't exist in 2.9.3. having an object list too might be nice for the sake of completeness. But that might not be strictly necessary - I have provided for an interface which help prevent offscreen deaths with

The final change I intend to make is only really relevant to angband.live - character outputs. It would be nice to include the descriptive savefile headers from 3.5.0 and later to be read by the server but they rely on a savefile system brought in in 3.1.x. That might not be prohibitive but it does make things less straightforward. The alternative is to include the patch presently used for most variants on the site, which outputs the info to a .txt file

This project can be used to set a standard for renovation of older variants. Kangband in particular is conformant to 2.9.3 codewise so it should be relatively straightforward to apply the same changes. Kangband has very pretty towns and I am looking forward to seeing them in bigscreen, as well as the Zangband 2.5+ wilderness.

Gwarl August 13, 2019 11:12

And I almost forgot - thanks to Nick for creating AngbandPlus, which was an invaluable resource for this

Nick August 13, 2019 12:40

This is wonderful, awesome work.

Pete Mack August 13, 2019 14:04

There are some things that made it into very late versions of 3.0 that really belong in other variants, notably the knowledge menus from unangband. It is easily portable code, and unangband doesn't use the menu code, so its version of the knowledge menu works independently of it. (But the menu code makes other things easier, too.)

Gwarl August 13, 2019 15:09

Just ported most of this to Kangband 2.9.3r1 (no monster list yet) - possibly the first time it's been playable with a big screen?

https://github.com/OwenGHB/Kangband-293L

Also up on angband.live

Gwarl August 13, 2019 22:11

I've managed to get zangband 2.4.0 to understand the difference between /pref/ and /user/ so that it functions properly on angband live, and it is a strong candidate for the next bigscreening.

zangband included its own version of the bigscreen patch in 2.5.2 but the original fixed wilderness was removed for 2.5.0

takkaria August 13, 2019 22:33

Ah, this is very cool - 2.9.3 was current when I first encountered Angband. It's funny to see it resurrected.

Gwarl August 14, 2019 00:05

Quote:

Originally Posted by takkaria (Post 139574)
Ah, this is very cool - 2.9.3 was current when I first encountered Angband. It's funny to see it resurrected.

2.9.4alpha incorporated the reportedly controversial JLE patch so 2.9.3 was arguably the last 'old' angband. Although having played some variants based on 2.8.1, and then playing 2.9.3, I suspect 2.8.1 was also more difficult.. (but won't compile until I pick up more tricks)

The idea of anything older than 2.8.1 fills me with mild horror

takkaria August 14, 2019 00:42

Quote:

Originally Posted by Gwarl (Post 139575)
2.9.4alpha incorporated the reportedly controversial JLE patch so 2.9.3 was arguably the last 'old' angband. Although having played some variants based on 2.8.1, and then playing 2.9.3, I suspect 2.8.1 was also more difficult.. (but won't compile until I pick up more tricks)

I think by the time JLE was incorporated, it wasn't super controversial... it had been around for a few years already by that point. But like any significant change not everyone liked it. The spell list was significantly revised too - once every 17 years seems quite like a good pace to me.

Quote:

The idea of anything older than 2.8.1 fills me with mild horror
After I removed Lua, the code from 3.0.6 closely resembled the code from 2.9.3. And there were a *lot* of cleanups after that. For example, the #defines around the custom int types were horrendous. I spent ages ripping out code for systems that were dead already 12 years ago and simplifying stuff, so it's funny to see you doing the same thing now, for the same platforms... But all that code was needed to get things working for someone, somewhere, on a some mainframe. It's funny now the dust has settled, desktop computers have peaked, and Windows/Mac/Linux are the only three platforms anyone cares about supporting, but at one point that didn't seem like an obvious outcome. O diversity has reduced a lot.

And it blows my sometimes that bits of Angband have existed in three different languages (probably more than one version of Pascal, and then C and Lua) over four decades. Ben Harrison did a very good job of turning code that still resembled the Moria - that was written in Pascal - into something readable. Even if by modern software engineering practices it's a total nightmare.

Gwarl August 14, 2019 00:58

1 Attachment(s)
Well, see the picture attachment for my motivation. Judging by the code as I found it, Kangband has never been run in a terminal with a main term window larger than 80x24 before, but it's very pretty.


All times are GMT +1. The time now is 20:04.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, vBulletin Solutions Inc.