Wednesday, 22 December 2010

Just had a quick look at the votes so far...

And we have a tie for first place.

Over 500 people voted last year, so make yours count...

Friday, 17 December 2010

Request for votes: Ascii Dreams Roguelike of the Year 2010

166 roguelikes were released this year... this is, again, a new record for the number to qualify for this competition, up from 99 the last year.

How did the roguelikes qualify?

The list was taken from the roguelike releases announced on the Rogue Basin news section between December 16th 2009 and December 16th 2010 and from the list of Actively Developing Roguelikes maintained by Michał Bieliński [Edit: My sincere apologies for the oversight. It used to be Jeff Lait].

What about 'x'?

Make sure you announced your roguelike on Rogue Basin for next year.

What about the 7 day roguelikes?

I decided to exclude any 7 day roguelikes that weren't announced separately. However, most of them were on Jeff Lait's list.

What's the prize?

Pride. And a sexy logo - if you want one. You can see the winning 2007 logo on the Dwarf Fortress links page. Other winners are free to request them, but haven't done so. Logo designs for this year are welcome.

Having a competition is a dumb idea/offensive/stupid when you can't police the results.

Yep. Doesn't stop it being fun. You can vote for multiple different roguelikes. The idea here is that you will be encouraged to go out and download a roguelike that other people consider interesting, not that there is any kind of real competition element involved.

Poll results for "How do you find high level play in Unangband?"; new poll

This poll has been around a little while - thanks to the 21 of you who voted:

Too easy; make it harder
0 (0%)
Just right thanks
0 (0%)
3 (14%)
Frustratingly hard
0 (0%)
1 (4%)
Haven't made it to high levels
12 (57%)
Haven't played Unangband
6 (28%)

Next poll; it's that time of year again.

"Sometimes it pays to stay in bed on Monday, rather than spending the rest of the week debugging Monday's code."

Of the Top 50 Programming quotes of all time, the above is the one that is the most true for me.

Unfortunately, this year appears to have been one long Monday...

Saturday, 11 December 2010

Rant mode on

As a loyal Mac customer, you have to put up with the digital equivalent of Steve Jobs urinating on you on a regular basis.

Case in point: I've just bought my wife an iPhone 4. I have always owned Mac laptops, instead of PC laptops but the last one I purchased, about 3 and a half years ago, is still running fine on Tiger.

The iPhone 4 cannot be used with Tiger. It can however be used with XP, which is the direct competitor's product, which has been around for 9 years, that is 5 years before OS X could run on Intel CPUs.

With my current iPhone 3G, I can't tether the phone in Tiger to use as a modem and I can't run Steam natively (but Wine runs absolutely fine and I was playing Counter Strike and Day of Defeat years before Steam play came out).

Cost to upgrade to the latest OS (were I interested in doing so): a third of the price of a new iPhone 4.

(Don't get me started on Linux. I'm still waiting for the operating system to actually do what an OS should: which is work flawlessly without me having to spend a single second thinking about it).

/rant off

Tuesday, 30 November 2010

The Quest for Quests: Part Eight (Enumeration 2)

You may want to start this series with part one, two, three, four, five, six or seven.

I would argue the primary function of failure in games is pedagogical: failure is used to demonstrate in a learning situation that you are approaching a problem in the wrong way - or simply lack sufficient ability in the skills required for play. This means we can draw from the large body of work when discussing failure in games.

In the pedagogical sense, there is no failure state while playing a game, except one where the player is unable to or discouraged from learning further - that is, switching the game off. The loss of a life, or permadeath in roguelikes, is merely a behavioural stick to go with the carrots of shiny lights and loud noises. Interestingly, research seems to indicate that dying in a first person shooter actually causes you to relax, which points to a model of tension while learning, relief when freed from the requirement to learn, that fits this learning-based argument. I find it helpful to break down pedagogical failures into two distinct types: failure to learn, where the player is unable to acquire the skills necessary to progress in the game; and failure to engage, where the player stops playing because they have no incentive to play further.

Note that failure to engage doesn't always simply result in switching the game off. Another possibility is that the player stops playing the game that the designer intended: by artificially limiting themselves by deciding that the some of the rules fall outside 'acceptable' or 'believable' behaviour. One example I am particular fond of resulted in the player feedback "I feel like I'm cheating". This is sufficiently different from vanilla failure to engage, because it can result from the player buying into the fiction of the game too much, but usually this results in elevated difficulty, rather than a failure in the strictest sense.

Cheating itself is an example of failure to engage. Cheat codes and 3rd party tools break down the magic circle of the game as designed, but still allow play - just not on the level playing field of the original design. In fact, both cheating and artificial honesty are sufficiently different from failure to engage in the game at all, that they are better termed 'failure to play by the rules' - whether those rules are underexploited, or ignored. If you think these two approaches should be separated out, consider the difficulty that experienced poker players have in playing with a complete neophyte: much of high level poker play is predicated on a mix of bluffing and rational behaviour that a player unfamiliar with the game will be unable to adopt and therefore can be as disruptive to play as someone cheating outright.

But there are clearly issues with failure that move beyond the framework of simply training and engaging the player. I've already discussed failure to win - where we agree within the magic circle of the game that one player has won, but another has lost, accompanied for the losers by some sense of psychological defeat and (in competitive games) lack of financial remuneration; and the failure of choice - where a game system is understood to the point where there are no non-trivial choices to be made.

There is the necessary condition of identifying as soon as possible that the game has entered an unwinnable state. The player may have lost items which are pre-requisites for puzzles later in the game, or lack sufficient resources in order to survive confrontation with the remaining enemies that they encounter. This is again a magic circle based argument, because the actual player experience may still be an enjoyable, learning-based experience, and the blame for the game continuing in this state doesn't fall squarely on the player - it is as much the responsibility of the designer to detect when a game should have ended. I'll label this type failure to finish.

Reloading a game from an earlier save is a type of failure: failure to honor outcomes, that is distinct enough from failure to play by the rules that it warrants its own category. A reload still plays within the game rules, but effectively the player is exploring all possible outcomes of those rules in order to get the preferable choice. The reload can on one level be seen as a cheat tool but a game supported one, in the same way that trying all your letters in a space in iPhone Scrabble to see what is accepted as a valid word is a way of cheating that is completely supported by the software. But it is also a way of constructing a preferred narrative, or merely an alternate one, that itself be construed as valid play - the roguelike Save Scummer takes this to a logical extreme.

Within the magic circle of the game, it is possible to see a thousand incremental failures - death through a thousand paper cuts of lost strategic units. The failure to honour outcomes is as much a way of playing the metagame of choosing which loses to accept within the game. The reaction of many players to a game like Fire Emblem shows that players strongly resist the idea of losing assets that they identify with. This suggests you should design the game so that assets are clearly disposable - by procedurally generating them, for instance. X-Com seems to strike the right balance: the soldiers are clearly expendable, but by naming them, it is possible for the player to begin to begin to identify with them should they survive for any length of time.

There is, through ambiguity, design failure or deliberate intent, the opportunity to create a 'failure to be consistent', which can occur both within the game rules - most commonly board games, and actual play. The masocore genre prizes this as a success rather than failure, and some game designers include deliberate rules ambiguity to make agreeing to the rules of play a fundamental part of the game itself. Likewise, the player can be their own arbitrary god: fair one minute, fickle the next.

Finally there is a failure best termed 'failure to have a sequel'. Games engage the player in a way that constructs not just a narrative within the game, but a whole metanarrative of conjecture, supposition, fan fiction, back stories, promotional material, web sites and wikis, both canon and non-canonical. Players are embedded in this larger narrative, choosing to accept or reject this additional material, but also construct it by the choices they make as they play the game. If a game is not financial successful enough to have a sequel, or the intellectual property becomes mired in complex legal entanglement, or even the direction chosen for the technical sequel does not match the player expectations, then this type of failure occurs. Games are unique though in the way that the player choices must also be honoured or ignored in the sequel: a few (Deus Ex: Invisible War, and Morrowind) are sophisticated enough to posit that all possible outcomes a player was capable of making, in fact occurred.

We move to another brief interlude in part nine, before pressing on towards our goal.

Friday, 26 November 2010

Two roguelike podcast mentions in as many weeks

Troy Goodfellow from Three Moves Ahead, discusses his comfort game... Dungeon Crawl.

Wednesday, 17 November 2010

One Life Respect

I've always maintained that roguelikes have a huge amount of goodwill from the wider gaming community.

