Computer Games, Programming

ProcJam 2014 talks

Last weekend I had the chance to go to the ProcJam talks in London that were part of the ProcJam game jam. Due to some difficulties running errands and never having been to Goldsmith’s before I missed the first talk and arrived halfway through the second.

I was hoping for some tech-focussed talks about coding up procedural generation. As it turned out it wasn’t quite that kind of event but it was still pretty interesting.

Tanya Short’s talk about some of the theory behind procedural generation was quite interesting (despite a flaky Google Hangout connection). The key takeaway from her talk was to look at the structure of what you are creating. Creating believable content means creating a simulation of the creation itself while making it satisfying to explore means adding an emotional dimension.

An example she gave was of name generation, you can totally do the Elite random syllable process but to create more believable names you can introduce structure, like lineage, nicknames and titles appropriate to the society and social ranking of the character. Introduce aspects of the way that people name their children in the real world: things like fashionable names and trends that apply to characters of a certain age, repeated usage of names within families, the use of names to honour significant people in the parent’s lives. These things add emotional depth.

Tanya is working on the game Moon Hunters and she mentioned an example from the game of how personalities consisted of the following factors:

  • the results of the character’s deeds
  • the perception of others
  • how the characters contrast to the villains
  • the needs of the story and plot

I was particularly struck by the idea that the way a character behaves is bound by how they think other people expect them to behave. That’s something we see a lot in the real world and creates exactly the right emotional connection in someone who is trapped between their “true” and “public” selves.

The talk I most enjoyed was by Hazel McKendrick who is one of the developers on No Man’s Sky. For someone who doesn’t really do game programming or procedural generation it was a helpful introduction to some of the basics.

First of all she made it clear that procedural generation isn’t about randomness, abrupt jumps in the underlying numbers creates a jarring inconsistent experience for the player. In mathematical terms we don’t want to use truly random generation but instead functions that generate continuous (smooth) results. This means using noise functions rather than pseudo-random algorithms. Most people mentioned Perlin noise but Hazel also mentioned Perlin worms and Whorley noise.

She also made the great point that games are made by their special moments and rare events in the game. If the generator creates content uniformly then the world is overwhelming and might actually become boring as repetition robs the feeling of being special.

In No Man’s Sky they want the bulk of worlds to be fairly unexciting and plain and allow the player to control their experience by having the more alien or extreme worlds be at the periphery and key game world experiences at the core of the galaxy. The player determines what kind of experience they have by the depth of the region they choose to explore.

Objects in the world matter more when they exist in relationships to one another. Hazel used the example of trees, undergrowth and bushes but it also fits in with Tanya’s talk in that people are more interesting if they exist within societies, lineages and families.

Therefore the generators need to be aware of the context around them and simplest way to do that is to nest the generators so that a generator creates a set of consistent generators that then generate sympathetic output. These generators can nest to any depth and are testable as units and as chains, something that I agree with from my experience with using functional programming although Hazel is working in C++ in a slightly more conventional programming situation.

When nesting generators these way you need to check very large datasets to see that the results truly are consistent rather than frequently consistent. You can program limits on the generator to bound their output but part of the point of using procedural generation is to create things you weren’t expecting. In her slides Hazel had some examples like spaceships where it was possible to generate large catalogues of spaceships to browse visually for anomalies.

You can also write test suites to search for situations that are out of bounds and again from a functional perspective I could see the value of generative testing to exhaustively examine output to find issues with particular inputs identified as the problem.

In a question after the talk Hazel also mentioned that generators are always consistent and finite and that changes to the player’s world are held in state outside of the generators. No Man’s Sky is a mingleplayer game where players will be able to play in the same universe and share discoveries but don’t necessarily have to be in sync to play the game or impacted by the other players activities. You can explore the game at your own pace.

Hazel’s talk is on YouTube

The other interesting talk was by Mark Johnson who is working on Ultima Ratio Regum which will one day be a rogue-like exploration game about empires and the evolution of societies but at the moment is an insanely detailed world-building program that creates a world, nations within that world, their history, cities and human terrain.

At one point in the talk Mark demonstrated how it was possible to zoom into a terrain square in the world and look at the leaves in the tree.

In terms of generation Mark’s talk was similar to Hazel’s but he used the metaphor of card decks. You shuffle cards and draw and the selected card opens new card decks that can be used for choices at a more detailed level.

His example was selected the leadership model of a nation and then its economic and foreign policy. So if you select Isolationist as the foreign policy you don’t want to have Free Trade as the economic policy. Similarly religious freedom should not be available if an earlier choice was theocracy.

This cascade set of consequences even extends to where the religious buildings are placed in cities. A populist religion mean that religious buildings are scattered throughout the city, a state religion concentrates them in the governmental quarter.

Mark’s analogue metaphor was interesting and more accessible perhaps, as long as you get the card decks nested within card decks idea. He mentioned that he thought board games were the most exciting realm of game design as you can experiment relatively cheaply but as the players run the game you must be capable of expressing the rules extremely clearly so they can be understood.

One nice detail was that the game produces books about the history of nations and people within the nation. This will ultimately be how a player discovers things in the game beyond literal exploration and conversation with characters. He illustrated this by showing how he could locate the grave of a historical character from the information in that character’s biography.

While its an achievement to have a game that has that level of internal consistency at some point he does also want to allow for alternative narratives where, say, a character involved in a war between two nations would be mentioned by the histories of both but with perhaps very different perspectives on that character’s behaviour.

Mark Johnson’s talk

I’d like to complement the organisers of the talk for putting together a pretty interesting programme.

