Full Indie Game Jam 2013 – Evil Genius

This weekend was the Full Indie Game Jam 2013!  A Game Jam is an event where teams are given 48 hours to make a video game from scratch.  Needless to say, this is a very challenging endeavour!  Most full video games take upwards of months or years to create, so in order to make a game in 48 hours, you need some combination of good design, small scope, and/or highly honed skills.

To see the second game we created, skip to the bottom of this post or click here: http://shaunevans.net/evilgenius/

Keep reading for the story about making a game in two hours.

Evil Genius

Evil Genius

The weekend started out great.  I hadn’t come to the event with a team, but fortunately I met a great group of developers and artists.  The theme was announced: “Evil Genius”.  We slung down our laptops and set up at a corner table and started brainstorming.  After tossing around and discussing a number of ideas, we settled on a stealth/puzzle game involving three little monsters trying to escape from the laboratory of an Evil Genius.  Gameplay would be similar to The Lost Vikings, except with a top-down view and point-and-click interaction.  Each monster would have an ability that would help the other monsters get through the maze:

  • Stinky would emit a cloud of gas that would block camera’s vision – a camera wouldn’t see him, and he would block line of sight to other monsters.  By using Stinky, the player could sneak monsters past cameras that otherwise would trigger a nearby turret.
  • Slinky was able to fly, allowing him to reach areas that were inaccessible to the other monsters.
  • Ugg was super strong, allowing him to push crates around.  If a path needed clearing, he was your man… er, monster.

The player would control one monster at a time, and would use each monsters’ ability to get all three to the end of the level, avoiding traps like turrets, lasers, and pits full of spikes.

With the above design fleshed out, I decided to head home and catch some sleep before the dive into level design and code.  Unfortunately, when I arrived at home I found I had caught quite a chill.  Wracked with sickness, I ended up being unable to attend at all on Saturday.

Fortunately, my sickness cleared up Saturday night, and by Sunday morning I was able to make it back to the Game Jam.  I contributed a few level designs and solved a few bugs, but I was unable to contribute more.  Art and animation were nearly complete.  I was happy to see that my teammates had designed and implemented several impressive systems, such as stealth mechanics, A* pathfinding, and all of the monster abilities.  This was especially impressive as three of our programmers (who implemented these systems) had never used Unity3D before.  Everyone on my team had done an exceptional job.

Unfortunately, as the Game Jam deadline of 7pm crept closer, my teammates started noticing several errors and incompatibilities between the systems they had all created independently.  To elaborate: each system (pathfinding, monster abilities, graphics, and stealth) had all been created more or less independently.  This almost never happens in a work situation, but in a Game Jam when 48 hours is all you have, sometimes it works to make everything separate and smash it together at the end (without breaking much).  Unfortunately, this was not one of those times.  Having no experience with the code that had been written (due to sickness), I had to stand by, helpless, as my team tried to get everything working.

At 5:00pm, with two hours to go before the end of the Game Jam, I decided to see what I could do to make a game out of the art and animation we already had.  I figured if the game got put together, we could use it as an intro screen, and if the game didn’t come together completely, we could demo this as its’ own game!  And if I failed, nobody would know.

But what to make?  I knew I couldn’t put anything complicated together in two hours – I had to really manage my time.  We had all the graphics for the old game already done, and the little monsters looked really cute.  Wouldn’t it be fun if they could jump around?

I had some old code lying around for a physics based platformer game I had started with my friend Pat, so I hurriedly copied that into a new project along with the graphics from the Game Jam.  With some tweaks and ripping and tearing and mashing the keyboard, I had one of the little monsters jumping around in a box.  Next step was making the world look pretty – I mashed whatever looked good into the background, and added a crate texture to some of the blocks, along with making a border.  The fancy camera effects had already been put in by our artists, so soon I had a single monster jumping around in what looked like a testing lab.

I thought it would be fun to have to avoid lasers and stomp on turrets, so I started putting in that code, but quickly decided I couldn’t do it in the remaining 50 minutes.  Instead, I would just copy the code from the first monster and make the other two monsters jumping around.  Then, whoever was left would be the victor, and all of a sudden I had a game similar to TowerFall.  To spice things up, I gave each critter a unique ability.  Giant would be able to stomp, Batty would be able to fly and drop bombs, and Slime would have an electric forcefield that would slowly damage everything around it.  Since I didn’t have controllers, I made each character use a set of four keys on the keyboard, like old-school Liero, so each of these abilities would be accessed by pressing their respective down keys.