Nethack was reviewed by Ste Curran in last week's episode of One Life Left - a formerly award winning UK radio show about games - and it manages to get a score of 7 out of 10, despite its age. Unfortunately, due to the postponement of this week's episode, we may never learn what Ste thinks of Angband...

Sunday, 31 October 2010

Thrown away

By way of a John Carmack blog post, I am reminded again of some pithy words by Joel Spolsky which people working on the pyAngband project would well take heed of...

As for the lack of blogging, I am in the full force of a terrifying Team Fortress 2 addiction. All my spare time and money is currently being spent acquiring name tags for items to prove how unrelentingly clever I am. Think of it as a 40 character twitter for the first person shooter.

A more regular service should hopefully resume at some point.

Monday, 4 October 2010

Reference footage for Hajo's isometric snake art

We've had to step over this guy to get out of the house the last couple of days. Unfortunately, that probably means he's sick or injured.

[Edit: He's fine. WIRES came over and moved him to the back garden for us. Link to donate. We did.]

Tuesday, 28 September 2010

Design ratios

Just a quick comment about user interface design and game programming after reading various comments on Unangband UI, Dwarf Fortress vs. Minecraft and Civilisation V.

I find that you need to spend about 3 to 5 times the amount of time and/or effort on explaining the features of the game, as implementing the features in the first place. This includes user interface design and documentation and is probably an underestimate for games in general, because I design most of the documentation to be generated rather than hand written.

Monday, 20 September 2010

Roguelike Release Day

I'm going to take advantage of a) the timezone difference in Australia, and b) the generosity of strangers to contribute very little to Roguelike Release Day a day late.

Please consider Hajo's Iso-unangband WIP4 to be the Unangband Roguelike release for this day.

You may want to check out the official page for Roguelike Release Day.

Sunday, 19 September 2010

Designing a Magic System Redux - Part Three (Magic Items)

You are encouraged to read parts one and two of this article series, and are strongly encouraged to read the original Designing a Magic System series of articles if you have not already done so. This article also incorporates most of the text from another blog post which you may want to refer to the comments of.

I've been working on adding items with multiple 'pvals' to Unangband, and this is probably the most wide ranging set of changes I've made to the code since I began developing.

In Angband-speak, a pval is the value associated with a particular magic item flag: the +3 in a ring of Strength +3. Angband and many variants only allow you to have one numeric value per item, which was also historically overloaded with additional meanings such as the number of charges a wand would have. I've separated out that meaning (there is now a separate charge value) - and I'm now in the process of allowing items with multiple different numeric values e.g. a ring of Strength (+3) and Size (+7).

I'm not the first variant to have done this: so I'm taking an approach similar to Sangband, where the pvals are represented by a small numeric array of values, and then the flags to which pvals can apply become a bit array. So you end up with a situation where you might have pval[1] which is +3, and pval_flag[1] which is Strength, which in combination mean Strength +3.

The alternative is to have an integer array equal to the size of the possible different flags: the example here would be pval[STRENGTH_INDEX]=3. This obviously uses up a lot more memory and storage for each item, but with modern computers, the performance impact would be negligible. I've chosen the Sangband approach as much as a design constraint as a technical constraint - I have a hunch that people will have problems comparing two items which have more than 7-10 different discrete numeric values.

I have made a decision which increases the amount of code I've had to alter but should make it simpler long term, by also making item abilities such as to-hit bonus and to-damage bonus, weight and armour class, included in the pval framework I'm developing. To make this clearer, I've retitled them avals, short for ability values. An item now has abilities, associated with avals and which vary over an integer range, and flags, which are either on or off.

One possible abuse of the ability to use Angband items in multiple ways is the ability to throw ammunition instead of shooting it from a bow or crossbow. Ammunition is light, which means you can carry a lot of it, and throwing it is 'abusive' because the damage bonus that is applied to firing ammunition is also applied to thrown ammunition, without penalty. This is exacerbated in Unangband because the damage bonus was until the latest version counted twice for thrown weapons and not multiplied by missile launchers, which meant that throwing an arrow (+9,+9) may be more effective than firing it from a longbow.

The damage bonus in this example is insensitive to it's context - it is applied equally when the item is thrown, set in a trap, or fired from a missile weapon. And if you think the ammunition example could in some way be construed as sensible, consider that the damage bonus a bow applies to arrows fired from it, would also be applied if you threw the bow instead.

At the moment, I'm changing this: damage bonuses will be able to be context sensitive - a weapon that adds damage while fighting, won't necessarily benefit shooting, but may, for example, benefit being used in a trap.

I have the flexibility to allow missile weapons with incredibly good trap damage but no shooting damage bonus, but it is unlikely that a player would ever choose such a weapon over a missile weapon with superior shooting damage and no benefit in traps. Whereas if the weapon was multi-functional, it is more possible the player will attempt to take advantage of 'free' additional functionality at some point. I can do either approach with the approximately same level of cleanliness in the code: it is a data design issue, rather than code overhead cost.

There is a separate but related question about worn vs. wielded items. If a sword improves your ability to fight with it, does it also improve your ability to fight with another weapon if you hold it in your off-hand or even just strap it to your body? In particular, if you get one more blow per round with it, do you get that blow if it would be from another weapon?

On consideration, there are two related ways of thinking about magic items: firstly, how the abilities (avals) accumulate if the character is using multiple items which have this ability, and secondly whether the player inherits the power (ability, flag) of the magic item at all.

The simplest example is weight: if a character picks up two objects, both of which have weight, how is the character's overall encumbrance affected? This example is seemingly straight forward: the weight of the two objects is added together to give the total encumbrance.

But what if we measured encumbrance as the sum of weight, plus volume, plus length, which may be a more realistic way to model how difficult it is an item to carry? It may be possible to stack the two items side by side, so that the length of the total isn't the sum of the longest axis of each of them. So even this simple example can be complicated through extrapolation.

Then there is the problem of accumulating numeric values. +3 to hit, and +6 to hit is seemingly straight forward (+9 to hit), but how does one item which gives 50% resistance to fire, add to another item which gives 33% resistance to fire? Should it be additive, so that the player gets 83% resistance to fire? Or multiplicative, so that the player gets 66% resistance (1- (1-.5) * (1-.33))? I am a big fan of geometrical progression for resistances - because they provide a big impact initially which tapers off, but is still useful when added together. In the most straight forward geometrical progression scheme, level 1 resistance gives 50% resistance (1/2), level 2 gives 66% resistance (2/3), level 3 gives 75% resistance (3/4) and so on.

This also depends how you model fire damage to start with. What does 50 hp fire damage actually mean? Is 100 hp fire damage twice as hot? In which case, if you are modeling resistance to fire damage as ability to tolerate a temperature range, someone with 50 resistance may be able to ignore 50 hp completely, but take 50 hp damage from a 100 hp attack.

Specific versus damage bonuses are another tricky component to balance. In Angband, weapons have the ability to slay particular types of monsters for double, triple or higher damage, or branded with an element which does additional damage from fire, cold and so on. The Angband approach is to use the highest multiplier, rather than add the multipliers together. This is simplifies the creature design process as the designer is free to create a creature which is a hybrid of e.g. dragon and undead, without having to worry about this creature taking more damage from the weapon which is effective against both dragons and undead than against creatures which are just either dragon or undead.

The same applies to brands, even though we could model a weapon with multiple brands as doing both extra extra fire damage (which creatures immune to fire ignore) and extra cold damage (which creatures immune to cold ignore). If we treat this weapon as doing extra damage from each element, instead of picking the highest multiplier, creatures which are neither immune to cold or fire would take both sets of damage, which would make weapons with multiple brands much more effective than weapons with multiple slays.

But should this 'highest multiplier' approach be used across multiple items where e.g. a character could have a weapon with a fire brand, and also a ring which imparts a fire brand to the weapon. If yes, then there is no benefit to specialising in fire-based equipment, while there are plenty of draw backs. If no, and the multipliers add together, you have to balance for the maximum per item multiplier is multiplied by the number of possible items that the player can gain benefit from at the same time. Be sure to come up with a good reason for being unable to wear a ring on each finger and toe, and pierced through any available flap of skin.

With the inheritance question, it is clear some abilities are straight forward: they should be applied to the player if the item is equipped (fire resistance), or only apply to the object in question (proof against destruction by fire). It is specifically the 'use the item in question to perform a task' abilities which are not so clear. Take the ability to increase the amount of damage the player does.

As I highlighted earlier, it makes no sense to have the bow's damage bonus apply to the weapon when throwing it. So to address this, damage gets separated into 'damage while shooting', 'damage while setting traps' and so on. These are simple enough to apply to the player: or are they?

The dual wield problem, when a character is using a sword in his primary hand, and a dagger in his secondary, show that this is not necessarily straight forward. Does the dagger's 'damage while fighting' apply to attacks with the sword? In all likelihood, not (If you disagree, replace damage with fire brand. Does the dagger's fire brand also brand blows from the sword?). So we have to consider 'damage while fighting' as a specific property of the item, which we add at the time the item is used, as opposed to inherited by the player.

