Mindflock.com
Social Game Artificial Intelligence
Social Game Artificial Intelligence
Feb 4th
One of the more popular trends in AAA games right now, is the use of linear narrative to drive gameplay. This works well for AAA because with linear narrative, you can guarantee some great screenshots and movies to drive your marketing spend. The current pinnacle of that art I think is the Uncharted series, which tell the story of Nathan Drake exceptionally well.
The power of the Uncharted series is that the developers Naughty Dog pay particular attention to the characterisation of each main character in the game. Using examples from traditional media they cast the Drake character superbly as a Indiana-Jones style adventurer, which makes the game thematically interesting in the same way that the Indiana Jones movies are.
But of course all this lavish attention to the character is costly. Both in production cost and in design effort. So the last thing the developers want to have happen is for the player not to experience these great production efforts. For the most part, this ends up as a strange mix of camera-stealing, design directing the player and general cut-scene usage that delivers a compelling package, but one that feels incredibly restrictive.
The problem with the linear narrative style employed in the Uncharted games is that you are simply a passenger that occasionally gets to interact (often by pressing a single key to progress).
Unfortunately the linear narrative style has sold so well for multiple games that it has become the de-facto standard for “AAA” development. Lately games like the Call of Duty franchise and even traditionally multiplayer games like the battlefield series have fallen prey. It is understandable, given they have to justify huge production budgets and need to ensure that the production quality plays out in promotional materials. But this kind of narrative is not the only alternative when it comes to the player experience.
Player generated narrative
In creating EverSky, the intention is to employ a very light touch so that players can create their own narrative. The key to this is to never take control away from the player to highlight any particular aspect of the world. But that leaves open the question “how do we tell a story?”. The notion here is to convey an understanding of the world and its origin in a way that allows the player to figure it out themselves. In addition we accept that players like to share their knowledge of a world, so we use that to our advantage and enable this shared knowledge as a core gameplay element. This means that players not only create their own narrative, through their own experiences, but help create a group narrative via a shared knowledge space. Our role as designers then is actually to allow for interactions and to offer ways that players can learn and share this knowledge with others.
How does a player learn something without being told?
There are plenty of experience we can have that teach us something without someone actually having to explicitly tell us. As children we constantly experiment and explore the boundaries of our own limits and we seek to replicate this in the game. So things like trying out new artefacts to see if they have some effect on the world, sharing that with others and exploring the space of things like trade and crafting can help. Having a consistent design philosophy and set of themes that underpin the design choices is also useful, in EverSky themes such as “exploration” and “entropy” guide the choices that affect player experience and world design. Similarly the inhabitants of the world are crafted to allow them a level of autonomy that is unpopular in linear narrative games. This allows for some level of emergence, but also promotes the notion that the characters are actually self-aware and have their own purpose to be in the world. Taking this “world centric” rather than “player centric” view of design is definitely not in keeping with the linear narrative style.
As a boost to people who prefer linear narrative, we can also seed artefacts that may be activated by the player to impart knowledge or produce an effect. Similar to picking up a book and deciding to read it, we give the player choices that let them participate in the designed narrative, or simply ignore it and continue with their own narrative.
Sandbox play by it’s nature is about exploration of possibilities, so we embrace that concept with mechanics that allow players to explore the world and its nature. In essence the world itself becomes a big playpen with learning part of the core of the experience.
Does it work?
This is the big question and one that is as yet unanswered. As we get further along in production we might have a better feel for the outcome of this style of design. The feeling so far is that it will be a problem for a set of players very well versed in being told exactly how to experience a game, however there are players (such as those that prefer real “roleplaying”) that are more open to a more sandbox play style. The wider question of non-linear narrative still requires further experimentation within the game world before we can definitely say that it does work as intended.
You can follow development via youtube to learn more:
http://www.youtube.com/zoombapup
Or get in touch via twitter @zoombapup
Thanks for reading.
.Z.
Feb 3rd
Damzel is a game set in a city. The city itself is alive with AI-based people. But I wanted the city to have a nice aesthetic to it too. Luckily, there’s a good example in Mirrors Edge. I knew it was built with the Unreal engine, so I decided to see if there was any way to fly around it and see how they build the levels in it.
And there is!
So I thought it might be useful to fly around and describe some of the tricks they used in creating such a beautiful vista, whilst keeping the game running smoothly.
Here we go!!
First, lets take a look at the basic view you’ll see while playing the game, notice the blue-ish tones to the shadows? Those are lightmap based shadows, baked with a lightmap creator called “Beast” by a company called Illuminate Labs. Lightmaps in case you didn’t know, are textures that are multiplied with a base colour texture, they are useful for storing complex lighting and shadowing calculations. In this case Beast does a global illumination and ambient occlusion solve and stores that in the lightmap textures. It looks pretty nice I think we can all agree.
So lets take a look at the ground level (its where Damzel will take place, so I was interested in how it works in ME).
Interesting! first, the lightmaps still look pretty nice at this level. Flying around the level you notice that many of the buildings are actually poking through the ground rather than set on it. It doesn’t matter to ME because its set on the tops of the buildings, but it does look a tad weird.
Next up are the ambient objects. In this case pedestrians and cars. There is a central “highway” in this level, which has cars that run occasionally down the road. Pedestrians also walk occasionally up and down the paths. One thing to notice, is that pedestrians and cars run along prescribed paths. They literally follow straight lines, which while not realistic, makes moving them a lot easier. The pedestrians themselves are very low poly, because they only contribute a few pixels to the screen most of the time (viewed from the rooftops). An interesting aside is the police car flashing light, which is just a billboarded (facing flat to the camera) flashing sprite texture.
Fly out a bit further and we start to see things getting interesting render-wise. Most noticable, is that geometry starts getting culled. The back faces of buildings for instance start getting left out. As do the paths and roads that arent in view. I’d hazard a guess here and say it was done by hand, but it would be reasonably easy to do a PVS (potentially visibile set) calculation and simply pre-process the level to remove any non visible polygons (test each polygon for views of the play area bounding box as a first pass I would say).