Coding all of this in two hours seems like a madman’s delusion.  I ended up taking several shortcuts, like a switch based on the monster’s type to change what the down button did, global variables to store needed information between two functions, and using player prefs to store each monster’s score!  The code behind it was a bunch of hacks, but it worked!

With some jockeying, three people could play the characters at once, one with WASD, one with IJKL, and the other with 8456 on the numpad.

With 20 minutes left on the clock, I asked some of my teammates who weren’t involved in the other game’s merge attempt to test it.  After killing each other a few times, they loved it!

I quickly got assets and ideas shoved into my hands: an audio music track, an evil overlord to watch behind the glass as his minions fought, and ideas for a scoring system.  I quickly added those to the game and before I knew it we had a fun little game!  (In adding some of these additional features, we did go over the Game Jam time limit, but I figured we might as well put a little more effort into making it look a little better)

After a bit of polishing, we got up on stage and presented both of our games to the audience, with great reception!

The first of our games, the puzzle game, we weren’t able to finish completely, but had amazing programming behind it.  Alas, the colliders hadn’t been placed properly in the rush, so you couldn’t escape the first challenge.  With a few more hours, the team would have had the whole puzzle game working well, but that’s the nature of Game Jam.

You can play the smash ‘em up platformer game here: http://shaunevans.net/evilgenius/  With three people playing at once, it’s a lot of fun!

Beam Racers

My first game released on Android, Beam Racers is a simultaneous multiplayer game for one to four players on the same device.  Go head to head with your friends, enemies, or practice against the computer in classic top-down arcade-style action.  It is released under Half Blind Productions.

menu

ingame1

ingame_4p

Get it on Google Play

A Thinking Ape’s Hackathon – Godzilla

Last Weekend I participated at A Thinking Ape’s Hackathon!  With Ian Fraser and Jessica Johnson from our Global Game Jam project Wake Up, we made another Unity3d game called Godzilla and won first place in the Hackathon!

Inspired by Atom Zombie Smasher, you play our fearless hero Godzilla as he tries to trample, flame, or crush as many civilians as he can in 60 seconds.

GodzillaGameplay

Here’s a link to the web playable version of the game: http://shaunevans.net/Godzilla/ (you can also download an Android APK to try it out on your phone)

  • Click to move
  • Double-click to jump
  • Spacebar activates Godzilla’s flame

The special powers, like jumping and flaming, are more effective at killing citizens, but the more the powers are used, the more alert civilians will be, and the faster they will move.

We scaled back our ambitions quite a bit compared to Wake Up.  Of course, we still strove to put in as many features as possible, like lighting civilians on fire with fire breath, and being able to stomp buildings flat.  There was no end to last minute bugs (like my A* pathfinding only working on square sized maps, or like Godzilla walking through buildings), but we ended up creating our target game with 30 seconds to spare!  A special thanks goes out to Derek Yip, who helped us refine our gameplay ideas.

Global Game Jam – Wake Up

Last weekend I participated in the Vancouver Global Game Jam 2013!  It was my first Game Jam, and altogether an intense, excellent, awesome experience.  I met some superb developers, and we put together a game:

Wake Up

You are a coma patient stuck in your subconscious fighting your way through hoards of zombies (your darkest fear) with the hope of waking up. On occasion you hear the voices of people who’ve come to visit you in the hospital which can have an affect on your gameplay. As a hospital patient your heartbeat is tied to your success. The faster you go, the more you can see but also the faster the zombies move. The slower you move, the slower the zombies move but the less you can see. If you move too slow and stay stationary for too long, you die. This game offers 5 levels with a variety of puzzle aspects.

For more info on the game, check out: http://globalgamejam.org/2013/wake

We had a lot of fun working on this game, even after it became blindingly apparent that we had bit off far more than anyone could reasonably be expected to chew in 48 hours.  Still, we ended up with a playable game and some great experiences.

Our Team: Shaun Evans, Ian Fraser, Jessica Johnson, Grant Moore

With much appreciated help from: Power Up Audio and A Shell In The Pit Audio

Midpoint Curves and Bezier Curves

One of my courses this term is Geometric Modelling, in which we learn all about mathematical curves, surfaces, and drawing these shapes in computer graphics.  Despite having just started, this course is already fascinating because we have been learning about modelling complicated things (curves) in terms of simple things (lines and points).

