Tuesday, September 20, 2011

Classes or Skills-thoughts from a roguelike designer

Here is an older, yet great post I found from a roguelike developer regarding one of the core arguments in RPG gaming. Whether pen and paper or electronic roguelike, I think the importance of the debate is the same regardless of medium.  So here some food for thought and an interesting resolution from the author. 

Friday, 12 January 2007


Skills vs Classes

I've been reading the debate on skills vs classes being revived again. Firstly, have a look at those blogs. They're an interesting read, and as a game developer myself, I've got a whole lot of sites to bookmark and go through.

I also feel qualified to comment on them. For the record, I have been developing a variant of Angband called Unangband since 1992. Its playable; feel free to download it from the links on angband.oook.cz or direct from the development website unangband.berlios.de.

My game falls firmly on the side of classes at the moment. However, I've learnt a lot from fellow Angband variant developers, and particularly feel in debt to the excellent coding and game-balancing of Leon Merrick who developed a skills-based Angband variant called Sangband, which I recommend you download and start playing immediately. Leon has stopped developing Sangband approximately a year ago. The last official version is that I can find hosted is here, however a more recent 'unofficial' version is available if you wish to track it down. So I'm not alien to skills, in fact, I suspect I may be implementing skills in a later version of my game.

I think the discussion around skills vs classes has been missing one very important point: if you implement a cool special ability, why should you be cutting out even 1 person in your player base from using it. Its an important point, particularly for developers who don't have large development budgets, which is what I presume the majority of people reading these articles represent. Valve, who are arguably have designed some of the best games ever, will put a huge amount of developer time to script in cool events that have happened accidentally during a playtest run through. If they put in that much attention to ensuring that everyone has the same cool experiences, surely I (and you) should be doing the same.

I'll use the concrete example of the backstab ability. This is an almost trite fantasy cliche: a thief character sneaks through the shadows up to an unsuspecting monster, pulls out a short blade and thrusts it between the enemies shoulder blades. With a gurgling shudder, the monster drops to the ground, its compatriots unaware of what has just happened.

Now most games will have some kind of routine for backstab that goes if class = thief and/or skill-check(backstab) is true and monster is asleep, apply massive damage multiplier (With no apologies to Sony). But in reality, this requires a whole lot more development work to support. In a recent discussion on rec.game.roguelike.development, for instance, I discovered that one of the competition to my roguelike implemented a line of sight dependent wake up routine, and a dungeon generation algorithm that designs the dungeon to have multiple routes to a monster, so its possible for the player to see a sleeping monster and find a path to the monster that has a minimal line of sight in order to maximise the chances of getting in the precious backstab that they have specialised in.

Now, to keep up with the Jonses, I potentially have to implement a CPU-intensive modification to my LOS algorithms, and completely rehash my dungeon design algorithms which I have just changed to ensure that I only have at most 1 connecting tunnel to each room. No way am I going to put in all that effort, just so one class specialist of the hundred or so class combinations I have in my game gets an infrequent damage multiplier.

So howabout I go through the following thought process instead. Screw classes and skills!

I want everyone who goes through the process of sneaking up on an unsuspecting monster and hits them in the back with a bladed weapon to get a massive damage multiplier. They've made the effort, they deserve the multiplier. Same with magic spells. If they've got some oil and a big red book of fire magic, and know that the monster they're fighting is vulnerable to fire, then they deserve an easy kill for covering the monster with oil and hitting it with a fire spell.

Instead, I should concentrate on things like how much of a bonus should back-stabbing give? What incentives should I be giving the player to switch to a small bladed weapon, when they have a perfectively good big brutal axe? How should I ensure that an critically injured monster can't call out to his friends, but a less critically injured one can alert them? How do I model the line of sight, AI and dungeon design/generation systems to allow a player to get to an unaware monster? What should the consequences be of the character getting caught red-handed? How far can a player throw oil and what's the splash range? If a monster catches fire, what does it do? If the player casts a fire spell, and has managed to get oil on himself, what are the consequences?

You'll probably have noticed something about the back-stabbing and fire spell examples. Each of the abilities requires a different equipment load out. Its a developer bias. Angband and their ilk are all about inventory management. But every MMORPG is also all about the loot you get from monster drops. And the good thing about a classless, skill-less system is that every drop is potentially useful to you. Not just the next-bright-shiny item for your class, which you have to spend forever looking for.

Note that I am not saying that every attack shouldn't require skill. But the skill and preferred attacks should be down to the human at the edge of the keyboard. And I'm not suggesting no levelling. Characters may still be able to level up - just a level 10 character should not be any better at backstabbing or casting spells or swinging a sword than any other level 10 character. Levelling up should be about better luck, or improved health, or something else accruable that gives the players a fighting chance against tougher monsters. Or if you have "skill-checks", make them a simple comparison against the characters level, rather than level * class progression or skill level.

Its something I've been moving towards in my variant but won't have the guts to do for some time, if ever. But I suspect it'll be incredibly liberating, and let me concentrate on the important stuff, which is implementing more cool features for the player, as opposed to any kind of min-maxing of different classes and races and nerfing of skill and class combinations.

So this is a clarion call against classes and skills, from a developer guilty of a little bit of both.
Post a Comment