Thursday, December 30, 2010

Spells, skills, and class design

One of the things that takes a lot of time is tweaking the spell and skill trees to make the classes more fun to play. The various factors I have to balance are a lot more restrictive than you might expect:

1) The spells and skills within each group, for example "mage fire spells", should have proper dependencies. Greater Fireball should probably be dependent at some level on 'basic fire magics'.

2) The spells and skills within each group, for example "mage fire spells", should be separated by similar level differences, to spread the group out across a level range. If there's too much clumping, there's dead zones where you don't get a new spell for a long time, then suddenly get a bunch followed by another dead zone.

3) Spells and skills for the entire class should be evenly distributed across the entire level range, again to limit dead zones and make sure players have something to learn at every level. Necromancer is a good example of how to do this; every three levels, you get 5-6 spells and skills, from level 1 up to about level 28. Mage is a good example of how not to do this; there's 6 spells between levels 2-4, 12 spells between levels 12-14, and 4 spells between level 26-28. Mage is currently very clumpy and needs more work.

4) Low level spells and skills should be useful and interesting. Having a spell like 'ventriloquate' below level 10 makes no sense at all; newbies will think it's actually useful (it's not) and waste practices on it. It's ok to put useless stuff at higher levels, because high level players are more likely to do research before wasting scarce practices on something.

5) Really high level spells have to actually be useful, even if it's a specialized use.

The above generally result in me spending a lot of time staring at various views of the spell lists for each class. You have to keep an eye on groupings across level ranges, while making sure you haven't done anything dumb to the dependency trees for each group, and making sure you don't move useless things into the low level ranges.

And even though it may not seem that way, the above are actually really important. It seems to give you more to do, and you know that you get important, useful stuff even at low levels. I've certainly noticed a difference with my characters.

Saturday, December 25, 2010

Christmas Expansion - Update

We finally got everything done and installed, and it went off pretty easy. The biggest hitches were minor display bugs in explorer points, with a few minor typos and what not elsewhere.

One of the things that surprised me was the time breakdown for the various spells and skills. We only added 12 of them this time; here's a rough time estimate for each.

Level 25 mage skill 'melt' - approximately 6 hours. This skill was in multiple pieces, as it can operate on multiple targets. Not much debugging time required.

Level 27 mage skill 'spell lore' - approximately 1 hour. This was a very easy hook into the spellcasting code.

Level 6 cleric spell 'faith shield' - approximately 4 hours, most of it testing and design, trying to figure out how to not break anything.

Level 31 cleric spell 'breath of life' - approximately 5 hours. Required several debug passes to get the math right, largely because I wrote the core of it while I was very tired.

Level 33 cleric spell 'area heal' - approximately 2 hours, because this reused a lot of well-done code from 'area refresh'.

Level 34 cleric spell 'astral bridge' - approximately 16 hours. The spell itself only took about two hours, but before I could implement it I had to completely rework the waypoint code. Refactoring and updating the old code took the bulk of the time, and it broke waypoints for a lot of players.

Level 32 cleric spell 'group waypoint' - approximately 2 hours, because the astral bridge and other waypoint code was already in place.

Level 8 thief skill 'listen' - approximately 4 hours.

Level 29 thief skill 'fast talking' - approximately 3 hours, had to come back and extend its use into other thief skills that didn't have the facility before.

Level 26 warrior skill 'cleave' - approximately 5 hours. Ran into an irritating bug where cleave would cause a death which would cause an autocleave which could cause a death which could cause an autocleave...

Level 32 warrior skill 'whirlwind' - approximately 3 hours. The event handler for this was very straightforward.

Level 8 necromancer spell 'bone blade' - approximately 2 hours.

Explorer points - about 10 hours. This had a lot of hooks for display and interfacing, which usually takes a lot of time. Multiple debug passes.

Various achievements - about ten minutes each when done in groups.

There was also a lot of infrastructure and other work that went on to enable all this; between bug fixes, infrastructure, and design, the times above are perhaps a third of the total.

Tuesday, December 21, 2010

Alter Aeon Christmas Event

Every year for Christmas (and for a bunch of other holidays), we do something special. Usually this amounts to in-game events to open new areas, or for special prizes, things of that nature. This year, in addition to the usual things, we'll also be adding something else: a bunch of new code.