Last month, before taking this course, I had come up with an idea for an algorithm for smoothing a path into a curve.  In this blog post, I go into why drawing curves is tricky (mathematically speaking), my midpoint solution, and the solution shown in class (Bézier curves).  Included at the end is an interactive Flash demonstration of my midpoint solution and Bézier curves.

Primer

In this section, I explain why curves are tricky (from a human point of view), and why creating human-readable ways to model curves is useful.

Why do we want to look at curves in terms of lines and points?  In short, because lines and points are simple, and curves are complicated.

Here is a basic path:

The points are black boxes, the linear path is in green, and the “idealized” curve is in blue.  The green path is trivially easy to draw, whereas the blue curve requires some fancy math.

Lines and points are intuitive from a mathematical and human point of view.  We can say that an object is made up of points:

  • Point 1: X1 = 1, Y1 = 1
  • Point 2: X2 = 2, Y2 = 3
  • Point 3: X3 = 3, Y2 = 1

And then draw them out in Cartesian Coordinates:

We can then use those points to make a path out of line segments:

  • Line Segment 1: Point 1 <-> Point 2
  • Line Segment 2: Point 2 <-> Point 3

When you want to describe curves, things get more complicated.  In high school, we went over parabolashyperbolas, and all kinds of other mathematical formulas for making wavy lines.

What would be nice (from a computer graphics point of view), is if we could say something like:

  • Draw_Curve_Along_Path( Point 1, Point 2, Point 3 )

Instead of:

  • Draw_Mathematical_Formula (

)

Source: Wikipedia

(Note: you can actually tell a computer something like Draw_Curve_Along_Path, but only because  someone else has gone and done the hard work for you.)

The mathematical formula’s main problem is that you can’t (without practice) “see” what the formula will draw.  The main idea of the Geometric Modelling course I took is to find some way of translating between points and complicated mathematical functions, such that the mathematical function would follow from the points.

In class, we went into Point multiplied parametric equations and Hermite Curves as possible ways to achieve some sort of translation function, but each had problems.  One solution that is used in many places is Bézier curves, which I will get into after going over my midpoint attempt at a solution.

Side note: Why are we so obsessed with line segments?  In computers, the only way to draw objects on the screen is with pixels, and it’s really easy to draw line segments with pixels (draw one pixel, move over, draw another pixel, move over, etc).  By using a lot of pixels, we can form an image that “looks” like a curve, even though it’s really just a bunch of points.  By using a mathematical formula for the curve (instead of, say, guessing), we can make the curve look really pretty.

Midpoint Curves

A month ago, working on a pathfinding problem for a game, I came up with a simple idea for smoothing linear paths, using a method I’m going to call “Midpoint Curves”.  This naive algorithm goes like this:

  • Push the first point of the path into the solution
  • For each line segment:
    • Find the midpoint of the line segment
    • Push the midpoint into the solution
  • Push the end point into the solution

Two iterations of this algorithm are shown below:

Hey, look at that!  It makes a nice approximation of what a blue curve might look like!  There are some problems with this method, which I will explore after the next section and interactive demo.

Bézier curves

Bézier curves are really cool.  They have many neat mathematical properties which I won’t go into in this blog post, but I will give a brief overview of how a Bézier curve is constructed.  Better yet, here’s an animation from Wikipedia:

 

 

The curve is constructed by moving a parametric value t from zero to one.  The point is constructed by taking the t-th portion of one line segment, drawing a new line segment to the t-th portion of the next line segment, then taking the t-th part of that new line segment.

A Bézier curve can be approximated in a bunch of smaller line segments by splitting t into a set of “steps”.  Five steps might be:

  • t = 0
  • t = 0.25
  • t = 0.50
  • t = 0.75
  • t = 1

For instance, here is the same points as my midpoint method above, using three and five steps:

The pale blue lines are the new line segments used to construct the path

Following this recursively, this curve can be constructed for as many control points as needed, and can be expanded into more steps to create a smoother looking curve.  Check out the Wikipedia page for more cool animations of Bézier curve construction.

Interactive Demo

You may have noticed that the Bézier curve and the Midpoint curve look somewhat similar.  I wanted to know if they were mathematically or practically similar.  Instead of attempting to prove it mathematically, (or even, as it turns out, think about it for five minutes) I decided to make an interactive demonstration to explore the question!