But this means that the same item ability is used in two different ways: an amulet of 'damage while fighting' is inherited by the player, but a dagger of 'damage while fighting' is only applied when we use the dagger. In which case, it may be simpler for some items to have a straight 'damage bonus', which is used whenever the item is being used, but not inherited by the player at all, whereas other items have a specific 'damage while shooting' bonus, which applies only when the item is being fired.

(I'm going to complicate this by also having rings apply some abilities only to items wielded in the hand they are worn on. This will be the left-hand for shooting and secondary weapons, and the right-hand for primary weapons.)

In the part five, I'll look at how Unangband evaluates the relative power of magic items, taking into account the inheritance or non-inheritance of various flags while keeping the above issues in mind.

But first, in part four, I'll take another look at skill acquisition.

Friday, 17 September 2010

Review: Minecraft

A theatre lobby, filled with speakers whispering the most innovative advertising campaign in movie release history: 'What is the Minecraft?'"


The scene on the screen inside. Outside a hotel built from cubes of rock.

ZOMBIE LIEUTENANT: I sent two units. They're bringing her down now.

SKELETON SMITH: No, Lieutenant, your men are already dead.


As the ZOMBIE COP moves forward to cuff her, TIGDB kicks a shell which knocks him down and then double jumps onto the head of the second ZOMBIE COP. The camera pans as she rewinds time and jumps onto the head of a third ZOMBIE COP who explodes in a shower of coins. She throws a bomb which blows a hole in the wall, and shimmies down a rope outside it.

A chase ensues over a procedurally generated roof top.


NEO GEO is lying face down in front of his computer. On the screen appear the words 'Press play on tape. Loading...' He wakes up. The words are followed by 'Follow the white Lolcat...'

There is a knock at the door. He opens a copy of Raph Koster's The Theory of Fun and takes out a CD which he gives to the couple outside. He notices the girl has been skinned with a white Lolcat on her shoulder.


NEO GEO sitting in his cubicle, having signed for a Fed Ex package. He opens the parcel, inside is a cellular phone. As soon as he picks it up, it rings.

NEO GEO: Hello...?

DWARF FORTRESS: Hello, Neo Geo. Do you know who this is?

NEO GEO: Dwarf Fortress?

DWARF FORTRESS: Yes...I've been looking for you, Neo Geo. I don't know if you're ready to see what I want to show you, but unfortunately you and I have run out of time. They're coming for you, Neo Geo, and I don't know what they're going to do.

NEO GEO: Who's coming for me?

DWARF FORTRESS: Stand up and see for yourself.

NEO GEO looks and sees SKELETONs SMITH, BROWN and JONES entering the office.

NEO GEO: What the hell do they want from me?

DWARF FORTRESS: I don't know, but if you don't want to find out, I suggest you get out of there. The cubicle across from you is empty.

NEO GEO tunnels from cubicle to cubicle across the office and into a supply room. He is finally caught by the agents and interrogated.


He wakes up in his apartment, the phone ringing.

DWARF FORTRESS: This line is tapped, so I must be brief. They got to you first, but they're underestimated how important you are... If they knew what I know, you would probably be dead.

NEO GEO: What are you talking about? What is happening to me?

DWARF FORTRESS: You are The Toady One, Neo Geo. You see, you may have spent the last few years of your life looking for me, but I've spent my entire life looking for you. Now do you still want to meet?


NEO GEO under a bridge when a car pulls up.

TIGDB: Get in.

NEO GEO gets into the car, as the driver, a blond woman named Witch, turns around in her seat and points a gun at him.

NEO GEO: What the hell is this?

TIGDB: It's necessary, Neo. For our protection.

NEO GEO: From what?

WITCH: Listen to me, Voxeltop. We don't have time for twenty questions.


DWARF FORTRESS: Do you know what I'm talking about?

NEO GEO: The Minecraft?

DWARF FORTRESS: The Minecraft is everywhere. It's all around us, even in this very room. Unfortunately, no one can be... told what the Minecraft have to see it for yourself.

DWARF FORTRESS opens a chest which holds two pills : a blue one, and a red one. He puts one in each hand, and holds them out to NEO GEO. NEO GEO swallows the red pill. As NEO GEO looks at a mirror, its reflective surface starts moving up his hand, revealing specular highlights and a bump mapping that previously didn't exist. The bright colours run into a phong shaded muddy brown with diffuse shadow maps and an unnatural shiny surface. He passes out and wakes with DWARF FORTRESS standing over him.

DWARF FORTRESS: Welcome... to the Unreal engine. You believe that it is the year 1990, when in fact it's closer to 1999. I can't tell you exactly what year it is, because we honestly don't know. Come with me, see for yourself.

NEO GEO follows DWARF FORTRESS through the door.

DWARF FORTRESS: This is my ship, the Left4Dead2zer... Most of my crew, you already know.

TIGDB nods and smiles

DWARF FORTRESS: This is Hunter, Witch, and Smoker. The ones you don't know, Tank, and his big brother, Boomer... The little one behind you is Jockey.


DWARF FORTRESS: the texels of Unreal...We have only bits and pieces of information, but what we know for certain is that some point in the early twenty-first century all of mankind was united in online gaming. We marvelled at our own magnificence as we gave V.E.

NEO GEO: V.E. - you mean Voxel Engines?


NEO GEO and DWARF FORTRESS fighting in a dojo.

NEO GEO hits DWARF FORTRESS in the shoulder and severs an artery.
DWARF FORTRESS hits DWARF FORTRESS in the knee and breaks a bone.

DWARF FORTRESS: Do you believe that my being stronger or faster has anything to do with my muscles in this place? You think that's 0x02 you're breathing now?

NEO GEO throws a coin at DWARF FORTRESS and severs his head.


NEO GEO looking at racks of weapons.

NEO GEO: The twelve gauge pump 3dfx Voodoo Extreme. The .45 Matrox G200 with laser sighting.

GUNSTORE OWNER: Those are brand new, we just got them in.

NEO GEO: A quad core Radeon HD 5970 in a dual SLI configuration.

GUNSTORE OWNER: Hey just what you see pal.


A hotel lobby, the pillars of which are getting blown apart as TIGDB and NEO GEO kill security guards rushing to stop them.


NEO GEO sinking to the ground, shot. His eyes snap open again and he stands up slowly. NEO GEO looks at SKELETON SMITH, and runs towards him. He appears to go inside SKELETON SMITH's body, eventually bursting through his skin, as pieces of the agent fly all over the room. For a moment, we see the room as it is through Neo's eyes now, 2D ASCII code.

Sunday, 12 September 2010


I try to use the reviews at ASCII Dreams as writing experiments: from fiction writing, to New Games Journalism, to advocacy for games which I feel have been overlooked (good and bad). I started wanting to say something about Arma II, but ended up with a completely vanilla, and somewhat negative review. But luckily, I'd also been thinking about the similarities in design between Arma II and S.T.A.L.K.E.R. - particularly the visual design and I suspect common texture assets - and how it would be great to play S.T.A.L.K.E.R. in the Arma II engine (or at least a sequel to the original) which has the open world capabilities that GSC were never able to achieve.

That is why my A.R.M.A. II review ended up as a mash up of what I originally wrote, interleaved with paragraphs from an earlier S.T.A.L.K.E.R. review. To underline the point - and give you a chance to figure out what was going on before I did the reveal here - I've shamelessly interleaved the majority of the Eurogamer reviews of Half Life 2, and Grand Theft Auto: San Andreas to review another great mash up Half Life 2: San Andreas. (This second review also highlights the amount of interchangeable discussion about the hype each game warranted at the time which the reviewer felt they had to address).

Unlike other mashup culture, game mashups are unlikely to occur, unless officially sanctioned, because combining the disparate underlying technology is a much harder feat than remixing a song, or interleaving two strands of literature. The best known game mashup combines the rules, characters, art and level design of multiple different 2D games in a new game engine: 3D engines are more complex because of the need to decompile the 3D level which may incorporate textures, bump maps, lighting, collision and physics geometry, navigation meshes and scripting which may be implemented differently between engines. It is possible that a seam or gap in one 3D engine may be unimportant but might result in characters falling through the floor of the world in another engine. Similarly a 3D map - or even objects like guns in the HUD - may only contain geometry visible from locations that can be accessed when traversed using the rules which limit movement in that game; when accessed by an avatar which can move more freely, the map may fall apart like a Hollywood set.

Open worlds pose the additional challenge of bespoke map design: there is no common 3D standard for maps of the scale and streaming speed required of a particular world, whereas the BSP levels in Half-Life or static meshes of Unreal 3 may be interchangeable between games. It may be possible to virtualize the game in such a way that the video card representation of the level could be imported into another game to avoid having to build a custom import tool for the map itself: this would involve virtually mapping out the scene graph in the same way that special effects artists map out the geometry of the real world in order to digitize it.

The abstraction of games into engine, data and scripts (using common script languages like Lua) point to another possibility which has not been explored as much: importing the game data into another engine or rule set. Unangband's monster list consists in part of monsters invented in other Angband variants and then pulled across and reshaped to fit the Unangband game world.

Amateur enthusiasts are also prepared to spend significant amounts of time reimplementing older games in newer engines, but this is more to preserve the fidelity of the older game to keep up with the sensibilities of modern gamers than to mash up two games into a third. Open source reimplementations of games like FreeCiv allow different rule sets, to allow mashing up a game with it's sequels, but little beyond that. And fan fiction-like appropriation of one game into another, notably Little Big Planet's level's derived from Mario, Metroid and elsewhere, point to another possibility: user generated content allowing mimicry of multiple older games in a newer space. Think a Second Life world which has the island of Morrowind offshore from Liberty City.

What games would you like to see mashed up this way? Feel free to contribute a 'fake' review if you want. My inspiration for these particular mashups grew from playing both games at around the same time, and letting the ideas peculate and pollinate between the two in my mind. What games are you playing together at the moment?

Review: Half Life 2: San Andreas

At a time like this when you've got a game with such massive expectations heaped upon it, it's almost futile trying to offer anything but the most positive comments you can possibly come up with. With Half Life 2: San Andreas, where we've been fed more pre-release information and preview opportunities than just about any game in history, it seemed impossible that the game couldn't be anything other than absolute mind blowing genius. Everything we'd seen, read and heard spelt out that this was a title so far ahead of the sorry pretenders that there simply could be no other game out there worth playing. The game of the generation. The game to end all games. Technically advanced, bigger, better, even more controversial. But you all know how it works. They would say that wouldn't they? The first commandment in the law of games is 'Thou shalt hype'.

At this point the Internet is quite possibly melting as hundreds of thousands of devotees all around the world simultaneously stress Valve's servers to breaking point. We haven't seen the likes of it. It's truly a momentous, agonising wait as we cross fingers and toes that Valve hasn't screwed up and underestimated demand; we were fearful, but like something approaching the Space Shuttle launches of our youth over two decades past, we have lift off.

But it was not always like this. Half-Life slipped out to zero fanfare, and worried PR types pleaded with journalists to not mention the violent aspects of the game, lest the British tabloids pick up on it and demand to have this 'sick filth' banned (only three years late, eh?). Even Opposing Forces emerged a healthy shade of pink, with a mere handful of screenshots to tease us with in the run up to release. The same deal with Blue Shift. And then suddenly Valve decided to go from one extreme to the other, literally bombarding our mail box with new shots, exhaustive documents going into meticulous detail about the various new features that have been shoehorned into the game. Then followed three preview events, but yet not one opportunity to wrestle the joypad off them; and no opportunity to review the game until the finished boxed copy was finally delivered just three days ago. It was akin to a starving man being forced to watch a culinary dish being prepared, cooked, tasted and savoured in front of him. "Look, smell, but don't taste. We'll give it to you when we're good and ready." Oh the agony.

But not everyone has such a smooth, seamless ride. As we rocket into the stratosphere we can just about make out the crimson faces of those left behind, venting furious, jealous, indignant anger at Valve for managing to mess up their dream journey, furious that even retail boxed copies fail to authenticate. It's a moot point, and a discussion that's still raging.

Somehow we preferred the enigmatic media blackout of old. Leave the surprises to be discovered. Let the word of mouth spread the game's gospel. That's how the last two worked; did Valve really need to go to such lengths to effectively spoil a lot of the game's surprises? The game could have hit the shelves today with zero advertising and no reviews and still sold out. It's that type of game. The less we know about it, the more we want to find out what's in there. The pre-release media splurge was a novelty; we thirsted for every morsel to begin with. Of course we did. Everyone did. Towards the end of the campaign, though, we actually couldn't believe quite how much Valve was prepared to spill and we politely declined to attend the final preview event for fear of spoiling it for ourselves, never mind everyone else. The very charm of the Half-Life games was the element of surprise; the exploration factor. Ringing your mates up excitedly reporting on your progress and all the craziness you've come across. Comparing notes. Playing through San Andreas did reveal a few surprises, nevertheless. It's that sort of game. You could write an entire book on the game and still only find yourself skimming over certain elements of it.

But after the roar of take off, a serene silence gives way. The G-Man looms large and loud and it takes somewhere in the region of two seconds to realise what all the fuss is about. Another stylish intro. A quickening of pulse, a shallowing of breath. A downtrodden yet magisterial air as another commuter journey begins. An atmosphere to savour. An oppressive beginning that gives a small taster of what we're about to experience; a world we have been trying hard to imagine for months, years. Blocking it out of our minds, trying not to spoil it for ourselves, yet filling time and column inches with games barely even worthy of the name, rushed out into the market only to let us down and chip away at our eternally optimistic resolve. Valve's approach was different. Valve's purpose was to take things forward whatever it took, however much it cost, and seemingly no matter how many people it pissed off along the way. And now the future is here.

But we're not here to exhaustively run through the myriad of things you can do in the game, but more whether they're actually fun and whether the game's really what it's cracked up to be. The first thing that cannot be overstated is that Valve really weren't making it up when they said it was a big game. It positively redefines the concept of what constitutes an epic game. There is absolutely no question that San Andreas is in the region of twice as big as previous Half-Lifes. Maybe even three times, depending on what lengths you'll go to. To even work your way through half of the missions alone would take more time than it would normally take to finish two average sized action-adventures. In value for money terms it's hard to imagine another game like it.

If Half-Life 2: San Andreas achieves one single thing, it's to put into sharp focus how far gaming has come, and more specifically how far behind some of its competitors in the FPS genre really are. Some doubted that the Source engine could match the technical brilliance elsewhere, but it has not only surpassed anyone else's achievements, it has done so without forcing people to invest in ludicrously expensive hardware. Reports persist from amazed gamers with mid-range set ups that have been blown away by how well the game runs on their systems. That Half Life 2: San Andreas looks more convincing, more understated, more realistic, more interactive and definitely more stylish than its peers yet manages it with far lower overheads is not only an impressive feat, but commercially a masterstroke. Not letting a fair chunk of your loyal customer base play the game because your content delivery system can't cope, however, isn't - although some would argue that the fact that a hacked version of the game didn't appear until day of release meant that the ends were worth the means. To an extent we'd have to agree; how much more money was earned as a result of slowing down the hackers we'll never know; but a hunch says it's a lot.

Pile on the extras and it's almost too much to comprehend. Pimping missions, Trucking, Driving school, Ammu-Nation challenges, Dating, Territory occupations, and more join the usual distractions on offer such as Taxi driving, Vigilante, Ambulance, Fire fighting and the ongoing quest to find hidden items; in San Andreas' case they're not as prevalent as you'd expect, but seek and you shall find.

But we don't want to get bogged down in the relative merits of Steam, the shoddy packaging of the boxed version or any of the periphery issues that have clouded this momentous launch (the forum's choked with enough vitriolic bile to melt Gabe Newell's face as it is). We're here to talk about the game. And what a game. 14 chapters, 18 or more hours (skill/approach dependent) of almost relentless, fat free entertainment that's the gaming equivalent of watching several blockbuster action movies back to back. If this game isn't worth the asking price, we don't know what is.

As veterans of previous campaigns it's easy to come to hasty conclusions about San Andreas. Your expectations really don't help. What we perhaps expected was more of the same. Much more of the same, with tweaks, technical improvements and the benefit of an entirely contrasting set of scenarios, characters and, naturally for a game set in 1992, the soundtrack. What you don't expect or even particularly acknowledge at the time is how the game lurches dramatically in different directions, often throwing you completely off balance into the bargain, and not always in a positive sense.

Sometimes we like to utter a few sentences on the back story to give you a flavour of what to expect, but Valve being Valve has elected to keep things as enigmatic as possible. It's not possible to know this by just playing the game (and there's no manual anyway), but apparently the game takes place 15 years after the Black Mesa incident. No one knows (or even hints) what has happened in the intervening years, or why you're on your way to City 17, or what role you're supposed to perform once you get there. Suffice to say it's a grand city under an oppressive police state rule, with scary looking Tazer wielding-grunts (known as the Combine) armed to the teeth should anyone step out of line. It's part Big Brother, part Matrix with Eastern European architecture lending the setting an impossibly beautiful backdrop almost totally at odds with the climate of fear that perpetually pervades the environment.