For each of the five classes, we'll be adding a few new spells and/or skills. A lot of this stuff is high level, but it's also focused more strongly in some classes than others. Cleric is probably the class that benefits the most, but it's also been the class with the least amount of scaling. Necromancer doesn't get much new stuff, but it does get a few critical reworks of existing spells and skills that didn't work out as designed.

Adding new spells and skills like this is always a hassle. Coming up with new stuff is hard, because it has to be useful, interesting, and above all preserve the physics/theme of the game. There's no point in just adding a bunch of lookalike damage spells that are successively more powerful.

There's also the problem of integrating new things into the existing spell and skill trees. One of the major things about this release is that there's been a lot of reworking of the spell and skill trees for the various classes. Thief, warrior, and cleric have all seen pretty significant changes to their skill groups, primarily to make space for the new additions.

There are a few other things I'll mention, such as new achievements, but since we're keeping the actual spells and skills under wraps until Christmas morning, I'll stop here.

Wednesday, November 3, 2010

Alter Aeon Necromancer Class

There's been a lot of talk on this blog and the Alter Aeon Forums about a new Necromancer class. Official work on it started about a year and a half ago, and up until about three months ago pretty much everything that was done was under-the-covers structural stuff.

Once all the infrastructure was in place, I started hitting spells and skills really hard. In the last three months I've implemented about 50 new spells and skills, some with rather exotic (compared to other spells and skills) features.

And finally, two days ago, the first ever Alter Aeon class expansion was officially unveiled. Necromancer is now live on AA!

Some of the available spell and skill groups for necromancers involve:

- creating animated entities of various sorts
- raising your own undead
- summoning demons for fun and profit
- using dragon teeth as powerful spell components
- blood skills involving your own blood
- controlling undead and demons
- soulsteal and other spirit-based spells

As always, a full spell at skill list can be found on the Alter Aeon Spells and Skills pages.

One of the crowning features of the new class is the minion system, which allows high level necromancers to create and manage several minions at once.

The class plays very differently from any of the others, and is looking like a great addition to the game. There's definitely still some balancing issues remaining, but for now it's looking extremely solid. Further, it's downright fun for me to play. I wish I had more time to do so.

Thursday, October 21, 2010

We're Famous!

Ok, not entirely famous, but it's a start. We have our first reviewed and edited article on an external web site:

Mudding Communities Are Alive and Well in Alter Aeon

The site BrightHub is a large site with articles about nearly everything, and people who act as dedicated editors to make sure that articles pass a minimum sanity check before being posted.

This is important because articles like this can be used to bolster notability in Wikipedia, and get AA out there to a much larger audience. Stop by and take a look, and spread the word if you've got any friends that might be interested!

Sunday, October 3, 2010

Necromancer Class Open Beta

The necromancer class is officially in beta test on, port 4000. There's basically no rules on this port, other than to respect others, and give testing priority over anything else. So if someone's trying to run a real test, don't screw with them. One additional note: pk balance is completely off, and I have no intention of fixing it until the mob balance is halfway sane. Don't submit bug reports having to do with pk balance issues.

Pretty much everything is implemented except for the Demonlore skill tree, and what I'd call four problem spells/skills:

Lvl 16 consumption
Lvl 16 bone wall - already have wall spells
Lvl 21 flesh wall - already have wall spells
Lvl 27 skeletal dragon - already have craploads of minions

Consumption was supposed to be some kind of corpse eating thing to recharge your undead, but so far with the way they're working out that doesn't make much sense. The wall spells are really problematic, as I have to come up with something very different from icewall for them to make sense. And for skeletal dragon, well, the last thing we need is an even more powerful minion.

The Demonlore tree is problematic because I can't really see any interesting way to make it different from the 'Raised Undead' skill tree. The both create various minions, using control and soulstones, and have the same kinds of skills. I really hesitate to just make a skill tree that's effectively a different mob type copy of some existing tree.

Beyond that, things appear to be going well. The class seems to be quite a bit too powerful for now, but at the same time all the testers are five-class level 33, so perhaps I'm seeing a side effect of that. I think in the long run, the only real way to get legitimate test data is to boot in the code and see what people do with it for real.

