Wednesday, November 23, 2011

The Fifth Layer

Traditionally, the Angband dungeon has been regarded as having three layers - terrain, objects and monsters. Terrain is the stuff the dungeon is actually made of (granite, doors, floor, traps,...). Objects can lie on appropriate terrain (only floors in Vanilla Angband), and can be picked up and carried by the player or monsters. Monsters (and the player can move around the dungeon, depending on the terrain. So the state of a particular grid location in the dungeon is defined by the terrain, the objects located there (if any) and the monster located there (if any).

Now some variants (Sangband is the first one I was aware of) have made traps into a distinct layer; I have stolen this for FAangband (and Beleriand). In this system, traps are no longer terrain, but separate things which can exist in certain types of terrain, and interact with the player and/or monsters. In fact, I have also made runes and spider webs part of this layer.

But that's not all, because I lied about grids being defined by terrain, objects and monsters. There is also some other information, stored in the cave_info array/arrays; this includes whether the player has seen the grid and whether it is illuminated. Now for Beleriand, I'm planning to have a continuous wilderness, which is generated as needed. But what if the generation creates a river which needs to flow into an area which hasn't been generated?

The answer is to add a fifth layer - what might be called environmental information. In a way it already exists in cave_info, but it's going to be enlarged beyond recognition. So any grid, as well as terrain (and monsters, objects and traps sitting on it), is going to have information about the context in which it exists. The river will consist of water terrain, but all its grids will also know that they are part of that river, so when new terrain is generated adjacent, it can look around and say "OK, I need to be part of the river too".

Now all that is sufficient to solve my generation problems, but it actually raises more possibilities. The forest realm of Doriath was protected by "an unseen wall of shadow and bewilderment: the Girdle of Melian, that none thereafter could pass against her will". This is now easy to implement - give any grid on the boundary the CAVE_MELIAN flag, and make relevant monsters unable to pass through it.

This should be fun.

Sunday, September 11, 2011

To Do List

Instead of writing this on a scrap of paper and then losing it, I'm putting it here.
1. Bugfixes to FA1.2
2. New wilderness
2a. Better monster AI
3. Steal cocoa port
4. Other updates from Vanilla (monster_base, graphics etc)
5. Update NDS and WinCE ports
6. Become supreme ruler of the universe

Saturday, June 4, 2011

This is meant to be Fun

Lately I've spent a lot of time and thought and effort on how to align FAangband (and Oangband) with the latest Vanilla code, and various other plans.

Result: I've been making my relaxation activity seem like work.

New plan: back off a bit. Focus on FA, not worry about other stuff. Have some fun.

Sunday, May 8, 2011

FAangband 1.2 released

It may be crap, but it's my crap.

Sunday, April 10, 2011

It Lives! (if you can call that living)

FAangband updated to the V3.2.0 codebase now compiles and runs, if you're not too fussy. New exciting features include not being able to see any terrain, or move. Or save the game.

Sunday, February 27, 2011

I <3 angband-dev

Fourish weeks into the process of moving FA to V codebase. It's a long process but that's because of the phenomenal amount of work done by the dev team in cleaning up code, facilitating new changes, etc. The biggest advantage I'm seeing is that it becomes easier to tweak gameplay without breaking everything - which means that game balance becomes easier to achieve in the long run.

Fantastic effort. I am in awe.

Back to it.

Sunday, February 20, 2011

Two weeks on...

...and the chaos is worse. The aim is to make the file structure, etc., of FA look like Vanilla's, with differences only where they are necessary. Maybe I'm halfway through - I really have no idea.

Sunday, February 6, 2011

Spiralling out of Control

A weekend, you say. Good chance to get some programming done, you say. And you'd be right, after a fashion.

So the plan was to copy AngbandBase files over to FA, make such changes as were warranted to get it compiling, then make the other (minor) changes I was planning for 1.2. And it looked fine at the outset. Some things were always going to have to change - option handling, for example. But then there was the question of whether to make only minimal changes to command handling. Answer: no.

That was OK, and the minimal changes took over again - until we reached spellcasting. I started just hacking the spell menus to get them to work, but then went deeper into how V has modified the whole casting system. The results speak for themselves. There are half-finished files all over, V files copied over unaltered, headers hacked enough so they don't conflict with the few files that do compile, and still plenty of unanswered questions about what will end up included and what will be rejected.

And that ignores the planning thread I recently started in order to tie up a few loose ends, and which now seems to be hurtling pell-mell toward a complete rewrite of wilderness and the possible elimination of towns and/or shops.

One hour of weekend left. What could possibly go wrong...

Wednesday, January 26, 2011

Life after Death

Well, Psi has well and truly pointed out to me that my inability to win Oangband with a Shadow Fairy Necromancer was due to my own inadequacies. So I decided to try and actually win the game with a more reasonable combination, which seemed to be going well for a while.

Wrong again.

Saturday, January 15, 2011

AngbandBase, again

New plan - only update AngbandBase from Vanilla at version changes. This means much less updating work for me, and more stability for any variant maintainer choosing to use it.

Why didn't I think of this before?