Here’s what you’ve all been waiting for, an interactive look into what I’ve been talking about!

Click to add more points, drag existing points by the red squares, drag points into the trash to remove them, and adjust the number of interpolations to different values to see the difference more line segments make.

(Note: this likely won’t run on mobile devices, and if you’re using an older version of internet explorer, don’t.)

Link to swf: http://shaunevans.net/samples/BezierAndMidpointCurves/BezierAndSCurves.swf

As you can see, the Bézier curve and the Midpoint curve behave similarly only at low interpolations:

In fact, the more interpolations performed on the midpoint curve, the closer the midpoint curve approximates a straight line between start and end points!  (This would be obvious if one took five minutes to think about things)

On the other hand, the Bézier curve gets smoother and smoother with more interpolations, without changing the basic shape.

Clearly these two methods are not mathematically or practically similar, but it was a fun experiment to run.

You can fork the code used to create the interactive demo on Github.

I am looking forwards to the remainder of this course!

Fast Inverse Square Root and the Magical 0x5f3759df

I came across a post today by Christian Hansen (through HackerNews) about a genius programming hack used to find an inverse square root very quickly.

Through some algebra, floating point conversions, and subtraction of a constant 0x5f3759df, this hack transforms the equation 1/sqrt(x) into:

float FastInvSqrt(float x) {
  float xhalf = 0.5f * x;
  int i = *(int*)&x;         // evil floating point bit level hacking
  i = 0x5f3759df - (i >> 1);  // what the fuck?
  x = *(float*)&i;
  x = x*(1.5f-(xhalf*x*x));
  return x;
}

Why is this useful?  In 3D programming (which I’ve been doing a lot of lately in Unity3D) you need to normalize vectors all the time.  To normalize a vector, find the length of the vector (which is equivalent to the hypotenuse of a right-angled 3D triangle) by taking sqrt(x^2+y^2+z^2):

But square roots involve a lot of computation, and hence take computers a long time (relatively) to perform.  This hack, brilliantly explained by Christian, transforms the equation into one that approximates this function almost exactly.

You can read his post here: http://blog.quenta.org/2012/09/0x5f3759df.html

P.S. For those like me who were curious, here’s the colour representation of the magical constant 0x5f3759df.  (The most significant digits anyways (0x5f3759))

Zombie Game Tech Demo 3

Last demo, the game was still in a very alpha stage.  I’ve spruced up the code, added guns, made some distinction between humans and zombies, added a “flinch” effect when entities take damage, and created a new map for people to test.

Slow, purposeful shambles of the zombies were looking fantastic, but tended to slow the game down, so I gave them all caffeine (doubled their speed).  This has lost a lot of the “zombie” feel of the zombies, but it makes the game a lot more fun.

I also added code to move the camera when the mouse/finger got close to the edge of the screen, which greatly assisted the flow of the game.

I’ve also included the Android APK file, so you can install this test version on your favourite Android device.

Here’s the link!  http://shaunevans.net/samples/ZG1/WebPlayer3/WebPlayer.html

Zombie Game Tech Demo 2

Last week, I showed off the Tech Demo of the Zombie Game (working title), and this week I am returning to demo it again.

However, this time I will not be showing you a video (nor my hilarious bloopers), but a tech demo you can actually play!

Here’s the link: http://shaunevans.net/samples/ZG1/WebPlayer/WebPlayer.html

The game is intended for mobile devices, but I’ve adapted the mouse and keyboard for the web demo.

As you can see, the humans now play a die animation, wait there for a few seconds, then rise again as your own command-able minions! (Mwahaha). The button in the top left will toggle between single zombie command or horde command. Single command will allow you to control at most one zombie, whereas dragging a zombie while in horde command mode will cause all nearby zombies to also swarm.

My friend Rob pointed out that this means the same user action (dragging a zombie) has different results (move swarm/move single zombie), which is something you want to shy away from in terms of HCI/UX design. In this version of the game, I am attempting to distinguish between the two with a “mode” toggle – much like the capslock key on your keyboard. Like the capslock key, the same action gives different results: “a” or “A”. The capslock key has a little light telling you what mode it is in, like the Zombie Game, but users will (and do) inevitably make mistakes. It’s easy enough to correct a mistake like TYPING IN ALL CAPS for a while, but it remains to be seen if accidentally ordering your zombie horde into the teeth of a human SWAT team will be as easily correctable.

