Exploration Prototype 1.2

Good day today! As I finished off the latest milestone of the Vita Essentia prototype. Actually, to be perfectly honest that’s a teensie bit of a lie. What happened was, Chris and I were working on the battle system together, but he was away at lectures and doing coursework all day. So I thought “Hey, I’ve wanted to get a proper dialogue system in there, so let’s see how far I get”. So, before I went to bed last night I bashed out a quick design for a dialogue system, and by end of play today I had finished it! (By today I mean the 7th of December, it’s almost 2AM now and I just haven’t gone to sleep yet).

OK, that was a teensie lie as well, it isn’t finished per se. But mostly! All the core functionality is in there. I’m pretty pleased with it, as it allows easy dialogue creation in the Unreal Editor. My previous solution used a huge Kismet function and a flash movie which, apart from being incredibly time-consuming to create every conversation, was memory intensive and caused lag whenever the movie closed. The new solution is 100% script based and uses the Canvas system built into UDK, which has functions like “DrawBox(width,height)” and “DrawText”. So using this and what I learned when I created my itemtrigger class, I created a new placeable trigger to use within the Unreal Editor. The properties of this trigger contains an array of DialogueField classes, which can each now (at last, after some massive issues!) be edited individually. Here are some of the cool things you can edit on each field:

- Speaker Name (determines the text that goes at the top of the dialogue box)

- Text (Main body of the dialogue box)

- Width/Height (Governs size of box and text wrapping)

- Timer (not implemented yet. A value here will overwrite the need to press Use to advance to the next entry, and instead close the current entry on a timer)

- Position (Possibly the coolest one. A drop down menu with 9 different positions on the screen for the text box to go. So you could alternate between TOP_Left and TOP_Right for example to simulate a conversation. And all in one trigger!)

There are a couple of other bits and pieces, but that’s the important stuff. The time this is going to save when it comes to the full game will be measured in weeks or months. The other big changes since the last update revolves around the inventory system. Since Chris has gotten seriously involved now he and I basically overhauled the whole thing. I learned loads about classes, and although when you see it on the video it works exactly as it did before, the underlying code is much more efficient.

- Luke

Exploration Prototype 1.1

Since I have some time on my hands at the moment I’ve been working pretty hard on Vita Essentia. The prototype is coming along very nicely, and I have some basic systems in place as I gradually learn how scripting works and all that jazz. We now have a sexy blue UI that is capable of quitting to the front end and to desktop! We can also change character’s equipment and use items. The inventory has been by far the most difficult challenge, and it isn’t even fully complete yet. Obviously players need to be able to pick up items in the world, and have these added to the inventory, which they can then use from said inventory. None of those things were easy, especially as items had to be added to the list in the order they were found. Lots of arrays talking to each other in complicated ways.

I also had to create my own custom trigger class in order to allow anyone implementing levels for the game to place items for the player to pick up via the editor. That was some pretty serious work, but the upshot is that now anyone can open the editor, place an ‘ItemTrigger’ and then just type in the item ID, whether to add or subtract from the inventory, and the quantity to do so. I also figured out how to display console commands without the rest of the HUD so the player gets a nice little notification when stuff happens. This will only be a placeholder until I start work on UDK’s canvas system.

You may notice on this new video a couple of new areas. Thanks to Mike for putting those together, he is very busy though due to being so darn talented so we won’t be seeing more! But on the topic of level design I’ve been reconsidering my plan to use pre-rendered environments. Whilst I do have good design reasons to do so and it would mean we wouldn’t have any technical concerns whatsoever, the trouble is implementing object collision and the illusion of depth (for example the billboarding effect when the player walks ‘behind’ something) is extremely time consuming and fiddly. The more I use it the more I think we’ll be reverting to full 3D levels, which I would rather not do but on the plus side we’ll have more flexibility with the camera system.

I’ve got a few more things to implement over the next week or so, but come the beginning of November comes the beginning of the most important system yet to trial: the battle system. My aim is to get this prototype finished by the end of the year and at the moment we’re right on schedule, so I’m pretty pleased.

- Luke

RPG: The Separation of Game and Plot

One of the obvious downsides about trying to tell a focused story in an RPG is the fact that at some point you are going to have to give the player control.  And if there is one thing that should always be assumed it is that the player hates you, and is going to try his best to break the nice little narrative corridor you’ve set up for him. The trouble is that the mindset of a game player is very different from that of somebody watching a film or reading a book. With these media you know right from the start that the goal is for somebody else to tell you a story, so your only objective is sit down and pay attention. A video game, on the other hand, offers the player control. It gives them objectives like “Get to town A”, “Find the magic key” or “Kill that boss by striking at its weak point”. You know the saying ‘give them an inch and they’ll take a yard’? That’s exactly what game players try to do; they want to exploit your system for maximum gain. This has a habit of throwing the pacing off.

