Wednesday 17 January 2007

You find a scroll of Genocide titled "Pol Pot"

Amidst the news that Brian Eno is producing procedural music for Spore, I find myself a little worried.

When are we going to get our first procedural equivalent to the hot coffee mod? All it will take is a randomly generated in-game nipple or instrument which sounds like one of six banned words, and one offended parent, teenager (or younger) to record it.

How is the ESRB supposed to review content that hasn't been generated yet, and potentially may never be?

The title, for this article, by the way, comes from a mis-remembered discussion about inappropriate scroll titles. I thought this had been actually generated in game in Angband, but it appears that it wasn't.

Saturday 13 January 2007

An Interlude: What is Role-Playing?

My first post about classes vs skills seems to have drawn a lot of response from the rec.games.roguelike.development newsgroup. The responses seem to fall into two categories: those people who pretty much 'got it' straight-away, and those people who said 'no way' and objected in various ways. What felt quite nice, is that the list of people who 'got it' coincided nicely with my mental list of people whose opinions I respect a lot on other topics on the newsgroup.

I've just tried to summarise the arguments of those people who said 'no way'.

1. Classes and/or skills restrict what the player can do.
2. Classes and/or skills give the character bonuses to do certain things.
3. Classes and/or skills are a feature of (the genre of) RPGs.
4. Classes and/or skills allow me to role-play.
5. Classes and/or skills give me pleasure because I can tweak my character to reflect what I want.
6. Classes and/or skills are something other than what you're talking about.

Now none of them convince me. 1 feels wrong, and was the basis of my initial objections. 2 is probably the best argument
I've seen. 3 feels like they should be using the word 'convention' rather than feature. I don't have any problems with breaking conventions, and so this argument doesn't sway me. 4 and 5 have a tenuous connection to classes and skills at best, and I don't believe rely on an implementation of classes and skills. e.g its possible to role-play and tweak the character without implementing either classes or skills. I'll come back to the role-playing discussion a little bit later. 6 is an objection, but not a discussion I want to get into. I don't want to get involved in semantic arguments, and the articles I initially referred to didn't either.

I really want to focus on points 2 for the moment. Now I have absolutely no objection to giving the character incremental improvements. Its basically part of how gaming works: you get the player to overcome an obstacle, you give them a reward, you present a bigger obstacle. My objection to classes and skills on this point, is that the rewards are given meta-game rather than in-game. Consider how an experience point based skill system works.

Example A: You slay 50 ninjas. This gives you enough experience points to increase your stealth skill by 5 (or in a class based system, to increase your level). This gives you the Superstealth ability.