One thing I am really surprised about is just how terrible most people are at testing. I have one tester that typically sends me 20 messages overnight with comments and questions about the class; the remainder have yet to send me 20 questions total for the entire time the port has been open.

As a result of this, I probably need to rethink my beta testing strategy. Maybe the thing to do is to autoupdate everyone on login so that their levels come out in some mangled, pre-determined format; for example 32/27/22/17/12, with the classes picked at random. I think having everyone be 5x33 just leads to people seeing what it's like to have that many levels.

Tuesday, September 14, 2010

Potions and Herbs and Spells oh my

After what feels like more than a decade, we've finally updated the system for brewing potions. The old system was pretty hard to deal with from a code standpoint, and didn't give builders a lot of options. From a player standpoint, the old system didn't really allow for invention or thinking about your potions.

The new system changes that by adding affinities for ingredients, where different spell components are more likely to brew particular spells or spell groups. Players get the ability to actually influence what comes out of the brew, as do builders who can set those affinities if they want.

The new code also uses a staged algorithm for the PRNG such that I can add and remove things chunks of the algorithm without causing major damage. We can also tweak the probabilities on specific brews and components now if necessary.

As with any change, there's been some complaining about this, but it's largely been well received. It helps that there's information about how the new system works; I updated the brewing article on the AA articles page with a bunch of new information. Here's the link:

The Art of Alchemy

People have managed to brew quite a few interesting things so far. You can find the list of public potions brews as the Alter Aeon Potion Recipes web page.

Wednesday, August 4, 2010

The accidental fanfic

I've been working on the next stage of the newbie quests for the island of Kordan, and one of my major stumbling blocks has been explaining exactly why another stage exists. The general theme with this sort of thing is that there's a continuous storyline as you progress from one quest to another; you work your way deeper into the conspiracy to take over the world (or whatever), and ultimately emerge the hero.

The problem was, I didn't have any such story or conspiracy constructed, and wasn't feeling particularly inspired. So, I decided to try something new. I sat down and wrote some crap.

It turns out that my crap looks like a pretty decent, if dry, story. I accidentally created my first piece of fanfic!

I've posted it on the Alter Aeon Fan Fiction page and added a section for myself. The direct url is:

Plans and Portents - the Story of Qoorik

Friday, June 25, 2010


It's been a long time since I updated here; I'd like to say that I've been busy working on things instead, but while I've been busy it seems little of it relates to Alter Aeon.

The first reason for this post is the mapper. I've built new area maps for the web pages! You can find these at the standard Alter Aeon Maps location. These maps include the level of areas, as well as a number of new areas that have been added in the last six months.

Speaking of new areas, we've had an awful lot of stuff come online in the last six months. It would probably have been more if I'd get off my can and worked on the west continent and the demon city of Qoorik.

Lastly, the necromancer class and skillset continues to make its slow and steady progress. I've got the spell and skill trees set up in what I think will make a good, solid class. Honestly, it's far better laid out than any of the other classes are; all the skill trees make sense (to me at least), the level spreads look good, and it's largely new techniques and behaviour. There's a lot of use of charmies and mob armies.

I'm stealing a handful of spells and skills from other classes though. Cleric will lose demon lore and probably undead lore as well as durhams, preservation, and animate corpse. Mage on the other hand, will lose fear and possession. Not huge losses, but enough that I'll have to do some grandfathering.

One thing that does concern me is the upcoming druid class split, scheduled for after necromancer. My current vision of druid has sky/water/earth skill trees, which may serve to simply gut cleric in regard to offensive capability. I'll probably have to rework these simultaneously, and it won't be pretty. It may be possible for me to steal more stuff from mage to compensate. I don't know yet.

Farther down the line is paladin, which I'd intended to be a specialized cross between warrior and cleric; basically a fanatic nutjob fighter with a direct line to his god. I'm not sure I can come up with enough stuff to make this a sane, standalone class.

My final goal is 8 classes, but there simply may not be enough variation in the game world to support it.

Wednesday, April 28, 2010

Objects - followup

For reasons unrelated to the previous post, I ended up doing a lot of object work in the last couple of days. I discovered that the linkages between rarity, and the bind/artifact/rare flags were not just overly complex, but in some cases really inappropriate. It took several hours and multiple tries to work out all the details, and we now have a much better rating system for flags and rarity.