What tends to happen in most plot driven games then, is a very severe separation of these two elements. Small chunks of plot development serve as the player’s reward for accomplishing an objective, and in this kind of game these moments will be spread out to about one every fifteen minutes or so of gameplay. Many genres face very similar issues, and there are a fair few attempted solutions, although most of them boil down to essentially the same thing. In action games like Bioshock (2K Games, 2007) or Dead Space (Electronic Arts, 2008) the Audio Log has become a more and more common solution. Whilst these tend not to progress the plot of the game, they do serve a very solid purpose of establishing back story and context for the player’s actions. They can also be listened to on the move, so the player can continue playing the game whilst learning some interesting narrative information. A similar system can be found in populated areas of similar games with Non Player Characters having discussions with one another, that the player can then eavesdrop upon. A strong recent example of this can be found in Deus Ex: Human Revolution (Square Enix, 2011), where NPCs in hub areas will often talk to each other about relevant events occurring at that moment of the story, or guards will have discussions with each other during missions.

The problem with the Deus Ex approach is that these conversations can’t be listened to on the move. So if the player is interested in these narrative details, they will break up the flow of their mission to stand around and listen. Many people who have played Portal 2 (Valve, 2011) will be familiar with this issue, as they stand around for minutes waiting for Wheately to run out of new dialogue clips. In those games, the implementation of GLaDOS’s lines is far less detrimental to the gameplay, as they are generally designed to last almost exactly the length of time it takes the player to traverse corridors between puzzles, or they play after accomplishing particular objectives. In this situation the player quickly learns that there is no need to hang around in one spot waiting to see if she has anything else to say, and instead enjoy the content in the background as they continue to play normally.

From the RPG side of things, these solutions don’t tend to work quite so well, as the player is commonly travelling with a number of other people. The important plot to develop here is between these characters. Mass Effect (Microsoft Game Studios, 2007) and similar games get around this to a small extent by having the characters in the player’s party say a line or two after relevant events. If they pass into a new area, for example, or in the case of the original, during those extremely long elevator rides. The difficulties with this approach are that the characters cannot be given too much to say, otherwise the player will simply stop playing in order to listen, as with Wheately. So the amount of narrative development using this approach is rather limited. For console RPGs, Star Ocean (Enix, 1996) led the way with the Private Action system. These were essentially cutscenes or small sections of gameplay that can be optionally viewed. During regular play an icon will appear informing the player that they can either cut away from the main action to view the event if they choose. This became a staple of the series, and something others such as Final Fantasy IX (Squaresoft, 2000) would experiment with as well. The pros and cons of this approach are similar to the eavesdropping on conversations mechanics, in that the player has to stop the gameplay in order to view the event. Also, as they tend to be complete and lengthy cutscenes or gameplay events, they are a significant disruption to the section of gameplay the player is in the middle of.

A similar but somewhat more elegant solution can be found in Tales of Vesperia (Namco Bandai, 2008), which features its own take on private actions called ‘skits’. These work in fundamentally the same way as the events Star Ocean pioneered in that they force the player to stop playing in order to view them, but they are far less involved then the complete cutscenes in private actions. Vesperia skits rarely last longer than 30 seconds, and feature an animated face of all the characters involved in a conversation. This allows back story, character development, interesting plot details and so on to be discussed in a less intrusive way than a Private Action. As they are much smaller in scope, they can also be used at more regular intervals. Tales of Vesperia players can look forward to two or three skits between each objective, but because the next skit is not available immediately after the lats one has finished, there is no real incentive for the player to stop playing and waste time in order to see them all. The frustration by doing so would simply make the game too unenjoyable to be worth it. Obviously the fact that the gameplay is interrupted during these sections is a problem, but due to the separation of combat and exploration in these games, there is no real way of copying the Dead Space approach of dialogue playing over the game.

The other upside to having a large number of these skits is that players will find it much harder to mess around with the pacing of the game. In Tales, it doesn’t matter whether a player spends half an hour grinding to reach a new level or whether they go straight to a new level, there will always be some narrative breaking up the gameplay to keep them up to date with their goals and caring about their characters. Vesperia has stumbled upon a near perfect balance to reduce that horrible effect of ‘gameplay corridors’ that lead to the next bit of story. I think a further good touch would be to introduce more character interaction during battles, as these are situations where it could conceivably be played over the game in real-time like the audio log system, although balancing the length to make sure everything got said before the fight was over would be a constant challenge.