Above is a view of a building in the middle ground. Notice that the building itself uses black and white textures? This is because the distance fogging (see next shot) tends to push the colour of buildings towards a pale blue as distance to them increases, so it has the effect of looking like atmospheric scattering. I’m actually thinking of using a rayleigh/mie scattering term, but maybe just pushing all colours towards light blue based on distance from camera is enough.
Here’s a shot of the fog volume, its more noticable when you reach the edge of the volume because you can see the contast between pixels in the volume and those outside of it.
The interesting thing about ME leveles is that they tend to have quite contrasting levels of detail at different parts of the level. The inner “ring” meshes are all reasonably high detail at the rooftop level near the play area. Then we have medium detail meshes for the city blocks inside the inner area but outside the play area. Then we have a sort of “no mans land” which doesnt even draw the skybox (you can see that here, where it doesnt draw the skybox/dome and you see overdraw of the inner mesh details). That is then ringed by a lower poly outer mesh set, which entails a set of randomly placed buildings and some low poly landscape heightfield meshes.

Here’s a shot of the landscape and outer meshes, where you can still see the inner mesh set. Notice the large gap betwen them? I think thats likely there to give a sense of parallax with the outer blocks. Whats interesting is that those outer buildings are literally just boxes with simple textures on. Nothing particularly fancy about that, although there is a single landmark building that has a low res environment map on it (a sort of blue environment map).