You start out, of course, in Los Santos as Carl Johnson - a twentysomething former Grove Street gang member returning to a less than enthusiastic welcome after five years in Liberty City exile. Soon it becomes apparent the game's much less of a clichéd Half-Life; it's about a low-down bum working his way up the crime tree, and far more focused on the ins and outs of gang culture, the relationships between the 'family' and restoring the gang pride of old. Soon, of course, stamping your authority on the immediate vicinity and taking out frustrations on the rival Ballas gang becomes the priority.

Although this is 'the future' we're dealing with, it's a more realistic vision of the future, blending the more pleasing elements of the architecture of past with the cold sky scraping steel monoliths of the future. This isn't A.N.Other Blade Runner rip off, with neon skylines and hover vehicles. It's something distinctly fresh, and believable, all rendered with craft, life, logic and intelligence. If the devil is in the detail, then Half-Life 2 is Satan in a party hat, kicking back with a beer and engaging his fiendish accomplices in a toast to the future. Cheers.

Ruling Los Santos proves to be an early highlight, and immediately sets the game apart from the other Half-Lifes by virtue of its focus on dialogue, narrative and constantly going that extra mile to set the scene - not just via the between-mission cut-scenes, but through regular colourful exchanges as you're driving, and all manner of banter during each mission. As a cinematic experience it goes to inordinate lengths to get things right, with a quite staggering attention to detail providing endless opportunities to truly immerse the player in a convincing environment where every character, every pedestrian feels as part of the day to day life as you are. Check out the huge roll call for the pedestrian voice actors to see the crazy lengths Valve has gone to make sure the ambience of the environment matches up to the quality on show elsewhere.