Now… I wonder how I could implement a skit system into Vita Essentia, where we won’t have any voice actor? Some real-time chatter at the bottom of the screen perhaps during exploration.

- Luke

3D – Williams FW31

A few choice shots of my Williams FW31 model from my Vis Tech animation in my final year of university. I never got the rest of the scene looking as good as the car, so just these for now! Incidentally, the texturing is all done with material IDs with default materials with a few decals.

Coming Soon

I’m merging my old portfolio website with this one, as I use this site much more often and my old portfolio is pretty dated. This is just a placeholder until I get some content up, which will hopefully be over the weekend.

Racing: Artificial Stupidity

Sports games have it tough. Whether it be Football, Hockey, Formula One or Tennis; attempting to virtually replicate a sport is a difficult business; especially when they are trying to do realistically. Today I want to focus on racing games for two reasons. Firstly, that is the genre closest to my heart; I am a passionate racer and enjoy attending motorsport events as often as I can afford. Secondly, I believe racing games have the hardest job of all when it comes to recreating the sport it is based on. The problem these games face is one of artificial intelligence. It is difficult enough to program AI that can set consistent and realistic lap times, so to try and get them to race as well is a nightmare scenario for any developer.

Let’s have a look at a typical case to illustrate the problem. Polyphony Digital’s Gran Turismo 5 couples an incredibly accurate and detailed physics engine with a huge variety of tracks and cars to race with. In terms of correctly replicating the feel and handling of the cars in its collection, the game does an admiral job. But Gran Turismo is a game played for the lap time, because the race AI is exceedingly poor. Opposing cars will tend to drive on rails around the track, keeping accurately to the racing line and, depending on the difficulty level, sometimes managing it with some kind of realistic speed. But when you send a move down the inside as you enter a braking zone, they will just turn right in as if you aren’t there. Getting a Gran Turismo 5 AI to move off the racing line without physically crashing into him is about as difficult as out-qualifying Sebastian Vettel; at the end of the day it would be a lot less hassle to not try in the first place. When push comes to shove, the Gran Turismo AI will overtake you by slamming you into a wall, and you’ll have to do the same to them lest they spin you out. This kind of thing forces people who want to race seriously to go online and face human opponents; if only your average online driver were as clean as the AI*!

*At this point it occurs to me an opportunity has arisen to advertise http://www.apexracingleague.com. Sign up for clean, exciting racing in all the latest racing games across all major platforms!

Let’s move on to one of my favourite racing games: (and I’m not just saying this because I work for Codemasters…) F1 2010. Although this is a game that struggles to get the AI lapping accurately around every track (the high speed turns 11 and 12 in Melbourne are a good example of where it struggles), the racecraft itself is a marked improvement on Gran Turismo. Where that game will simply take you out if you have the audacity to try and race, the F1 cars will give you a bit of space. As they head down the straight they will move to the inside to defend against you, but when you are alongside they will give you room. Although overtaking is never really particularly difficult as, if anything, they do not defend aggressively enough; each pass does at least feel like it was earned. AI overtaking you, on the other hand, is a rather different matter. Although it is admirable that the opposing cars give you room so as not to knock you off the track, they aren’t very brave either. I don’t remember a single instance of an AI driver out-braking me at the end of a long straight. Whilst I would be happy to put this down to my supreme driving talent; my position somewhere near the middle of my Apex Racing League division doesn’t really lend much credence to that conclusion.

So what useful points can we take from all these observations at this stage? Is it that the trouble with racing AI is it is difficult to find the right balance of aggression? Do developers shoot themselves in the foot by assuming that the players will not give AI drivers space to race if they attempt to overtake? Well…no. At least, whilst there are certainly elements of these points involved, the core issue lies at a slightly more fundamental level than that.

The problem as I see it is that AI drivers are unable to adapt when the conditions are less than optimal.

A race circuit is a difficult thing to navigate. There isn’t just one route as you might think; a racing drivers job is to get around that stretch of asphalt as fast as possible, and the way to do that changes on a second to second basis. Racing AI know where they need to brake. They know where to turn in. They know where to accelerate. But these are usually programmed as fixed points on a racing line, which is only good in optimal conditions. But what if entry speed is higher because the car has caught a slipstream, or been bumped from behind? What if they turn in and another car is in the way? What if they lose grip mid corner? The latter is something that very rarely happens to AI cars, and the number of control inputs a driver makes in any one corner would be a technical nightmare to program. Developers in such instances are forced to take certain shortcuts, which results in an AI car that handles problematic situations in a less than realistic way. Let’s have a look at a single corner from a driver’s perspective.