If you have suggestions for the problem of how to order a group of zombies AND be able to order one or a subset of that group, please leave a comment!

Zombie Game Tech Demo

Over the past few weeks, my friend and fellow co-op student Matt Jones and I have been working on a video game.  Matt is an animator/artist and I am a programmer/UX designer, so our skills compliment nicely.

The game is a top-down real-time-strategy zombie game, where you play as the zombies.  When a zombie under your control kills a human, another zombie rises from its corpse.  Humans won’t go down that easily though.  You’ll need to use a bit of cunning and strategy to sneak up on those tasty hunks of flesh.

We currently don’t have a name, so the descriptive working title is Zombie Game.  If you have suggestions, by all means let us know.

Last weekend we finalized our engine choice (we picked Unity 3D for a number of reasons, but mainly because, for a limited time only, their iOS and Android publishing licences are free).  Matt whipped up a zombie model using Blender (which was impressive because Matt has never used Blender before (we couldn’t afford a 3ds Max licence)), and I dug my teeth into the Unity3D programming.  Everything fell together rather quickly.  The built-in scripts that come with Unity proved very easy to understand and were very helpful.

This weekend I spent a bit of time putting together a tech demo video.  It shows off basic zombie movement, the zombie automatically moving to attack the human, and the human spawning off another zombie when killed.

So without further ado, I present the first look at our Zombie Game:

The video was created with the help of CamStudio, a free screen recording software.  It initially takes video at high resolution and framerate, so I found some tweaking to be in order, but I found it a helpful, easy to use tool.

Finally, since things rarely go right the first time, here’s the blooper reel:

How Deus Ex got 3 Strikes Against it in 20 Minutes

This weekend, Steam had a sale on popular video game Deus Ex: Human Revolution.  I had been planning on buying the game, because the subject of human-computer cyborgs is very cool, plenty of people raved about the original, and because it received a decent (for him) review from Yahtzee of Zero Punctuation.

Deus Ex is an action role-playing game where you play as a former SWAT commander who gets outfitted with a whole bunch of awesome cybernetic add-ons in order to save his life.  There’s stealth, there’s multiple ways to solve puzzles, and you play as a freakin’ cyborg.  It received a 90/100 rating on Metacritic.

So how did I strike out such an awesome game in 20 minutes?

It was Saturday, February 25th.  I was still recovering from a cold, and thought I’d treat myself to an impulse buy of Deus Ex.  The game installed fine through Steam, and I started it up.  I had to tweak a few settings to get it to run smoothly on my laptop, but soon enough I was in the game.

First I watch an intro movie of some evil guy scheming some evil scheme.  After his intriguing exposition, we go to the good guy’s science lab.  The camera pans in to the back of some guy’s head and BOOM, there I am, standing in a futuristic lab with a Dr. Megan Reed who wants me to accompany her.  Cool, I think as I examine every inch of the office.  Disappointedly, I was unable to affect any of it.  I wasn’t even able to bump a magazine sitting perilously on the couch.  Oh well, better do my escort job.  Walking up to Megan, a subtle popup appears saying “E: Talk”.  Without hesitation, I mash the button.

The camera jumps and now I’m walking beside her through a science lab.  So now we’re walking and talking?  Except I’m not walking, the game is walking me.  I am able to turn my head and look at other things, but I have no ability to move freely.

Right there, in the first three minutes of the game, strike 1.

After watching the intro, this is my first real chance to play the game.  The game has given me complete mobility and freedom (I can jump up on the desk if I want).  5 seconds later, the game takes it away from me completely.  What were the point of those 5 seconds of freedom then?  Just to establish that you are this guy called Adam?

On-a-rails intro is not a game-breaker, by any means, but none of my favourite games have restricted the players’ movement to that degree without a damn good reason.  Take Half life for instance: the intro does the exact same thing as Deus Ex’s intro: showing you that you’re in a place of really cool science-y things, and giving a pre-cataclysmic look at the world.  You can’t leave the tram, so you are literally “on a rail” for the first few minutes.  But you can move around in that little space.  You can go “Ooo that looks interesting” and press your face up against the window.  You can jump up and down impatiently.  You can ignore everything and stare at the ground if you really want to.  All of this makes the player identify with the silent protagonist Gordon Freeman.