The moment you start wandering the game's first locations a feeling of arriving somewhere special kicks in and barely lets go until the credits roll 13 chapters later. As if to deliver a cheeky nod about being in a new playground, Valve even drops one in the game's opening location, almost entirely pointlessly, other than to remind us all that's what this is all about. It's not about re-inventing the wheel, but pimping up that wheel with spinning hubcaps, bass boxes, neon strips and gadgets that would humble even Bond himself.

Once again the voice acting and radio stations are simply incomparable to any other game out there. If anything, the musical variety is even greater than before, drawing on a greater diversity of genres, ramping up the DJ humour to almost genius levels of parody and providing an excellent template for the game that no other game has yet to come anywhere near close to matching. Even after 40, 50 hours, you're still hearing fragments of dialogue, spoof adverts and songs that you've somehow never heard. It's the sort of thing you'd be happy to pay money for on its own; that it's such a throwaway part of the game just goes to show how far Valve is willing to run with this excellent concept. Sure, the music won't always be to your taste, but somehow in the context of what you're doing it all fits, so you don't mind while the truly cringeworthy "All My Exes Live In Texas" or "Queen Of Hearts" play for the third time that evening, or, if you do, flicking to another of the ten stations is but a mere D-pad nudge away.

But Freeman is no double-O. If anything, he's the most personality-free zone in the history of gaming. Once again he never speaks, you never see him (not even so much as a reflection) yet everyone greets him like the ultimate living legend. Not bad for a "man of few words". If he ever uttered a thing our hearts would probably stop with the shock, but somehow the game gets away with pulling the same silent narrative trick of the original, engaging you this time with characters of far greater emotional depth than any FPS has dared to venture. All of this comes, as the original pioneered so successfully, from a combination of scripted set pieces that you watch silently unfold and various events that kick off with your arrival. By necessity and by design it's another story-lead on-rails shooter, and can only stray outside of those barriers to a minimal extent. To some this may come as a slight disappointment when it transpires that there is generally only one way to solve whatever your current dilemma is, but where Half-Life 2: San Andreas succeeds beyond any doubt is in its ability to consistently and repeatedly create richly diverse and believable environments that enrapture the play experience with a suspension of disbelief that makes the thrill ride just as enjoyable as we expected to be.

And as if the pedestrian voices and DJ scripts aren't enough, you get hit by the likes of Samuel L Jackson and Chris Penn making you realise just how good and how compelling gaming narrative can be when you're prepared to hire the right talent for the right price. The constant swearing might not be to everyone's taste, but when you've got a Valve game about hardcore gangsters, what does the audience really expect? In truth, some of it does veer a little into the realms of shock for the sake of it, and the way certain characters flit in and out of the storyline doesn't always make for a coherent, logical plotline, but for the most part they're enjoyable, amusing, and energetic, and a lesson to many publishers as to not only use as a plot device, but for pure entertainment and reward for the efforts you've put into playing some often intensely challenging missions.

Just like any game there are high points and low points, but when you bask in the warm glow of completion there are so many high points to recall it seems almost pointlessly pig-headed to find serious fault with what you've just experienced. If you can seriously come away from Half-Life 2: San Andreas disappointed, then ask yourself which first-person shooter is better, and why? For the vast majority of us, the overwhelming emotion will be the pure joy of having experienced something that sets new high marks in so many areas as to reaffirm your belief in the ability of game developers to push things forward.

Review written with edits under fair use provisions. Please refer to here and here for original material.

Review: A.R.M.A. II

It turns out, ten hours into Arma II, that everything great about the single player campaign I've experienced so far can be found in the demo, as well as most of the terrible parts. The terrible parts almost entirely consist of attempts to script parts of the game engine - hilarious scenes where you are liberated from capture, but your guards don't react to the flash bang attack and silenced bullets to the head until their walking animations finish playing some ten seconds later; or you encountered villagers on the road arguing about the invasion and then drive through them like a ten pin strike on your return.

And this attachment to your fellow stalkers forms early in the game, possibly at the first encampment, where other loners gather on the edge of the Zone, unsure of whether they'll move inside or stay here as outsiders. The black marketeer you start out getting missions from seems less enamoured of humanity: he points out the in-game stalker rankings and suggests you can work yourself the way up the list, perhaps by shortening it a little. He gives you assassination missions - I accepted the first, and then didn't have the guts to go through with what seemed the pointless murder of one man among many.

The great parts involve pointing your sighting reticule at a ten pixel high man a kilometer away and clicking the mouse button to make the clump of pixels fall over. It is impossible to describe how rewarding this experience this is without including the Herculean effort required to get to this point: the monotony, the battle with the overburdened control scheme (which makes perfect sense and is easy to use once you master it), the graphical and AI glitches, the lack of foreshadowing which allows you to blunder into the enemy and spend the entire firefight writhing on the ground in a pool of blood, the poor check pointing and game design which makes you wonder if you're doing the sensible thing at all. Arma II highlights the importance of authorial intent in games: not in the sense of a scripted roller coaster providing a guaranteed quotient of fun, but in the sense of 'am I doing the right thing traveling 15 real world minutes in this direction or am I just wasting my time?'. Ironically, for a game which needs this direction more than most, there is an incredible paucity of walkthroughs and FAQs on the Internet.

What keeps you attached is the relentless and inhospitable nature of the zone. The mutated beasts that roam it, and the anomalies that sparkle in the twilight. Existence is fragile here. And the world is alive and continuously changing. If you confront the pack of blind dogs, they're as likely to surround and savage you - no matter how powerful the punch your automatic weapons pack. But if you leave them alone, you'll come back to find them chewing on the body of a fellow traveller. And when you find a scoped rifle, you can watch the pack sit and play in the distance, animals to the end. Guilt grows until every encounter becomes a mess of indecision.

The first five seconds of any time you move is also great: the incredible fidelity with which your interaction with the environment around you, crawling through grass, peering around a corner, running to cover, the squeak of your rubber boots as you start a forced march, the way the grit and dust accumulates on your wind shield. The problem is the 15 minutes following those first five seconds during which you continue to crawl forward, run in a straight line, drive while staring out the tiny view port of a LAV-25, the blur of Eastern European villages and fields and meadows and forests. Especially if it's the indeterminate wait while you lie bleeding out, while the bodies of those colleagues trying to heal you accumulate around you. If this is an accurate simulation of war, then it must be even more terrifying than I suspected.