And finally, on the outer edges, we have a set of billboard “skyline” quads with an alpha edged texture of a bunch of buildings in it. Those are laid out at the edges of the low res mesh area to make sure you never see a flat edge from any viewpoint while youre running around the rooftops. They are distant enough and fogged enough that you hardly notice them, but they do break up the skyline quite nicely.
So it appears that the key to rendering a nice city scene from the mirrors edge point of view, is the inner core meshes having reasonably high poly buildings with nice global illumination based lightmaps, many of them using a single environment map as reflection over a base texture in the windows. Followed by a lower resolution set of outter buildings for parallax. Ringed by an further set of flat quads to break up the skyline, alongside a few heightfields to suggest mountains on one side and reflected water near the other for added interest.
Damzel is going to use some of these ideas, mainly the LOD “rings” and the global illumination lighting on the inner ring. I’m not sure the billboards will be needed, but it will be tried anyway. The pedestrians and ambient objects like cars will be far more important than ME, so most of the polygon budget will go towards them rather than the buildings. So in contrast to ME, most of the buildings will be quite low-ish in polygons, but hopefully some useful texturing and environment mapping will help there.
Hope this tour of Mirrors Edge environments has proved interesting, it certainly was for me looking around the world. I highly recommend buying the PC version and having a fly around it. Its a masterwork of level design if nothing else.
.Z.
Nov 7th
I read with great interest the recent leaks of details about EA’s “Project LMNO” over on Rock Paper Shotgun.
Although I’d heard of the game before, as a fellow AI Game Programmers Guild member (Borut Pfiefer, who is now an indie working on Skulls of the Shogun had worked on it). It was interesting because it seemed to bear many similarities to my game Damzel.
At the core of my initial concept for Damzel lay the idea that I wanted to explore the relationship between the player and an AI character. My motivation was to try and make the player feel in some way emotionally attached to the character. I described the game as ICO meets Syndicate to myself, because ICO was one of the few games I’d seen that actually tried to make the player empathize with another character. Also, it was interesting because I loved the aesthetics of Yorda, with her frailty and innocence. The reason why I view it as a melding between this emotionally charged character partnership and what is essentially a bleak futuristic view of a dystopian future ruled by corporates is because I felt that the characters needed a driver to make them interact. Plus I was thinking about the issue of how to engage the player in a risk/reward cycle that didn’t necessarily involve direct interactions with the AI girl.
LMNO is interesting, because it seems like it was exploring this very ground. Ground that is very dear to me, both academically and from a creative viewpoint. LMNO from what little information I had heard, stood in the ground that was laid out very well by the likes of academics like Michael Matteas and the team at Carnegie Melon University, when they were working on the “OZ Project”, the papers from which you can see here. For those interested, there is a very good position statement laying out the motivations by Michael here.
Fundamentally, LMNO spoke to my desire to create “believable agents”. That is AI based characters that feel “alive”. A subject that has gotten me animated for several years now. Frankly, the believable agents idea has never really been explored commercially in the same immersive environment I’m used to. I play FPS games a lot, because I feel that I often start to lose that sense of self. I am immersed so deeply in the game that I am not the me sat in front of the computer screen anymore. I always envisioned the types of environments that could work if they were actually populated by characters that reacted to me in a lifelike manner. How much more immersive if the game world actually had some inhabitants?
Clearly, I was not alone in that idea. Sadly, the academic version of this wish is somewhat less that compelling due to the sheer lack of production budget. Which is why LMNO honestly offered a clear chance to explore that notion with the same high production values that modern games can demonstrate.
So why did EA cut it?
That is definitely an interesting question. Could it be that ultimately trying to create a truly lifelike AI is simply not feasible yet? I don’t think this is the case, because I happen to have seen some pretty convincing non humanoid performances in game AI agents. An extrapolation of the techniques used in World of Zoo by Bruce Blumberg (MIT) would seem reasonably capable of at least a cursory illusion of life.
So it seems that something else may be at play. Which got me thinking about potentially the failure being a design issue. That somehow the developers were unable to craft a gameplay experience based around the notion of two characters interacting. Certainly, I understand from my own efforts that embedding that character interaction as a core design element of the game is challenging. Indeed it could be this that ultimately made the game get cut. Somehow, it needs the character interactions to be meaningful to the player in the game world, whilst not simply turning those interactions into the equivalent of button presses or tasks the player performs by rote in order to activate the behavior of the AI. If the character interaction essentially becomes a mute version of a dialogue trigger, then nothing has been gained with the production and animation effort involved.
So I have a reasonable amount of faith that the failure was not simply a design issue.
So what do I suggest ultimately spelt the demise of LMNO?
I speculate, that ultimately the project failed, because EA is at its core a “traditional” game publisher. It understands game development enough to be able to create products. It understands production processes and management of budgets. It does not understand experimentation, failure, iteration and ultimately it doesn’t understand creative risk. I can imagine a project so risky as a game involving emotional ties between a player and an AI character was simply too different to its normal way of doing business. The fact that EA actually undertook the project is testament to the power of someone like Speilberg to attract greater than normal acceptance of risk. But ultimately when push comes to shove, EA is a business founded on making money as its main goal. If the business side cannot understand a game after two years of development, it is quite likely they will consider the risk of trying to sell a game they don’t understand too high.
Not that I blame them. The overall concept is highly speculative. It requires a leap of faith, where big business is stoically atheist.
So where does that leave the concepts behind LMNO and how does it relate to Damzel?
My own feeling, is that the only way this kind of game is going to be proven, is when an indie does it. I feel that the risks are high, but the creative rewards will be potentially higher. The closure of LMNO has at least given the public at large a chance to consider the possibilities of an empathic AI experience. The feedback on RPS and other sites seem to indicate that players are receptive to some of the concepts shown. In a way LMNO has pre-validated my own choice to work towards creating a game that truly explores the possibility that empathic behavior might bring. Of course there’s no way I can possibly spend the same amount of budget as EA on an indie game, but I don’t think it truly matters. I think players are capable of seeing past potential constraints if the overall experience is compelling enough. I believe that Damzel will ultimately prove to me that either I’m right, or I’m completely barking mad. My life savings and much of my next few years will prove the concept one way or another. Although the experience wont be as well produced as LMNO, or likely as polished, it will at least explore that design possibility space.
So, maybe this is one clear cut case where a small indie developer, with all its myriad constraints, has an advantage over the behemoth publisher. In that we can explore complex and game-changing concepts without the shackles of tradition, business opportunity or egotism.
Hopefully sometime soon we will all know if I’m right.
Sep 16th
Of all the things you will be doing in Damzel, the most important will be giving commands to your squad. Given the importance of that aspect of the gameplay, I have been looking at other games with a similar structure. Last week I was looking at Syndicate by Bullfrog, this week I’ve been looking at Brothers In Arms by Gearbox and Full Spectrum Warrior by Pandemic. Here I’ll talk about what I’ve learnt from Brothers In Arms specifically.
Brothers In Arms (BIA from now on) has you in control of squads of varying types throughout the three games in the series. For instance you may have a recon squad, an infantry squad and a machine gun squad. Or you might have a tank squad and a recon squad. You control the game from a first person perspective (as you do in Damzel) and can fight alongside the soldiers in the squad. This particular aspect is why I wanted to analyze BIA, because I knew from the beginning that I wanted to make Damzel a first person viewpoint game. To me, the first person viewpoint is so much more immersive. I suspect because you have no third party “character” in between you and the game world.
There are a number of great little design touches that I can see in BIA that I think are really useful. Here I’ll try and point them out with the help of a Youtube video. Have a quick watch of it now and I’ll refer to specific sections after you’ve seen it.
Squad Selection
So, the first thing when controlling a squad is actually selecting it. You can’t see on the video, but in order to select a squad on the PC you had to select it via its squad number key (keys 1..4 usually). I’ve added that method of selection to Damzel, but it feels a bit clunky to me. Squad selection happens often enough that I wanted a more natural interface for it. I experimented with loads of different schemes and the one I’m most happy with now is a combination of the BIA key-to-select method AND my own method which simply has you looking at a member of a squad and pressing the right mouse button down while looking at them (they get a highlight so you know youre looking at them properly).
You need the key-to-select method because you might be away from the squad you want to command. But it turns out that I’d rather you keep your squads fairly close for the most part. Interestingly in BIA as you can see in the video, you are basically dragging your squads along behind you. In Damzel it is far more likely you will send squads along in front of you as you try and secure areas. The intention being that the presence of a squad may well be enough to put off a potential threat.
Action Commands
So you’ve selected your squad, the next part is to actually give them something to do. In BIA you select the appropriate action command and you then see a cursor appear when you point at something that can allow the squad to use the command. So for instance a MOVE command you can see it at the start of the video will display a small circle on the ground to show where the squad would move. I’m a little hazy on the detail of how the action is selected, because I’ve played the various BIA games a while back, but I seem to recall it was a key-press of some sort.
Again, I’m liking the cursor idea, but I feel that having to actually select a command is a bit clunky. This is where things get a bit tricky design wise, because if you think about what you need a squad to do, there are often multiple contexts that could be done on any given object. Take the case where you are pointing at the ground with a squad selected. The most obvious case is that you want them to move to the location youre pointing at. But what if you wanted them to simply observe that area watching for threats? Clearly there’s going to have to be some method of going with a default and then allowing a keypress override.
Thats what I’m doing in Damzel. The most often used case for any given object will get the default action. So if you point at a known threat, then the squad will either move within firing range of them or will open fire if already in range. If you point at a citizen, you will default to going to investigate them, with the keypress override to allow you to open fire on them or perform other actions.
The other really interesting thing in terms of the action performance is the way that BIA actually shows you what action is going to be performed on the object you’re pointing at. If you look in the video at time 0:24 you’ll see the player give a squad an attack order. He does this by pointing at the enemy and you’ll see a cursor come up above the enemy in red showing that you will indeed command the selected squad to attack. But it gets more interesting than that, in that when you perform the command the icon grows and then shrinks back down based on the distance to the enemy.
I didn’t get this at first, but as I was looking at implementing the same kind of thing in Damzel I finally understood what that was for. The “shrink” phase is actually a great design idea, because it tells you how far away the enemy is! Its such a tiny thing, but I was struggling with my initial implementation in Damzel because I didn’t have a way of choosing the correct size for the action icon. The shrinking is really good player feedback because it gives you a solid read on the distance to the object you’re interacting with. Plus it doesn’t obscure you’re view like a fixed size icon might.
The attack cursor also has some other interesting properties, like a circle that shows how surpressed the enemy is and a section that shows the makeup of the enemy squad (I think, its either that or which squad you are attacking with, I cant recall).
While we’re on the subject of the command icons. Lets go back to the ground move cursor in BIA, did you notice that it changed the cursor depending on which squad was selected? Those little chevrons and tetris peice symbols on the cursor represent military symbols for the various squad types. This is a small thing, but a lovely little design touch, becuase it easily shows you which squad you are actually commanding.
Action Context
In Damzel you mostly have squads of agents, but you can command specialists like snipers for top cover and of course giving a ground move order for a sniper makes no sense at all. In this case, the move cursor will show you that you are actually giving a “watch this ground” order to a sniper squad, by showing the sniper symbol and changing the shape of the cursor to match the action. This context sensitive cursor arrangement will hopefully feel intuitive to players, but will no doubt need some serious tweeking. Luckily I’ll be able to test that out early next month as I’ll have access to a bunch of play testers.
The other thing you should note about the ground cursor is that it gives a little flash when you actually execute the command, plus it actually animates down in scale when you first select it. These little feedback items are really the sign of a high quality game with designers who know what they’re doing, its a lot of work to do these little touches, but it pays off in the overall feel of the game. I’m trying to be selective in what I implement because obviously I’m one guy and I’m sure BIA had a pretty hefty team of programmers, artists and designers, but I’m hoping that some of these little design touches will make it into Damzel and will add to the feeling of quality and attention to detail. Honestly it is the little detail touches that most indie games tend to lack, the better ones really do pay attention to these things and if nothing else I want to make a good showing on that front.
Ok, I’ve been rambling on long enough. I’ll post some thoughts on the design of FSW in a later post, for now I strongly urge you to get hold of the Brothers In Arms games which are available on Steam. They’re bloody good games and are the type of game that simply aren’t being made anymore because they are deemed too complicated for the console types.