In the office of Deus Ex, you’ve been given your freedom and you’re flexing your virtual muscles: every motion you make is helping you identify with the world and your character in the game.  Then that control is half yanked away from you.  More than half your virtual body is paralysed: you no longer have control over your body, and you can only look in a certain narrow scope.  This is the game essentially saying: “Here you are!  No wait, I’m taking that back, I’ve got something really cool to show you.”  It’s like a five year-old.  It doesn’t matter how cool everything looks (it does), that take-back leaves a sour taste in your mouth.  It made me think: I really want my character to get a better look over there, but the game says no.  Hey, maybe I don’t want to be this character if he’s not pressing his face up to the glass of a tank of exploding canisters.  There’s no buy-in.

Contrast this with Fallout 3′s intro, where you get to control yourself even as a toddler.

Oh, and also, there’s no way to skip this intro.  You cannot even exit the game while this intro is going on.

Moving on…

So after being held in a straightjacket and towed behind Megan, you end up in your bosses office, where, inevitably, the shit hits the fan.  Sirens blaze, fires are seen out the window, and all hell starts breaking loose.  My boss tells me to use the service elevator, telling me the code is 5042 or something like that.  I go over to the control panel and, sure enough, I have to actually enter in 5042 in a mini keypad.  After directing my every movement during the intro, my first act of freedom is to memorize some numbers?

Alright, so I descend into what sounds like a pretty intense combat zone.  It’s a good thing I have no idea how to handle myself.

But wait!

Deus Ex to the rescue!  As I round a corner, a very intrusive menu pops up on my screen saying “Crouching.  Hold Tab: View Tutorial”.  A tutorial on how to crouch?  Really?  Okay, I think, holding tab, maybe they’ve got something important to tell me.  Nope, the video shows a first-person narrated view of a hallway, where the player has to duck under a partially closed door.  I say “Yeah, I get it”, turn the next corner, and the exact hallway detailed in the video is there, complete with partial door.  I take a few seconds and realise that yes, it is exactly as easy as the 15 second video tutorial says it is, except it takes me only 10 seconds to perform the task.

30 seconds down that hallway, and another video pops up, explaining how to move a box out of the way of a vent.  The next puzzle?  Moving a box out of the way of a vent.

Turning another corner, I get assaulted by another video, explaining combat.  Seriously?  Bam, all the surprise and shock that might have gone along with armed invaders encroaching on this safe scientific sanctuary is GONE.

The player has been reduced to a simple process that inputs tutorial videos and regurgitates it back verbatim.

This is a gigantic strike 2.

Games have a learning curve.  The first time you played chess, you had to sit down, listen to someone explain the rules, play a few games, maybe even watch a video on how to play chess.  And most real-world games are like this.  Video games, on the other hand, are interactive, which means that with a little creativity, a game can actually teach the player how to play it.  Teaching (without lecturing) how to use a system is basic Human Computer Interaction, and it applies to most computer programs.

Take the box-moving puzzle.  The purpose of the puzzle is to teach you how to pick up an object and move it out of the way.

Let’s take a look at how Half Life 2 does this:

As you can see, you get blocked in a side entrance by one of the metrocops, who casually knocks over a can.  Looking down at you he says: “Pick up that can!”  Simultaneously, a non-intrusive popup tells you what button to use to pick objects up with.  Once you pick it up, it tells you how to throw the can or simply drop it, allowing you to be passive by dropping the can in the trash, or aggressive by throwing it at the cop.  Bam.  The game has not only taught you how to pick up objects, but it has provided you with two more pieces of information: these cops are used to bullying people around (setting the stage for the Combine world), and that you have the power to resist them.  As anyone who has played Half life 2 knows, the entire game is about overthrowing the oppressive Combine regime.  So, Half life 2 not only teaches you how to move objects, it tells you about the entire game!!!

You might think this gameplay advice is new and exciting stuff, but an epic game by the name of Megaman X was able to do it all back in 1993.  Egoraptor (a guy who makes comics and videos about video games) reviews exactly what I am talking about in his very excellent 20 minute explanation of why Megaman X is the best game ever.  His main point is that Megaman X is able to teach you everything you need to know in the first level.

Take 20 minutes.  Watch it.  I’ll wait.

Did you watch it?  Good.