I avoided the bandits who shot at me unprovoked and bypassed the military under the bridge while they engaged in a fire fight elsewhere - but murdered my way through a checkpoint into the second zone area. I had to progress; and there seemed no other way. Then a distress call: some of my fellow stalkers were in trouble in a junkyard. A bloody and messy close encounter in which, submachine gun ammo depleted, I had to engaged point blank with a sawn off shot gun and pistol. The grass became strewn with bodies between the wreckage of old cars. I was angry that I'd been forced to this pointless existence.

Arma II has one innovation that makes it stand head and shoulders above any other open world game: you can get someone else to do the driving. Bring up the map, press space bar and click, and (provided you've marshaled everyone into the vehicle correctly) your driver will execute a ten point turn and then smoothly drive you to your destination.

One of the bandits lay dying, groaning, cursing. I aimed down the pistol at him. Damn you for this. And shot him, unblinking.

(Based on others experiences of the game, I wouldn't trust a pilot to do the same).

It wasn't until later, presented with this option again, I reconsidered. Did everyone have to die? Everyone has a name here. A roll-call of stalkers, bandits, people, some suggestive of a history, a physical defect. It shows you the name when you loot the body, to remind you, under the gun sight when you aim. I looked down the barrell of my much improved rifle at the mercenary clutching at his guts.

Arma II is a awe inspiring accomplishment of a game; but one which needs the camaraderie of multiplayer, the tyranny of others to share your miserable, muddying experience on the battlefield. Find yourself a real person to walk you through the learning curve, in the same way that you could shyly sneak down to the local game hobby shop to learn how to push around miniature armies on hexagonal paper. Read Tactical Gaming Done Right to get excited about it, then reach out to some military simulation grognards.

The enemies: When you find an injured enemy, you are not given a choice. You cannot talk to him, heal him, help him in any way. If you walk away, he'll die. You can't loot the body while he's alive. It becomes a trade-off. Guilt, as the blood spatters and the body twitches and rolls. No one carries much here: vodka, some sausage, anti-radiation drugs. The price of a life. But if you walk away, his cries follow you, pleading, angry, alone.


Friday, 10 September 2010


Despite my attempts to dissuade him, Hajo appears to be insisting on doing an isometric graphics version of Unangband. This will be a much improved version of the experimental Windows code I had previously included. You can follow the thread at

Wednesday, 1 September 2010

Proceduralism: Part Five (Perspectives)

[You'll probably want to read the original article series that inspired this follow up, then start with parts one, two, three and four of this series.]

It is easy to conflate procedural content generation with sandbox play and emergence where these should be seen as three separate properties which often coincide in games which feature procedural content generation. If you consider an actual sandbox by way of analogy, a game without procedural content generation is like coming to a sandbox every day that has been raked over and smoothed out. With procedural content generation, you instead find the sand furloughed and heaped in piles in a way that may or may not be randomly distributed but is different every day. (Emergence in this example is having the castles you build fall over when they get too high).

In this procedural sandbox, you may choose to ignore what you find and start over, ascribe the distribution of sand to a preexisting external agency (the actions of the last kid to play in the box yesterday, an earthquake overnight) or invest in an imaginative world building exercise to justify what you find. The concept of repeated play is also important: the first time you come to the sandbox, it is not clear whether the sand is heaped just so because someone intended it that way, or from a process with no underlying intent.

It is the storytelling component of this example which highlights for me the importance of perspective in procedural content generation. When we tell stories, we do so most effectively when we put ourselves in the shoes of someone in that story, which is why games with a single avatar feel more procedural than games with multiple units. The concept of authorship could also explain the procedural uncanny effect I noted: we are building up the concept of a single author providing this story, and in the high fidelity example, anything that dispels your suspension of disbelief also damages your construction of the author behind the story.

The authorship conceit is not the only explanation for the uncanny valley effect: it may be low fidelity play engages us on a more childish level, but high fidelity play corresponds to our inner adult. It would be interesting to rerun this Neverwinter Nights scenario with a child playing the game rather than an adult and see if the reactions are similar.

But I don't think the attraction of procedural generation is solely about forcing us to make up stories. Stories also have a function which is to present a series of what-ifs. And you don't have to invest in an underlying narrative to react to what-ifs in game play. You have to engage your inner explorer.

In part six, I look at building worlds to explore.

Friday, 27 August 2010

My drunken night with Charles Stross

Pro tip: India Pale Ale.*

(* I would like to thank Charlie and Feorag for being incredibly generous with their time especially at the excruciatingly embarrassing part when I tried to show him something I had written. Also everyone else who attended and had to put up with me interrupting his anecdotes. And I owe someone else whose name I missed a round...)

Sunday, 22 August 2010

Proceduralism: Part Four (What is Interesting?)

[You'll probably want to read the original article series that inspired this follow up, then start with parts one, two and three of this series.]

There are four different strategies for discovering interesting procedural content. These are not exclusive - I can see solutions which blend several approaches being viable.

1. Simulation

We know the real world is interesting - or at least that we are adapted to finding the interesting bits of it. Therefore, by making our procedural generation processes have higher fidelity to real world processes, we guarantee that we'll make more interesting content. Game example: Dwarf Fortress

2. AI Directed

We create a process that determines whether content qualifies as interesting - ideally by simulating human intelligence in some way. We then generate or cull the content using this simulation to ensure it qualifies as interesting. Game example: AI Director in Left4Dead

3. Human Computing

We already have a process that determines whether content is interesting: the player. We therefore harness the player to allow them to choose which content is interesting. This encapsulates a range of strategies: from allowing the player to progress faster through uninteresting content and slowing their progress through interesting content (Game examples: Angband, Crawl), by allowing labeling of interesting content for other players (Game example: Noctis) or by using procedurally powered tools to let the player create user generated content (UGC) for other players (Game example: Spore).

4. Intuitive

We are not very good at distinguishing truly interesting content from random content which fulfills certain criteria (bright lights, loud noises, random rewards). As long as we create content which is sufficiently interesting, perhaps mixed with some complete randomness, we will not be able to distinguish it from content which is more interesting - there is a threshold above which differences in 'interesting-ness' is not perceptible. Therefore it is sufficient for a game designer to choose one or more procedural content generation techniques to use, and tune the parameters by 'staring at the screen saver' and finding values which define consistently interesting content. This is currently the most common form of PCG development.

All four approaches rely on the unproven assumption that there is a level of complexity beyond which people cannot distinguish a procedurally generated system from a human designed system. This is a frequent criticism of procedural content generation: that it is too easy to find something in a procedurally generated system which would clearly not exist if a human had created it. This differs from the intuitive threshold, above, in that it is possible to have interesting, but clearly not human designed content.

Note this is only a problem if computer created content is valued less than content with direct human authorship. I believe there are two approaches to procedural content generation which can help address this: low fidelity and high fidelity. These both come from the idea that people dislike computer generated content for much the same reason that they dislike facsimiles of people - the uncanny valley, but for all procedural content, not just people.

Low fidelity content is content which is clearly distinguishable as artificial: chip tunes, Minecraft maps and pixel and ASCII art. Low fidelity content doesn't trigger the procedural uncanny valley because it is so dissimilar to anything in nature and therefore non-threatening.

High fidelity content on the other hand needs to be indistinguishable from human authored content. High fidelity content doesn't necessarily have to be realistic: it just has to match the conventions of the genre and form - which for games are luckily much lower than other media.

Aside from the expense and complexity of developing it, one significant problem with high fidelity content is that if it is revealed as having artificial origins, the content consumer is likely to experience a significant shift in their perception in how the content functions. The recent criticism of Starcraft 2's narrative highlights the concerns of manipulation of the world to match narrative in a similar way. More importantly, the problems getting high fidelity procedurally generated music accepted in a field dominated by real people point to a longer term resistance to high fidelity solutions. In short, if it looks like a person wrote it, and it turns out a procedural algorithm did instead, a significant percentage of people will feel somehow betrayed.

There is one other significant pay off with the combination of testing for interesting procedural content: it doesn't just allow us to develop better content, it also allows you to determine with high precision what exactly 'interesting' is. This is the most exciting area of research for procedural content generation: once you have a procedural system set up, you can can vary the parameters and measure how this variation affects your test candidates, be they humans or AI programs. Julian Togelius has used the AI directed approach to try to evolve new games, by testing them against a fitness function which evaluated how interesting the rule sets are; equally by randomly varying the rules of a similar set of games and seeing how human players evaluate them, you can determine what the most interesting rules are.

And unlike real world psychology experiments, procedural content generation allows you to vary experimental parameters at very low cost. I can see the potential of procedural content generation is to rapidly refine a model of the mind by both allowing both extensive randomized trials of real people, and testing of multiple differing models against procedurally generated scenarios.

I take a brief second look perspectives in part five.

Proceduralism: Part Three (What is Procedural?)

[You'll probably want to read the original article series that inspired this follow up, then start with parts one and two of this series.]

Alongside the attempt to define a taxonomy of procedural content, my other main goal for the PCG wiki was to list what games featured procedural content - expanding on the inadequate wikipedia entry to create a definitive go to guide if you were looking for a procedural fix. But this building this list has stumbled for two main reasons: a lack of time and contributors - which results in the majority of articles being stubs, with more polished entries where someone else has taken an interest, and a more fundamental problem with deciding whether a game is procedural or not.

But surely it should be clear whether a game is procedural? Take Elite - the canonical example of a procedural game, with an infinitely explorable universe generated from a starting seed. Elite is clearly procedural because of this infinite sandbox. Or is it?

It turns out the universe of Elite is in fact finite enough that it was possible for the founders to check the name of every planet to ensure that there were no curse words included in the final release. And if you are willing to accept a seeded universe but constant content as a starting definition for procedural, then is Eve Online procedural? What about Star Wars: Galaxies? Darwinia? Far Cry 2? Far Cry?

Well if Elite is not a good model to follow, then how about Rogue? Infinite, accessible dungeons - which implies accessibility to newly content is a prime requisite for procedurally generated games. But strategy games like Civilisation have had random maps almost as long as the strategy genre has been played on a computer, and listing every strategy game with a random map generator as a procedural game will be an enormous and potentially futile project.

So it's not simply a matter of random map generation, then how about other content like randomly varying the loot that you find. But that makes World of Warcraft as procedural as Borderlands and Left4Dead procedural because it dynamically mixes and matches zombie bodies to ensure variety in the horde.

But Left4Dead is procedural: because of the AI director, in the same way that Far Cry 2, but not the original Far Cry, is procedural because it has dynamic fire propagation. It's the emergence of interesting properties that makes a game procedural.

But this makes any game with a half-way adequate AI procedural, which is again not a useful definition from the point of view of building a wiki listing procedural games. And does a game like Deus Ex qualify as procedural because of the emergent property of using limpet mines to climb buildings? Maybe it is but Warren Spector didn't intend it that way.

We are left with two possible definitions which seem more robust but neither of which are ultimately satisfying: did the developer intend the game to be procedural, which leads to the problems of divining authorial intent, or is it procedural because I know procedural when I see it?

(I'll return to the matter of perspective later in this article series, but it is worthwhile noting that Minecraft feels more procedural than Populous because of the perspective the player sees the game from, in the same way that a first person shooter or platformer with random maps and AI feels more procedural than a top down strategy game with the same features. It is for this reason I've added a perspective category to games on the PCG wiki).

I want to avoid an argument about definitions for the moment, and try to look at some minimal examples of what we can mean by procedural. Take the following BASIC code:

20 GOTO 10

Which if you run it, results as follows:


The output of this code results in infinite content, and the code itself clearly defines a procedure for generating this content. But you and I both would have extreme difficulty in describing this as procedural content, because it is not very interesting.

What do I mean by interesting? That is the heart of whether a piece of content can be adequately described as procedural or not. If we just consider the output of an infinite number of HELLO WORLDS, we can see the content is not very interesting, because the underlying code required to generate this content is not particularly complex, and the result completely predictable.

But at the other extreme, apparently complete randomness isn't terribly complicated an algorithm either, such as this Python implementation of a multiple with carry random number generator shows. The output of this algorithm is too random for any human to detect the underlying pattern, while the pattern itself is compressible in a sense that true random numbers, such as thermal noise, are not.

The fact that a less than one page long algorithm can generate 'random' output as far as a person is concerned implies there is a not terribly complicated threshold past which someone is incapable of distinguishing an algorithm from random noise.

What fascinates me about procedural content is my belief that there another useful boundary between trivially predictable output and effectively random output - what I've called elsewhere biased randomness - that is randomness produced by an underlying discoverable rule set. That is not to say that randomness is uninteresting - given sufficient incentives, we can become horribly addicted to random output - but I think there is more value in exploring biased randomness than coming up with better ways to package completely random content in a compelling format.

You may be thinking here of the mathematical concept of 'chaos' - but while this may be a useful analogy, don't confuse the two. There are plenty of chaotic systems which can be easily comprehended by a person (the outcome just can't be predicted), and just as there are plenty of ordered systems which are similarly incomprehensible. Even the predictable behaviour of two body planetary motion was unknown until the recent past in terms of the overall human evolution of thought.

It is also likely the case that compelling biased randomness is even more complex than the algorithm required to implement effective randomly content - just in the same way that the real world is more complex a place than an aggregation of random elements. This will also be a challenge for biased randomness: justifying the additional time and expense above strictly random content.

So my answer to the question 'what is a procedural game?' is that the game presents a biased randomness where discovering the underlying rules is a necessary part of play. That doesn't help much when it comes to deciding what games should be in the wiki, but at least I have a set of criteria which feels more objective than those I outlined at the start of this article.

Whether the biased randomness in a game is interesting is a subjective exercise: one person's discoverable rule set is another person's fiat from the gods. But I don't believe this is an unsolvable problem: there are definite strategies to discovering whether something is interesting, and ways of dealing with the most common criticisms of procedural content generation. And the question of what people find interesting isn't just an issue for game design; with procedural content, it allows us to build a more precise model of the mind.

And I'll be talking about that in part four.

Sunday, 15 August 2010

Because procedural developers are lazy

The meme of a procedural Zelda is a compelling concept when thinking about procedural generation. The classic Zelda design could be reduced to a the lock and key maze, of which EaS is an excellent example. A lock and key maze requires that every key is placed somewhere in the maze before the lock that opens it, which ensures that the maze is solvable. The puzzle is exploration based, rather than requiring particular problem solving skills, but I would qualify it as a puzzle nonetheless.

The question I have is what other puzzle designs are suited to procedural generation techniques? (With a particular focus on those that produce interesting level design).

Is it possible to procedurally generate Sokoban levels? Explorable match 3 puzzles?

Rather than answer the question myself, I'd like to throw the floor open to suggestions from the readers...

Tuesday, 10 August 2010

Designing a Magic System Redux - Part Two (Status Effects continued)

You should read part one of this article, and are strongly encouraged to read the original Designing a Magic System series of articles if you have not already done so.

There is an asymmetry in the design of status effects in Angband: they differ (sometimes significantly) in implementation between the player and monsters. But I've aspired in Unangband to reduce the asymmetry between the two where possible so I'll begin discussing the impact status effects they have on the player and briefly note into the differences between the player and the monster at the end of the article.

There is also a difference between the original Angband, and Unangband implementation of status effects, where Unangband has more possible states, but compensates by weakening the impact of the original Angband effects. The primary approach I've taken is to make it harder to add additional time to a status effect once the player is already affected by it - to avoid continuous locks. I've also modified the effect where noted below with the intention of making it easier for the player to continue to act when partially impaired without requiring they immediately reach for a reset of the effect.

Blindness was the example I looked at in the first part of this article: a player who is blind has a significant penalty to hit when attacking and cannot read scrolls or cast spells - presumably being unable to read the words from the spell book. In addition, the player stops getting screen updates - so that they are not able to see the current location of enemies or changes in surrounding terrain. My intention in Unangband is to weaken the blindness effect slightly, so that you can cast a spell once, from memory, while you are blind, before forgetting it. This is a shout out to my AD&D 2nd edition roots, as well as a way of allowing the player to sneak around in the dark and still cast spells.

Amnesia in Angband has been changed to a timed effect, based on Unangband's implementation, so that you suffer a penalty to your chance to cast spells. Unangband also prevents you from activating artifacts and other items - it makes you temporarily forget you have identified them - and when blind, will stop you from casting spells at all. (At the moment Unangband stops you from casting at all while merely amnesiac, but I'm changing to closer match Angband in the next version).

Confusion in Angband prevents you from spell casting, as well as causing you to move and shoot in a random direction instead of the intended direction. I weakened this effect in Unangband so that you can cast spells while confused - because the random target selection effect when combined with the ability to hurt yourself with spells makes for an interesting risk vs. reward trade off - and also made confusion only having a percentage chance of taking effect which increases as you become more confused.

Fear prevents you from fighting monsters in melee - you refuse to attack anything that you bump into. This is meant to encourage the player to flee, but it instead merely forces you to switch to missile weapons or spells, which there is no penalty to use even at point blank range. To compensate for this, I'm adding an additional terror effect, which acts as an 'overflow' to fear. Once you become sufficiently afraid, any fear will overflow into the terror status. While you are terrified, you cannot use any ability which requires aiming - including spells, missile or thrown weapons. You are still able to use other abilities, amongst them the various teleport effects you should be considering to escape with.

I've taken advantage of multiple meanings, to provide an alternative overflow from fear: that of petrification. Petrification status prevents you from moving (although you may teleport still), and has no other effect - although most direct petrification attacks are highly damaging as well. It is possible in Unangband to become petrified with fear, in the same way that terror overflows - and the two different types of overflow are exclusive: you'll either become terrified or petrified if you are made highly afraid, not both.

Paralyzation is the most uninteresting status effect: you simply cannot do anything while paralyzed, and so it is incredibly hard to balance and puts the player at the highest risk of getting a lock. Unangband has a second, more interesting variation: stasis - which paralyzes you, but also makes you invulnerable to damage, which is a side effect of time attacks. Stun deserves mention here because it incrementally penalizes you to the point of knocking you out, an identical result as paralyzation, but the initial penalty is very slight. Both paralyzation and stun are less interesting than the status effects I've already mentioned, because you either perfectly resistant or are in incredible danger should you encounter a monster (or worse group of monsters) which inflict this effect, with very little margin in between. To mitigate paralyzation, I use the slow effect as an intermediate step, with you being slowed before you are paralyzed the majority of the time.

Using the above combination of effects, you can chart the impact on the player's abilities as follows:
You might be tempted to add, for example, a Nausea effect to the above chart, which prevents you from using potions. But I'd discourage this: potions are best kept as the get out clause reset for any effect. It is still possible to partially incapacitate yourself through bloating by stuffing yourself with food and drink, for which a potion of Salt Water is a useful antidote.

You'll also notice Daze in the chart, which I haven't provided an explanation for yet. Daze will be new to Unangband in the next release: it prevents the caster from casting spells on himself and is the direct inverse of Terror, but for only spell casting and (perhaps) magical devices. Daze is interesting because it forces you to use spell attacks which are hampered, or my preferred terminology, made more interesting by blindness and confusion. To complement this, both Confusion and Blindness overflow into Daze, and there is no direct way of a player being dazed by an attack.

Of the effects in the above chart, only petrification, fear, blindness and amnesia of themselves totally incapacitate some ability of the player. The remainder only incapacitate in combination, or as a result of another status effect being repeatedly applied to the point where it 'overflows' into a more dangerous status (Terror and Daze cannot be directly applied to the player). The idea here is the player should get some opportunity to use a reset to avoid incapacitation, with a large margin of error before the more dangerous state occurs.

There are in fact 32 status effects which can negatively effect you in Unangband: of those I've not mentioned, the remainder are either debuffs (stat modifiers), change the rules monsters use to track you (aggravation, stench) or damage over time effects (poison, cuts) and so don't need result in the complete incapacitation which causes a lock. There a Soaked effect which prevents you from lighting fires or reloading firearms, and a Berserk effect which allows you to voluntarily give up missile and magic attacks in return for improved melee, healing and immunity to fear but both of these will have minor impact compared to those I've discussed in depth.

There are two exceptions: Sleep and Hallucination.

Sleep is one of those spells from AD&D which I cast into the same problematic category as Magic Missile. It was a 1st level spell which either fails or immediately and completely incapacitates with no in between. Sure, you can increase the level casting requirements and have the victim wake when attacked instead of being able to deliver a coup-de-gras, but the ability to completely disable an opponent and escape means the spell has to be made effectively useless against any opponent you'd want to use it against. Sleep works great in a role playing game which is strong on the capture and interrogate dynamic: not so for computer games.

Angband sidesteps Sleep effects against the player completely in favour of paralyzation, which is less a solution and more a tactic acknowledgment of the scope of the problem. Unangband separates them: and gives the player a cool down before falling asleep, which you can cleverly use to damage yourself to stay awake. Should you keep damaging yourself for the duration of the sleep spell, you'll avoid the effect completely.

Hallucination is a fun trick with ASCII graphics, but has little functional difference, and a lot of overlap with the confusion effect. Unangband already has enough restrictions on spell casting to make it worthwhile having hallucination stop spell use as well. But the Nightmare on Elm St of sleep started to get me thinking about what hallucination should do.

Sorcerers in Unangband don't have the range of options that the other major spell casting classes do. I've tried to remedy this by letting them make magical traps, but this both lessens the utility of actual trap setting, and requires enough horrendous hackery that I'm forced to reconsider. Sorcerers can shape change, and charm, and like druids have a minor in summoning spells, but I've come to realize that status effects should be the sorcerer's forte. But blinding and confusing and dazing monsters leaves two problems for me to wrestle with: firstly ensuring that the time required to get a lock on a monster is approximately the same as killing it, and making clear the victory conditions for doing so.

I will be reusing the surrender code to allow monsters to gracefully give up to the sorcerer: but it is more difficult to decide when this should occur. With hit points, we have a clear definition: when the monster is near death. With status effects, I have to define more clearly how to get a lock.

Take the following chart:

This is the status effects I've described previously, excluding effects that disable all a monster's abilities, with arrows used to indicate where one status effect overflows to another, and where abilities accumulate together to provide a 'higher level' result. I've added one additional overflow: confusion also can also overflow to hallucination - which will be important later.

If a monster is both frightened and petrified, it is considered in a melee attack lock. It cannot provide any kind of melee threat to the player, and if it is only capable of melee, it provides no further threat to the player until it recovers from either effect. Similarly, terror provides a ranged attack lock by itself, where ranged attacks are either shooting or breath weapons, and either amnesia and blindness, or terror and dazed effects provide a spell casting lock. A monster will surrender if it has all its abilities (melee, ranged, spell casting) locked for sufficient time and it has no allies in line of sight which are also not incapacitated. If a monster doesn't have one set of abilities it is is easier to lock.

In this way, aiming for a status lock is a broad attack in that you have to apply multiple different effects to a single monster for it to be defeated, whereas damaging attacks are deep in that once you find the vulnerability, you repeatedly exploit it with the same attack.

Also note that if the monster is immune to a particular status effect it is also harder to get into a lock: for instance monsters which are immune to fear cannot be melee or ranged locked unless it is possible to directly apply petrification or terror. Ideally there should be multiple paths to achieve each lock, so that a monster which is immune to a single type of status lock can still be affected by applying another combination of status effects. I am tempted to make the hallucination effect also prevent ranged attacks - another alternative would be to make confusion plus blindness effectively act as a ranged attack lock, because a blind and confused monster is unlikely to be able to use any ranged attack effectively.

But even if I make hallucination prevent ranged attacks, it still feels like the unwanted step child of status effects. Luckily, I've come up with a fevered dream of a solution that should give Sorcerer's yet another way of attacking monsters with status effects.

What is missing from Unangband is the ability to create illusions - something a Sorcerer class should excel at. There's a number of ways to implement illusions: you can have monsters which disappear when attacked, mirror images of the Sorcerer which disappear when attacked... all in all, a little ineffectual.

But what if you allowed illusions to cause real damage while the target was affected by particular status effects: I'm thinking specifically of while sleeping. That way you could have illusions interact with real monster resistances so that if you tried to burn a monster with illusory fire which is normally immune to that effect, it notices and wakes up, whereas you could damage it while asleep and have it remain asleep if it succumbs to the illusion. The incentive here is for the Sorcerer to attack monsters as they asleep, but have to periodically force them back to sleep as they are awoken by the illusory effects you cast at them. Pure damage could be represented by the Sorcerer's existing mental attack abilities, which would cause double damage to sleeping monsters whereas the various illusory elemental attacks would require the illusionist play by the same rules as regular spell casters.

And in this scheme, the hallucinating status effect would similarly allow you to affect monsters with illusions while they are awake. The advantage to hallucination is the sleep effect has a time delay before the monster succumbs, whereas hallucinations take effect instantly.

This is followed by part three which looks at magic items in more detail.