The general summary is that binding is much weaker, artifact and rare are stronger, you get an extra artifact per rack, and rarity is being deprecated.

Rarity I was the most surprised about; there were literally thousands of objects with rarity on the game. I wrote a function to remove it from everything that didn't strictly need it; this cut the number down to under a thousand. It's still a useful mechanic to have on certain special items, but having it on this many of them really doesn't seem appropriate. Rarity will also be a major issue with a larger player base, and we need to use a new mechanic for a lot of these things.

Weakening the bind flag caused issues with a lot of equipment that was built to take advantage of binding. A good chunk of it was in newbie areas, where I myself used it to get fairly powerful equipment to low levels. On the other hand, a lot of the other binding objects were problem objects that needed to be adjusted anyway. We've had a problem with bind flag overuse for a while now, and this helps address that.

The addition of another artifact flag is a major change, but it comes with a caveat: one artifact flag has to be bound, while the other must be unbound. A similar restriction is in place for rare flagged items.

This seems to be a really interesting idea. The bound objects are slightly more powerful but cannot be sold; the unbound objects can be sold and will serve to keep the equipment market functional. The fact that builders must build both bound and unbound equipment should help with equipment diversity and address some of the concerns that players have about "everything becoming bound".

All in all, I've been getting a lot of positive feedback on it. I know it's inconvenient for builders to update things (I make a point of it to personally take my share of pain from the older areas), but so far the consensus seems to be that it's worth it.

Monday, April 19, 2010

Objects - rarity and timers - TL/DR

There are several different types of 'powerful' objects, with various limitations, that can be built on Alter Aeon:

Rarity based: Only a certain number of the item can be on the game at once. The limit is a long term (multiple week) average, so there may be none or there may be a lot of them on at any given time. If the long term average is too high, the item stops loading.

Binding: The object binds to whoever picks it up, preventing trading and selling. There are usually a low number of these per zone, between 0 and 3. The building code warns if there are too many of this in any given zone.

Artifact: One artifact is allowed per zone. Artifacts can be much more powerful than normal equipment.

Rare: Two rare items are allowed per zone. Rare items can be a bit more powerful than normal equipment.

Timered: The item has a timer and will at some point self destruct.

Each of these four classes can be more powerful than normal equipment, and as names like 'artifact' suggest, sometimes they can be very much more powerful. Some of these different classes interact with each other, making the calculations and code messy; for example, Rarity and Binding contribute to make Artifacts more powerful, but only to an extent.

This complexity in itself is problematic, but there are two other major issues to consider as well:

Rarity based: For any 'good' and useful piece of rarity equipment, it is obtained repeatedly until it is well past its loading limit. If the item is also Binding, it can't be traded and eventually it begins loading again as players stop playing the game. If it's not Binding, players trade occasionally (one or two trades per year) for the few pieces that exist, and it never loads again.

Timered: Noone will ever use the item. If it's not permanent, people aren't interested.

Rarity doesn't make any sense if all it does is give a small number of players a monopoly on an item; for them it's not rare, it's just a part of their set that noone else can ever get. For everyone else, it's so rare as to be impossible to obtain.

Timers on the other hand are the opposite end of the spectrum. Regardless of how good it is, people won't use it if it's timered. There seems to be some small exception for this with timered enchanted equipment, but I suspect this is because the timers are really long and the equipment doesn't self destruct when the enchant wears off.

Timers are of course, the obvious natural mechanic for controlling rarity based equipment. If something is limited load, simply make its duration in-game finite. This would guarantee turnover and make the item available to more people.

One final thing to consider is the way that timers currently work: they're not based on real time, but rather some amount of game time. You get an item, and you know it'll time out after you've used it for a while, but you never quite know when without checking it each time. If you log off for a week, you're likely to forget about it and suddenly find an important item vanishing unexpectedly in the middle of a battle.

This leads to one possible improvement: RL timered equipment. You have something, but you know exactly how long you have it for. Having something say "This will expire at Mon Apr 19 11:33:15 2010" is very different than having it say "This item will last for two RL days of game time, which could be two months from now if you don't play very often". It also has a built-in sense of rarity attached to it.