Full power. Approaching the braking point. I’ll try it a metre or two later than last lap, I can carry more speed than I got last lap for sure. Full on the brakes…downshift…tyre starting to lock – ease off the brake slightly…downshift again. Roll off the brakes and turn in – sweet. Pick up the throttle now, just at the apex. Gradually increasing power… back steps out – lift off the throttle slightly, a bit of opposite lock to control the slide and regain traction. Back down on the power gently but firmly…more…upshift, full power, drift to the kerb out wide. Upshift. Touch the kerb – too much! Back loses grip – ease the power and counter-steer. Traction returns, back on the power.

All that happens in the space of a few seconds, and assumes optimal conditions on a dry track. When the grip is lowered because they are following another car closely, or it is wet, or they have been off line and picked up some debris on the tyres, then it becomes much more difficult. And it is all these subtleties of any given handling model that the AI can’t get their artificial heads around.  When they are defending a position by going off-line, they brake far too early to be sure to maintain control. A real driver would brake as late as possible, try and slow right down on the apex to stop his opponent from turning in, then on the power as early as possible and simply try to hang on to any sliding or other problems that may occur.

One other issue is their lack of racecraft. Whilst in certain games like F1 2010 you do get the AI trying to defend their position and, to a less successful degree, try to overtake, they can never plan ahead. If I am in a racing car and trying to get past the guy in front, I will force him to defend the inside line. Then I’ll move to the outside line and brake early. As my opponent struggle to slow the car down and turn in to the corner from the tighter line, I will take a late apex, get on the power early and cut back underneath him. Some drivers plan overtakes laps in advance, forcing their target out of position a little more in each corner until they finally create an opening big enough to strike. Racing AI lacks this ability to plan and adapt to the movements of cars around it, and this is why it struggles to be successful.

So what are the solutions? Well, unfortunately there is no easy one. The less complicated the handling model of any given racing game, the easier time the AI has adapting to events that occur during the race. Look at something like Mario Kart – sure the physics aren’t exactly at the level of iRacing, but the AI is competitive (albeit selectively competitive due to a catch-up system) because even if the player rams the AI car off the ideal lines, it is much simpler in that kind of game to calculate a new route and keep to it without losing too much speed. The result is constantly close racing and, whilst you wouldn’t exactly call any Mario kart racing ‘clean’, it is at least fair-ish on an equal footing. For more ‘realistic’ games such as Gran Turismo, Forza and F1, I would personally consider having completely separate AI routines for ‘lapping’ a track and ‘racing’ on one. Whenever a human player is close enough, the AI would switch to racecraft mode, with the focus lying on maintaining track position when defending or overtaking on the inside, or maximizing exit speed/using the cutback if the player is defending.

I don’t think the challenge of creating some additional racing lines, specifically to use when in ‘racecraft’ mode and thus fighting with human players, is insurmountable. The problem with race AI as it stands is that it doesn’t want to be off the racing line, and gets confused when it is. The solution to this, or at least an improvement to this, would be to program unnatural racing lines as if they were natural ones, and the line picked by the AI would be dependent on the situation. This would make it more effective when it comes to overtaking or maintaining a position, as the designers could instruct the AI to brake late on the inside, or early or brake and turn in early on the racing line if the player goes defensive. Although the same problems of adapting to the situation when something unexpected occurs (such as contact, or less available grip than expected), it would at least allow clean drivers in typical race conditions to have a better race with AI opponents.

- Luke

Obligatory

This is basically an obligatory update just so I have something in the month of May! I’ve been hoping to write another game mechanics article but time is short at the moment and I can’t think of any good candidates to get particularly motivated about. What I can  get particularly motivated about, however, is Vita Essentia. Despite the lack of blog updates since April, things are moving along very very well indeed. The Exploration Prototype has crossed a number of major hurdles, including a functioning menu system, stat management and data retention via a rudimentary save/load system. Concept art is still trickling in, music is coming in from superb and enthusiastic composer Sam English and we have a new designer in the form of Rob Lambert: Sony QA extraodinairre and colleague of mine from University.

The next month or so is going to see some big, big things.

- Luke

Pressing Forward

Went trawling on gamedev.net for some interesting new talent today, and sent a couple of e-mails out so hoping to expand our motley crew! I’m in work every day for the next…month plus while we push to get all the work on Dirt done, but nothing better to do in my spare time at the moment then work on Vita Essentia and another project, which is super top-secret but involves some of the guys I graduated with. And it isn’t really top secret, we just have nothing to show for it quite yet! Needless to say there will be another developer blog for that once we do!