Computer Games, Games

Gamer Intelligence Fail


A popup telling you that the Last Name textfield should contain your last name

A popup telling you that the Last Name textfield should contain your last name

 O Rly?

Warhammer: Age of Reckoning. There’s a lot more where this came from… EA are truly teh suck as are Mythic the developers.

A Flash application to register that gives you the most insane popups and then fails to complete the registration process because it cannot connect to its database. What do you think the error message is?

OMG, you’re right! “Please check your internet connection”.

If I’m not connected to the internet then how am I filling out your form?!

Computer Games

Final Fantasy: War of the Lions, War Against the Interface

This game is one of the highest rated PSP gaes on Metacritic but I have just found unbelievably frustrating. The amount of key pressing is unbelievable. If I press attack and there is only one target I can attack then you know what computer machine? Just select it for me. In fact wherever I just have one option why don’t you just automatically set it up so I can confirm it? If I am going to be selecting Wait from a menu loads of times why not bind the common options to the symbol buttons so I can just press a button series rather than using arrow keys and X all the time?

There is also a lot of Game Over in War of the Lions. Fail a battle, Game Over. Your character dies in a battle, Game Over (is there a way to save a dying character? if not then why make it a game ender?). And what happens when you get game over, the game reboots… from the start sequence. Sorry but when did I switch on Iron Man mode?

I know this is a port but that’s no excuse for making no effort to try and make the user interface fit the device. Even D&D Tactics is better than this. The excellent cut scenes really don’t compensate for the cruddy design decisions.

Computer Games, Games

God of War: Chains of Olympus

So far GoW: CoO (TLA 4TW) has proven to be my favourite PSP game I have purchased so far. Graphically it is an amazing title that really looks like a normal console game on a tiny screen. However the secret seems to be the way the game uses the PSP’s controls.

The tactile experience mirrors what is happening on screen. If you are struggling to break free from the grip of a monster then you are hammering keys, if your character is straining to snap open a chest then you are holding the button in a death grip yourself. The analogue stick has a better feel for movement. You feel like you directing this torrent of motion rather than going left a bit, right a square…

This link between interface and game only breaks down when you are asked to chain together various specific interface interactions very quickly to complete boss-type fights. In particular I find rotations quite difficult because the on-screen icons are not very clear as to whether you are aiming for clockwise or anti-clockwise.

Computer Games


Can you imagine a game that combines Guitar Hero, Trackmania, Wipeout and some surreal media player style music visualisation? Well if you can’t then you could just download Audiosurf to see just what that would look like. Combined with Steam this game is just all kinds of awesome.

In addition to the fantastic visualisation techniques there are also two important things going on here. There’s the social networking aspect of who is playing what music and how well they are doing. There is also the extreme personalisation as you are listening to your own music.

As a tech note, if your game keeps saying that the demo has expired when you have actually purchased it, just restart the Steam client.

It is also another example of how well Steam Achievements can be used to set challenges and keep people playing. I expect all games to ape HL2 E2’s achievements strategy in the coming years.

Computer Games

Take Command a satisfying replacement for Sid Meier’s Gettysburg

So I finally installed Take Command: Second Manassas (TCSM) after many delays. I really loved Sid Meier’s Gettysburg (SMG) and I have been looking for a replacement for it for a while. To be honest the graphic content is not really far off its venerable ancestor but it is a satisfying game that seems to capture ACW tactics in a visually appealing way.

Some interesting features are that the battlefields seem to be bigger and therefore you are actually expected to use Road Column movement! In SMG column movement was just a way of breaking your troops unless they were reinforcements. TC: SM introduces couriers that actually ferry orders between the general and your command. That’s a really atmospheric touch.

One thing that is a bit disappointing is that barriers on the battlefield do not seem to interact with the troops in a decent way. During the tutorial I lined some troops up behind a wall, which was relatively easy, however later they decided to concentrate their fire to their left and therefore the unit AI wheeled the line left putting straight through the wall rather than anchoring on it. Apart from breaking the illusion this also gave me a UI headache as I could not easily tell whether the AI had opened itself to enfilading fire or not. Since the unit seemed to retain its defensive bonus I assume this was only graphical compromise but I would be annoyed in a tighter balanced scenario if I could not easily see that a unit had broken cover.

Computer Games

Stalker First Impressions

On Friday my tinned copy of Stalker arrived and over the weekend I had the chance to put in a few hours on it. First impressions were hugely positive. It is rather like Flashpoint crossed with Morrowind. The unique setting is really spooky and interesting and the graphics are full of character and seem really plausible.

However inevitably the problems of such a complex and overdue game quickly became apparent. The main character is amnesiac, just like all RPGs. There don’t seem to be many bugs in the FPS side of things but the log and the quest system are screwed with missions becoming impossible as the mission giver disappears (Nimble in the suit quest) or the mission system fails to assess the completion criteria correctly (dog tail quest, mill cache). This seriously breaks atmosphere and the only answer seems to be a series of game saves.

I’ve decided to start again now but during my restart I found another gameplay issue that has dogged games like this. During a big firefight I accidentally shot one of my fighting companions in the back. As a result the character goes hostile and starts shooting at my character. So I have to kill him, which makes everyone else in the group hostile to me. Which means I have to kill all of them too.

Naturally there has to be some way for the AI to realise that you’re shooting them up but the situation is unreal and a complete mood breaker. A friendly fire incident turns into a brutal massacre of your own faction, its illogical and really only leads to the loading of a saved game. Eternally stoic allies who accept all manner of player inflicted abuse may be naff but at least they keep the game flowing.