I like it.

Friday, April 16, 2010


Today, I did the unthinkable: I constructed a myspace page. I suppose technically, I had already done that with my personal page last year; but in reality it was simply the bare minimum login and I had done nothing at all to it since it was created.

I really have to hand it to the myspace developers; they've created one of the single most dysfunctional, hard to use, and unconfigurable interfaces I've ever seen that still happens to mostly work. It reminds me a lot of Gimp.

Actually, Gimp is worse. But not by much.

At any rate, if you still have a MySpace account, feel free to add us! Our myspace URL is:

Tuesday, April 13, 2010


We have a rather interesting interpreted language in-game that can be used to perform actions on a handful of triggers; an example might be to add an arbitrary 'use' function to an object. As an example of this, I once built a vacuum cleaner object which could be used to suck up pretty much anything you pointed it at. Sucked up things ended up inside the vacuum.

One drawback of this language is that it didn't have any concept of global data. I added that feature today, using a surprisingly small amount of code.

A surprisingly small amount of code that took me about three hours to write.

Once again, software complexity rears its ugly head. I actually made two false starts on this problem, each of which I had to back out before finally getting a minimal solution to it. The interpreter isn't really that complicated or large by any real programming standard, but it's still larger and more complicated than I could easily wrap my brain around.

It took about two hours to really figure out the best way to handle it, then about an hour to implement it. Most of that time was just trying to understand what was already there and how it all worked. And this is code I wrote!

On the plus side, my actual implementation, when I finished, had 2 bugs in it, both trivial. It's good to know that thorough understanding up front does in fact result in far fewer mistakes.

Tuesday, April 6, 2010

Leading by Leading

If there's one thing I've learned over the years, it's that public debate about radical new game features is seldom a good thing. It's not the players don't have good ideas; it's that vocal minority groups serve to deadlock and kill otherwise good ideas.

This reminds me of the Knesset in Israel. They have so many fanatic fringe groups that it's virtually impossible to get anything done.

On March 16, I globally removed and disabled permanent player killing. I didn't post about it, I didn't request for comments; I simply did it, and waited for the fallout.

There wasn't any. Or rather, the people who would have made a big deal of it were unable to do so - there was no way to invoke righteous indignation from the population by blowing things out of proportion. Propaganda doesn't work when people can try it for themselves and say, "no, that's not true".

The next day, I changed the way magic resistance works for players. I've been wanting to do this for over a decade, but never felt like it would be appropriate. Fallout level? Again, very little. Again, largely because the bullshit espoused by the vocal minority was quickly killed by players simply trying things for themselves.

I like this idea of leading by leading instead of leading by consensus. Decide what to do, make it happen, just be prepared to clean up the mess afterward. It's not that I'll never mess up, but it's definitely easier to apologize and fix it than to debate it up front.

Tuesday, March 16, 2010

More Clienty Goodness

Since I've posted last, I've released two versions of the Alter Aeon client, with a host of improvements and new functionality. A lot of this has been layout and theme changes, but there's also a more substantial newbie mode and other feature updates. I even managed to get a primitive mouseover compass working in the automap!

Here's a screenshot of what the new interface can do and looks like:

(Note - this is the X/FVWM/GTK version of the client, so the window decorations around the outside will look a bit different from the Windows version.)

We've got a lot of other improvements coming in later versions, but now it's time to get back to work on game mechanics.

Friday, January 8, 2010

Welcome to the new year!

Alter Aeon has survived yet another year, and while there have been a lot of ups and downs overall things are looking pretty positive. We've put a lot of work into making the game accessible, more playable, and more fun - and it's really starting to pay off. I've gone back to playing AA in my spare time for fun; that's something I haven't really done regularly in over a decade.

I've posted a very large '2009 year in review' article on the Alter Aeon Website. This took me several hours to put together, from both the postings here on this blog as well as going through the entire coding changelog for the last year.

Naturally, the things I found important and worth talking about come from a very biased, immortal based perspective. Fortunately, one of our more vocal players, Subtle, wrote up and posted his own player-centric year in review. I wish more mortals would do this; I think it's really cool to have a permanent record, even if it's not a feel-good propaganda piece.