In terms of VE, a little annoyed at myself for not copying the up to date UDK files to the dropbox when I was in Bolton last weekend. This means no new build for a month until I can get back up there,  so going to have to just concentrate on documentation. An excuse to finish the plot outline and get some solid work done on the design document though, so not all bad news. I’m also expecting some new character concept art any time soon courtesy of a talented artist I got in touch with a while back, and hopefully I’ll be able to persuade her to do some more afterwards! Especially if I can get her to do Elysia, one of the lead characters. I had another artist lined up to do a commission on that front but she lost all her work and it kind of fell through, so a bit disappointing. Still, James has promised progress on his animations and Glenn recently showed me the progress on his male character 3D template, which is looking rather nice! And rather Bruce-Lee-y as well, but he said that was the idea, so he’s obviously doing well.

I imagine my next development update wont be for another month or so, but with just a little luck there will be massive progress in that time. If everyone was able to get UDK working on their machines this would be easier, but alas nothing is ever so simple.

- Luke

CL 100000

CL 100000 is the Change List number of the first Vita Essentia Prototype build! It has been distributed to other members of the team, so they can get testing and filling in the bug database our man Chris set up for us. The CL number will go up with every change that is made. If I fix one bug for the next build, that will be 100001, if I fix 12, it will be 100012. And so on and so forth. I know technically this first CL should be 0 or 1, but I’m used to using 6 figure numbers at work so that’s the logic behind that!

In terms of new functionality, Mike finished a second external area to explore, as well as an internal one. The internal one is not live yet though. So we have basic transitions between the two areas, as well as a placeholder front end that is loaded by default when the game loads. Clicking on ‘Start’ loads the prototype proper. Chris has also begun work on the battle system logic, so I’m filling out the design doc more and more as he pushes for more information! Going well at this stage.

- Luke

The Unnecessity of Quality

Kingdom Hearts is a rubbish game. Really. Whatever objective standards I try to apply to it, it comes off pretty poorly. Especially the first game in the series, which is arguably the best of the lot. The gameplay is repetitive, the environments are predictable, bland and for the most part linear to the point of mockery. The story, whilst simple and heartwarming, is tainted retroactively by the over-complexity added by the sequels, and some of the voice work is poor (here’s looking at you, Mandy Moore’s Aerith) which goes hand in hand with a general laziness in presentation for everything but the most major plot points. Even Yoko Shimomura’s much-lauded soundtrack lacks any kind of inspiration beyond the headline tracks, for every Hollow Bastion and Hikari there are ten slightly up tempo arrangements of Disney songs used in combat. And this is all before we get to the game’s advertised weaknesses. Anybody remember the Gummi Ship? Yeah, we’re really hitting rock bottom now.

And yet…

You could ask pretty much any gamer who had dared to try it, from the stat-munching EVE players down to the most casual user of Farmville, and more than most other games I know they’ll all come back and say the same thing: “I love Kingdom Hearts”.

Square-Enix (They were still just Sqauresoft when the first game came out) have hit that sweet spot in game design, where the objective quality the title lacks is replaced by something else: magic. Disney themselves have prided themselves for years on their ability to tug at the heartstrings of children and adults alike by embracing the powerful sway of the fairy tale, and this approach has created countless charming characters and stories that are remembered and loved for generations. When I was a kid, my mum showed me Disney’s Cinderella. When my sister was little, she saw it as well. 50 years old and still millions of children every year are absorbing that magic. Snow White, Lady and the Tramp, Peter Pan, and more recently Aladdin and The Little Mermaid, all find that secret spot in the heart that is almost universally loved. Kingdom Hearts is a game very much founded on the same philosophy. Elegance in simplicity. Love of a simple fairy tale; the idea of dreams coming true. Warm feelings of nostalgia. What this game does it put the players into the shoes of someone they always secretely dreamed of being: a kid in a fantasy Disney world. Going on an epic adventure to save worlds, fight the darkness, fly around Neverland or battle Hades at the Olympus Coliseum, and all in the company of your best Disney pals.

When a video game can offer you that kind of experience, that kind of magic that taps into the most innocent, fantastical desires you ever had, it doesn’t need to have the depth or variety of gameplay that a more serious title would have. As long as the core mechanics are fun, there really is something for everyone. And to criticise Kingdom Hearts for not playing as well as other action RPGs like Demon’s Souls is like criticising Star Trek for its pseudoscience. Because that was never really the point in the first place.

- Luke

Follow

Get every new post delivered to your Inbox.

Join 73 other followers