Thursday, 21 June 2007

Mac OS/X wip5b binaries

You can download an OS/X pre-compiled executable from

Btw: I have to thank Pete Mack for the excellent work done on the OS/X platform code, for both Unangband and Angband. I've recently acquired a Macbook Pro which I do most of my day to day coding on, and his work was invaluable for allowing this. I'll investigate setting up a cross-compiler platform, when I have time.

Wednesday, 20 June 2007

Unangband 0.6.2 work in progress 5b has been released.


Unangband 0.6.2 work in progress 5b has been released. This release is hot on the heels of the previous due to a nasty corruption bug caused by entering stores in the dungeon (Thanks to Matthias Rudolf for reporting this).

You can download the source from

You can download a windows pre-compiled executable from

Please report bugs to

Changes follow:

- Diseases no longer prevent healing (again), except where the disease drains health.

- Added change shape spells.

- Added summoning spells of various kinds that allow you to summon monsters to fight on your side.
You earn experience from their kills. At the moment, you cannot give monsters any orders, and must
maintain the enemies you wish them to attack in line of sight or sensed via telepathy or various
monster sensing (Detect spells don't qualify). A number of intended improvements are outstanding
but feedback is welcome (Requested by jevansau1).

- Added charm monster spells of various kinds.

- Player traps created by spells now earns the player experience points, and has a limited number of
charges (based on level). Other terrain created by the player times out relatively quickly.

- Added schools of magic. A school determines your starting spellbook (currently only for mages
and mage type casters), and which of your class spellbooks are stocked in town shops. There are
currently 7 schools of magic, each with their own 4 basic books, and related higher level books.
Note that a few spells are not currently implemented, and some higher level books are currently
empty of spells. Priest schools will also be developed, possibly to reflect the different Middle
Earth deities, plus a paladin school.

- Commit patch from Andrew Sidwell that improves main-win.c startup.

- Fix problem with disease messages whilst curing them (Reported by Matthias Rudolf).

- Fix 'incorrect' shopkeeper races (Reported by Mikolaj).

- Make size correspond closer to Angband hit die (including removal of con bonus from hit die calculation). Con bonus now applied as per Angband.

- Remove unused hit die display during style selection (Reported by Mikolaj).

- Ensure that zero or less blows, shots or throws prevents melee, throwing or firing a weapon (Reported by Matthias Rudolf).

- Prevent arc and starburst spell effects from hurting the player (Reported by Matthias Rudolf).

- Fix bug where shape change with multiple items worn and a full inventory could result in items being lost (Reported by Matthias Rudolf).

- Fix bug where study items would incorrectly combine (Reported by Matthias Rudolf).

- Prevent starting location being in dangerous terrain in town (Reported by Pete Mac).

- Fix connecting stairs in bottom of tower (Reported by Matthias Rudolf).

- Be paranoid about placing shops in the dungeon (Reported by Matthias Rudolf).

- Prevent impassable piles of rubble being generated as lakes in the dungeon.

- Fix bug with uncursed items listed as being 'unbreakable' (Reported by Matthias Rudolf).

- Ensure that 'dungeon stores' bug doesn't corrupt memory, and hack a save file fix for those affected. Note that this
doesn't solve the original bug, and will cause some stores to be reset (Reported by Matthias Rudolf).

- Fixed alchemy bugs and improve messages (Mikolaj).

Thursday, 14 June 2007

Welcome to the Paleo-Future

Ah. RPG design websites. Browsing this one, lead me to this great website. Now all we need is a paleo-futuristic version of Steamband.

Wednesday, 13 June 2007

Getting Unangband/Angband from SVN and Compiling on Windows

If the above sentence scared you, I definitely want you to read on.

I'll translate: 'This is how you get the latest, up to the minute version of Unangband (or Angband) made easy for Windows users.'

At the moment, you rely on the benevolence of strangers compiling and releasing a Windows version of Unangband every so often. However, you don't get to see the many improvements that are made at the time they happen, and have to wait for this period release and download process. What is good about these projects, however, is that there is a publicly accessible version of the program. You can get this program straight from the source, as it were, so you can see the latest and greatest improvements as they happen. And its not that difficult. Honest.

A word of warning: the steps I'm outlining pretty much demand you have a broadband connection of some kind, because you'll be downloading over 100 MB of files and installing them on your computer.

1. Download a Java Runtime environment from this link. You probably have one on Windows already, so you may not need to do this step. Choose the Windows Online Installation, and don't forget to check the box next to it to say you've read the licensing agreement. The installer is straightforward. Don't forget to allow this application out through your firewall software, if you're running any.

2. Download Eclipse for C/C++ developers from this link. Expand the zip file to your C: drive, in C:\Eclipse. Right-click drag Eclipse.exe to your desktop and choose Create shortcut. That'll give you a nice way of starting Eclipse, since the people who packaged this program didn't give you one. Then double-click on the shortcut to run Eclipse. Launch Eclipse and click OK to accept the default workspace (place where you save things). You'll want to click on the rightmost of the coloured balls (they clearly wanted documentation people to have to write that) and the actual workspace will appear.

3. Once you've got Eclipse running, follow these instructions to download and install Subclipse. Of course, like everything in free software, they're not correct. When it comes to step 2, there's no submenu to the Software Updates. Instead, when you choose this option and the new window opens, change to the Available Software tab and click the New Site button. Skip to step 4 and enter the http details for Subclipse version 1.4 and click OK. When the site expands, choose the Subclipse (Required) and JavaHL Adapter (recommended) as shown in the screen shot below. Click Install. Then click Next, accept the license agreement and click Finish.

4. Download the minimal Gnu Windows environment minGW from this link, whilst saying this phrase 6 times quickly. Whoever comes up with these names? The installer will run and prompt you to install lots of additional stuff. Because its an online installer, you need to allow the installer out through your firewall software, if you're running any. Accept the defaults, pretty much everywhere, but when it comes to the list of things to install, you'll also need to check MinGW Make, which is where a lot of smarts are. You can ignore all the g++, g77 etc stuff on that page.

5. Follow these instructions. You want to add the directory C:\mingw\bin to your existing system path.

6. Run Eclipse off the short cut you made earlier (You've already done this once, when you installed Subclipse). Re-open the workspace. Right-click on the left hand panel and choose New > Other...

7. Click on the triangle next to SVN and choose Projects from SVN. Click Next.

8. Select Create a new suppository location. I mean repository. Location. Click Next.

9. Next to the URL, you'll want to type either:


depending on whether you want Angband or Unangband. Then fill in the Custom Label field with either Unangband or Angband. Click Next, and breath a sigh of relief that the idiots who made this form didn't tell you that you were holding the mouse in the wrong part of the screen as well as all the pop-ups telling you that you hadn't finished typing.

10. Select trunk (some random number), and click Finish.

11. In the Check out Ass dialog, click Yes. I mean, in the Check out As dialog, click Finish.

12. In the Select a wizard project, you want to select Standard Make C Project. Click Next. I have to breath slowly when I say phrases like this, in case I inadvertently cast a spell from Harry Potter. Or worse, sound like I'm trying to cast one.

13. In the Project Name field, type either Angband, Unangband or Mildred. Click Finish.

14. Eclipse will miraculously starting downloading the Angband or Unangband SVN repository for you. Note that this is the first time the computer has done any work on your behalf. Up until here, you have been labouring on its behalf.

15. We're almost done.

16. Wait until the computer is done downloading however. Click the triangle next to Angband, Unangband or Mildred.

17. Right-click on the src directory, and choose Make Targets > Build...

18. Click Add.

19. Target name is default. As in, actually type in the word default. Make target is default. Again, type in the word default. Uncheck the use default under build command, and type in the box mingw32-make -f makefile.cyg.

20. Just to be clear. There are no spaces between mingw32 and the minus sign, and make, and there is a space before and after the minus f. It might be easier if you just copy the above.

21. Click Create.

22. Select the default build target, and click Build. You'll see lots of gibberish in the console window that people who should know better get wildly excited over. However, at the end of it, you'll have an angband.exe sitting in C:\workspace\angband\trunk\angband\src or something similar (or unangband or mildred).

23. Don't double-click on it. Instead curse the incompatibilities between windows and Unix, and copy the angband.exe file up one level, so it sits in the folder that holds the src folder. You'll be doing this particular activity a lot.

24. Double-click on angband.exe.

25. You're done.

Now to keep up to date with any more recent changes, all you have to do is run Eclipse right-click on the Angband / Unangband / Mildred project, choose Team > Update, then repeat steps 17, then 22, 23 and 24, in that order (and nothing in between).

Hopefully this will get you addicted further to tweaking around with Unangband source code, and ideally contributing to one of these projects.

Thursday, 7 June 2007

Credit where credit is due

As a developer of an Angband variant, I love the wider Angband community, because I get almost all of the ideas I get from discussion about features and misfeatures from Angband or other variants.

For instance, Nick in this post makes a suggestion about bookless mages (Don't read further down the thread or you'll spoil it). Its not a new idea: I've already thought about implementing psychics, which in quick email note to myself read:

Do not have books; but give up 1 item slot for every 10 powers learnt:abilities Id; Ego; Superego; Telekinesis; Pyrokinesis; Cyrokinesis;Object Reading; Ectoplasm; etc.

and then there's the idea I have allowing Shamans to tattoo runes on themselves: taking up valuable equipment slots in return for extra cool powers (Combinations of runes in Unangband give access to spells exponentially based on the number of runes carried).

But when I was reading it, something just clicked. Have a look at this article in the section titled Shadow stalker.

I've suggested an idea in the original thread that is a compromise between forcing players to be able to read books in lit areas, and allowing Shadowstalker type characters to cast spells in the dark. Its an elegant solution, and I can already see the code required to do this in Unangband in my head.

That's one of the other advantages of having your own variant. You get to implement all your cool suggestions. Hopefully this idea won't fall on deaf ears elsewhere...

Monday, 4 June 2007

Unangband 0.6.2-wip5a has been released


Unangband 0.6.2 work in progress 5a has been released. This is a work in progress release so please save regularly.

You can download the source code from

Edit: The Windows executable is now downloadable.

You can download a windows executable from

For those of you compiling direct from the CVS, please note that I will be transitioning from CVS to SVN shortly. I am also somewhat 'ahead' of this release in CVS at the moment.

Please report any bugs to

Changes follow:

- Added some low level priest spells and defined some pre-requisites for basic priest

- Dungeon generation has been comprehensively revised and improved for correctness.

- You now dodge towards any monster you are attacking, which means ranged attacks can hit
them instead, and that you can charge in the opposite direction the following turn.

- Blocking now last two turns.

- Added alchemical formulas. These allow potion specialists to inscribe a formula on a
potion, scroll or lite object to modify how the object explodes. e.g. =1l causes any
explosion to lite up the area it affects. =3r makes potion have radius 3. =2d makes potion
do double damage. There are currently 15 different letters for you to discover, which can
be combined. e.g. =3r2d.

- Added a comprehensive set of death messages for various types of self-inflicted and
unusual deaths.

- You can now damage yourself with bolt and (more importantly) ball spells.

- Thrown potions now explode with a fake 'nothing' effect if they have no effect
(Suggested by Mikolaj).

- Updated to allow radius 2 monster lites, improved glowing terrain and dropping a lit light to
allow it to lite up the surroundings.

- No ice-themed dungeons at shallow depth (Reported by Pete Mac). In general, dungeon
features should be chosen a little more appropriately regards for depth.

- Food descriptions improved (Reported by Pete Mac).

- Dungeon connectivity should be greatly improved (Reported by Pete Mac and others).

- Made staffs brandable (Requested by jevansau1).

- Further work on allowing doors and walls to display different orientations in isometric mode.

- You can now examine more items in shops. This now allows you to browse spellbooks
(Requested by pebepe).

- Fix bug causing guardian uniques to be accompanied by out of depth monsters (Reported
by Matthias Rudolf).

- Fix major bug with level_flags.

- Adjust recommended classes to minimise very negative stats.

- Improvements to allow player to be accidentally crushed by closing a sliding wall on themselves.

- Fix a number of infinite loops and crashes in dungeon generation.

- Fix strange messages for monster name display in various circumstances (Reported by

- Fixed problems with monster escorts and monster summoning picking invalid monsters or
too tough monsters (Reported by matthiasrudolf).

- Fixed objects lost in stairs created by quests (Fix by Mikolaj).

- Fixed exploit where player created traps would allow additional items to be created (Reported
by matthiasrudolf).

- Fixed bugs around room walls not being lit correctly (Reported by Mikolaj).

- Fixed bug using repeat command and wands of wonder (Reported by matthiasrudolf).


Friendly monster AI

Just implemented an effective friendly monster AI in about 2 hours - much easier than anticipated. I just need to allow the player to order his minions around, and have them not disturb the player whilst moving.

Its testament to Leon Marrick's 4GAI code, as well as the future proofing I did previously to the monster spell code.

Unfortunately, I now have to balance the player summoning unlimited monsters, as well.

For those of you waiting on the next Unangband release, a bug on the Berlios site is preventing me from releasing. Consequently, I've gone on to implement lots of extra features instead, including the AI code I've just mentioned.