Everything in that video can be applied to modern games today.  And some games do this very well. Fallout 3 did a decent job teaching the player how to survive in the barren wastes of a post apocalyptic world.  Portal and Portal 2 both did terrific jobs teaching the player how to bend time and space.  So it’s clearly not impossible to teach difficult concepts, as long as you don’t treat your audience like they’re five.

At this point, I’m hanging onto the game by a thread.  I am not empathising with the character at all, I have no idea who these people are who are storming the facility, and I really don’t know why I should care.

For all the babying  the game does leading up to it, the combat section proves to be very difficult!  I end up dying three times because I get stuck behind cover.  The enemies’ bullets are realistic, so I die upon taking more than two, but the interface feels so clunky to someone new to cover-based-combat that I am unable to wield my weapon without flailing around.

Finally I kill these faceless enemies with whom I had no quarrel.  (Contrast this to Half life 2: I was killing enemies and glad to be.  One of them even made me pick up a can!  That sucker’s gonna die.)

The music changes, the mood heightens, and I can just sense the boss battle coming up.  Despite the previous two strikes (large though they might be), I’m actually looking forwards to this.  Finally, a chance to see what I’m up against.

I open the final door and BOOM.

Cutscene.

It is at this point that I throw up my hands and walk away from the game.  Strike 3.

The camera jerks to third-person, I see my character get the ever-loving shit beat out of him, while I take my hands off the controls.

I already have nearly zero empathy for this guy because I don’t know who he is beyond a few obviously-tossed-bones sentences.  Now feeling I had remaining for him has been forcibly ripped from my hands, just like the controls.

Yeah, I get that it’s an important plot point.  And I understand that it establishes a reason for my character to undergo expensive radical surgery to rebuild him with all sorts of nifty gadgets that will form the basis of many awesome gameplay elements.  But I don’t care.  I have nothing to fight for.

In Fallout 3, you’re fighting for your father, or to meet your father, or to try and impress Amata.

In Half life 2, you’re fighting for Dr. Kleiner and Alyx Vance.

In Half life, you’re fighting for your life and the scientists at Black Mesa.

In Deus Ex, you’re fighting for nobody, and this is made clear by you having no control over your character.  Because it’s not your character.

Let me make it clear that this is not about cutscenes in particular.  There are many places in my favourite games where cutscenes have been used to good effect.  In Half life 1, after fighting swarms of Black Ops ninjas, you finally reach the exit only to have the lights extinguished and you beaten to unconsciousness.  This takes you completely by surprise, and the events in the game are out of your control.  So in this case, a cutscene helped you, the player, identify with what was going on.

In Deus Ex, you know the boss battle is coming.  You can see the door.  You know there’s going to be something bad behind it.

How might this have been done differently?  Look at Megaman X: when you’re fighting the boss of level 1, you don’t know if it’s a cutscene, all you know is that you are mashing every button you can and nothing is affecting this guy.  As Egoraptor says, this promotes a feeling of helplessness by putting you right in the thick of things.  There’s no deep explanation of “This is the evil bad guy for the whole game”, it’s visceral, that feeling of helpless frustration is integral to the game and gets across the message that this guy is too powerful to take on right now.  Just when you’re about to cry (okay, maybe not that bad), Zero swoops in and saves you.  To paraphrase Egoraptor again, this gives you everything you need to know about the game: you can’t beat this bad guy now, but someday you will be powerful enough to beat him.  This sets the theme of the ENTIRE GAME: everything has to do with making Megaman X stronger.  Beat the game by killing the bad guy.  Kill the bad guy by being stronger.  Be stronger by being more like Zero.  Bam!  There’s your entire game theme.

Don’t believe me?  Think about how much better that whole fight scene in Deus Ex had been if it was like this animation: http://www.youtube.com/watch?v=5N9Zq-_9Er8

Whew this has turned into a long post.

Let me sum up.

Deus Ex lost my interest for three reasons:

  1. I was not involved in the character, location, or story,
  2. The game force-fed me how to play itself, spoiling upcoming surprises whist doing so,
  3. And I was not involved in the character, location, or story

Like Yahtzee says, these aren’t complete dealbreakers.  There are worse games out there.  Trouble is, there are much better games out there.

So, after that cutscene (2 whole minutes of opening credits again), I saved my game, turned off Deus Ex, and went to play Terraria with my friends.  Terraria is also $10 to buy, and I’ve already spent an obscene 25 hours playing it, getting far more than my money’s worth compared to Deus Ex.