[I only want to discuss experience point based systems here, because practise based systems are a lot worse. I'll go into detail on that at a later date.]

However, in the above example, all the features of the system (except the 50 dead ninjas) take the player out of the game, into the meta-game e.g. rules about the game. This removes the player from immersion in the game, which breaks all sorts of continuity about game-flow and suspension of disbelief and so on. I'd rather present the Superstealth ability as an in-game reward.

Example B: You slay 50 ninjas. As you are about to slay the 51st ninja, he cries out 'I'll spare your life in return for teaching you our secrets.' If you do spare his life, he teaches you the Superstealth ability.

Now, this doesn't interrupt the meta-game nearly so much. You can even be smart and include the ninja teaching the abilities within the game. Some players may object to have in game characters discuss keyboards and buttons. But there are plenty of games, particularly console games, that have no problem providing the information this way. And what's more, this doesn't rely on any implementation of classes and/or skills. The ability is given directly, without mandating that certain types of characters have to have it, or that learning the ability detracts from an internal points pool somewhere that the player must spend.

This ties into what I want to discuss about role-playing as well (objection 4: classes and/or skills allow me to role-play). Now, a big part of my objection to the role-playing argument, is that I don't believe it is possible to role-play in a single player game, and that you are instead making a story up in your head. I don't disagree that this is still valid, but to me role-playing is about taking on a role and playing it. Its a performance art, and without an audience, you aren't actually role-playing. And a computer is not an audience. Sure, you can tell people the story later, but that's the point you start role-playing.

However, I'll humour you for the moment, and assume that it is possible to role-play in a single player environment. And that, to me suggests that, while you play you are going through the process of mentally translating example A above to example B. That is, you are justifying the meta-game experience point system, to yourself, as an in-game mechanic. In fact, if you are a *hard-core* role-player you actually do the following:

Example C: You slay 50 ninjas. This gives you enough experience points to increase your stealth skill by 5 (or in a class based system, to increase your level). In order to justify this in game, you hunt down a 51st ninja, and act out the training process of learning the Superstealth ability. The in-game mechanics don't support this very well, as the Ninja keeps trying to kill you, so you have to keep casting the Sleep spell during the 'training' and then cast a Flee spell on the Ninja at the end of this. Of course, this requires that you learn 'Sleep' and 'Flee' spells, which are not in character for you, but you justify these as allowing you to act out the performance of 'training' when you need to do so. This gives you the Superstealth ability.

Now, personally, I'm not *hard-core*. In fact, I'm not a role-player. I'm a gamer. But it seems to me, that a game that plays like example B, would support a role-player a lot better, than a game that plays like example A. And that is why I think classes and/or skill based systems actually prevent role-playing than help it.

Warriors - or things that go "Bump" in the night: part two.

If you're reading this from future to past, can I suggest you start with part one of this article.

Its possible to make 'bumping' a lot more interesting without having to resort to a full blown positional combat system. Consider the concept of charging. Charging is a single step, followed immediately by a bump in the same direction or 45 degrees adjacent. e.g. Stepping to the east, followed by a bump to either the east, north east or south east. Charging is useful, because it forces the player to move to take advantage of it. Otherwise, if a monster is one square away, it is often tactically smarter to stand still, and wait for it to come to you.

In Unangband, I made charging do a single blow with a high-damage multiplier based on the weight of the weapon: up to x12 possible with the heaviest weapon in the game. This compares to a character getting x4 to x6 blows per round of combat at maximum stats with the heaviest weapons limited to x4 and lighter weapons allowing x5 or x6 blows. So a character with the heaviest weapon can either charge for x12 damage or stand and wait for up to x4 damage.

This gives a character the following attack options:

1. Step to the monster, charge, step away, step into the monster again, charge etc.
2. Step to the monster, charge, change to a lighter weapon, continue to melee with the monster.
3. Stand still waiting for the monster to step in, attack without charging.

Note also that charging is compulsory. If the character is using a light weapon, charging disadvantages them, because they could potentially get more blows when not charging, than the bonus they get when charging. This is comparable to the disadvantage of trying to close against an enemy with a sword, when you have shorter weapon like a dagger.

Charging is beneficial because of the big advantage of having a first strike. Its also indirectly beneficial, because monsters can be frightened if they suffer a high enough damage a blow, and will flee. However, stepping away from a monster, will often make the monster follow you, which prevents you from being able to step into it to charge it again.

I have also made some monsters, identified as huge monsters, highly resistant to attacks which don't involve charging. Things like dragons and giants should be attacked by and be vulnerable to heavy weapons, and ignore puny light weapons. Coincidentally, I gave these huge monsters the ability to attack out to range 2, instead of just adjacent targets, so they will often not follow you if you step away from you, and instead choose to pound you from this moderate distance. This gives you the opportunity to charge back in, whilst still putting you at some risk.

I have implemented some positional ideas with the concepts of dodging and blocking. Dodging occurs automatically when you move in any direction, for the next turn. Similarly, blocking occurs automatically when you stand still and do nothing else, again just for the next turn.

Dodging acts similarly to the latency combat idea I mentioned earlier, but cheats slightly. Instead of attacks taking one turn to hit you, dodging gives you a percentage chance of monsters targetting the square you dodged from, as opposed to the square you are currently in. The benefits are the same: if you step sideways to the attacker, their projectile attacks will miss you, and their area effect attacks will only hit you with splash damage instead of hitting you full on.

Blocking gives you increased armour class, and doubles the effectiveness of your shield. Since shields are already twice as effective against ranged missile attacks in Unangband, blocking is highly effective against archery monsters, whereas dodging is highly effective against spell casting monsters.

The biggest problems I found with the implementation of dodging and blocking is the user interface. I wanted something on screen to give positive encouragement to the player, so I displayed a Dodging or Blocking status message. Unfortunately, because this flashed up whenever a character was moving or standing still, players correctly complained it was distracting. So instead, I ended up displaying a message whenever an attack was successfully blocked or dodged, with limited degrees of success. I still don't think I've got the user interface quite right on this one.

[Update] In the next part of this article, I've had a look at other ways of giving warriors more defensive options.

Friday 12 January 2007

Warriors - or things that go "Bump" in the night: part one.

The concept of 'bumping' in a roguelike, for those of you not familiar with the genre, is basically moving into anything that is not an empty space. Its the sort of concept that developers spend hours and hours sweating about in their game's user interface, discussing, arguing about and coming up with Star Trek analogies about. Its pretty much standard that bumping into a monster attacks the monster. Pretty much.

Warriors have it easy. All they have to do is bump into monsters. No complicated messing around with spells, or missile weapons, selecting targets at a distance or directions to fire. Warriors are probably the purest expression of what a roguelike is. Walk up to a monster and 'bump'. You hit the monster. - more - You have killed the monster. - more - You find the treasure. Warriors are roguelike purity.

Warriors have it hard. All they can do is bump into monsters. No safe messing around with spells, or missile weapons, selecting targets at a distance and directions to fire. Warriors are probably the purest expression of the problems with roguelikes. Walk up to a monster and 'bump'. You hit the monster. - more - You have killed the monster. - more - You find the treasure. Warriors are roguelike repetitiveness.

I've discussed a positional combat systems previously on rec.games.roguelike.development in a post here. I used the word tactical in that post for a reason: that I feel currently the depth of tactical options for warrior characters is limited. Bump or run. Sure, potions, scrolls, magic items make up for this tactical limitation, but they're available to everyone else as well.

I also think it is worth exploring the option of combat systems with latency. You make a move, but it doesn't take effect until the following round. If the monster you wanted to bump into moves, then your attack misses. Otherwise it hits. The same applies for ranged weapons, but they're slightly more interesting, because if you step forwards or backwards, you get hit, but stepping sideways takes you out of the path of the missile. And for spells with areas of effect, stepping in any direction reduces the damage, because you're no longer the target, you only take the splash damage.

This would result in a much more deterministic combat system, and one that would make it less a roguelike game and more like chess. Or something.

But what I want to discuss here is what Unangband does (and will be doing) to try to make warrior combat more interesting.

The first obvious choice is common to pretty much all Angband variants. There are magical weapons are branded to do extra damage from fire, cold, acid etc. and monsters that resist or are immune to these effects. Similarly, there are magical weapons of slaying that do extra damage to various races, and monsters can fall into one (or more) races that are vulnerable to these effects. Note that fire, cold and so on do extra damage to anything not resistant, but there are not monsters that suffer extra, extra damage from a particular elemental type. This is mostly a game balancing issue. It keeps it simpler for me to balance. If I want a monster easier to kill, I'll give it less hit points overall. Also, the extra damage is not cumulative. If an orc who isn't resistant to fire is hit by a weapon of slay orc and of fire, the weapon only gets the highest bonus damage, not cumulative. Again, this is a simplification for balance purposes.

Where Unangband differs, is that I have some complex algorithms that determine the power level for each monster, and sum the total power levels. Then I assess the relative vulnerabilities to each of the above attacks, alone and in combination, and give a relative weighting to each. I precompute all of this, for artifacts and ego-items, and create a table for magic items, which can only have one of the above special abilities when they are generated. I'm not smart enough to have come up with these myself: I'll have to credit Chris Robertson and Chris Carr who developed an improved randart patch for Angband did almost all the work here. But I do all the work to ensure that my weapons of fire and of darkness are balanced against each other. And so on.

This is because in Angband, there is a big weakness in that some brands are clearly better than other brands. Acid is better than fire or cold - lightning also. What's worse is that some effects supersede others. There's not much point with slay undead weapons, because all undead are vulnerable to fire. So a fire weapon will always trump a slay undead weapon of equivalent power. Similarly, almost all demons are vulnerable to cold, so cold weapons are always better than slay demon.

So I also inflicted some terrible puns on the roguelike community and mashed up the immunities a bit more. In Unangband, there are zombified dwarves, who are not only immune to fire but will use it against you. All the demons are immune to a lot more elements than they used to be. I'm not the first to do this, of course. Leon Marrick spent time in Sangband doing the same thing.

The next thing I have done is continue to steal ideas. Eytan Zweig who developed EyAngband came up with the concept of monsters being highly resistant or immune to blunt and sharp weapons. Its not a new idea, of course, but its done in such a way that a warrior using the wrong weapon is effectively waving a blunt stick at the monster with this attribute. You've got to be careful with this, to ensure that the player knows they're wasting their time, though. I hope I've got this right.

This encourages warriors to carry two types of weapons, a blunt one and a sharp one, and switch between them when situations demand it. In Unangband, ghosts and other insubstantial monsters are immune to blunt weapons, and rocky and metallic monsters are immune to sharp ones. This worked so well that I've got player's naming their character's weapons after the monster they're best against.

The reason I picked these particular monster types (in addition to this matching Sangband's model) is that often melee is the only way to fight these types of monsters. They often also have the ability to move through rock and earth, which means they can get to the character in any situation without presenting a ranged attack opportunity. The only option for a ranged specialist against these monsters is to wait for the monster to pop-out and make a ranged attack, and then counter-fire against the monster before it hides again.

The point I'm making here is that smart monster selection is critical to ensuring that warriors have a more interesting time. This then feeds into forcing to a greater or lesser degree paying attention to the types of monsters they're attacking, and consequences around the inventory selction so that they don't have a trivial biggest baddest axe choice to make.

[Update] I've posted a part 2, which will look more at what bump based combat changes I've made.

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.