August 28 – Where I’m At

Several months ago, I had a conversation with a colleague about game development. I was expressing to him some concerns about my ability to finish Gateway in a reasonable amount of time, and whether or not the game would actually be fun. He pointed out that many games ship uncompleted, and that companies release content and patches later on. Insightfully, he also suggested that I develop a vertical prototype of my game to get some feedback before releasing it.

A vertical prototype is a narrow slice of a game that is fully playable. An example in my case would be a single mission. Although the main game mechanics (as well as several missions and other features) were already implemented, some of them needed to be upgraded or more thoroughly tested. A vertical prototype would be a great way to focus my efforts, so I made up my mind to develop one for Gateway and have some coworkers play-test it for me.

After that conversation, I spent the next several months fixing bugs and sharpening up some game mechanics. I designed a five minute mission specifically for testing purposes. It included a mix of my favourite dialogue and visuals from the actual campaign. A lot of effort went into improving or redoing some existing art assets, too, that I felt weren’t up to snuff. (My friends who develop game art professionally were an immense help here—they provided me with a ton of useful advice as I reworked my models and textures. Thanks folks!)

I scheduled play-testing for August 26th. Listed below are the tasks I aimed to complete before then. Each task was assigned a difficulty level. Not all of them were completed, but the essentials were done.

  • correct a major bug in the particle system (4)
  • rework the turret animation system to something more realistic (2)
  • model and texture new NIA and ISC cruisers and turrets (18)
  • correct the appearance of the first-person shield effect (1)
  • make the game engine fully adhere to an OpenGL 3.2 core profile (2)
  • rework the GUI system to look nicer and be bug-free (3)
  • add zoom blur effect when boost is activated (2)
  • correct a problem with missile collisions not being detected (1)
  • improve handling of in-game camera (1)
  • add debris assets (space junk, asteroids, cruiser chunks, etc.) (3)
  • correct obstacle avoidance AI (unknown, maybe 2)
  • create NIA/ISC cruiser collision geometry (1)
  • fix an issue with the turret shields not rendering properly (1)
  • optimize laser bolt light generation (2)
  • fix an issue with the targeting arrow (2)
  • discard non-colliding candidates faster during collision checks (1)
  • change laser bolts to use batch rendering (2)
  • texture the new cockpit model (17)

Last week, I demoed Gateway and my coworkers were thrilled to finally try the game I had been talking about for so long. It was very well received, and most of my colleagues had helpful suggestions to make it even better. Here are some of the most notable issues that were identified:

  • targeting arrow is sometimes misleading and still needs a bit of work
  • “target destroyed” and “mission complete” feedback indicators would be useful
  • star fly-bys need to be brighter to indicate player speed
  • HUD speed indicator would be good, too
  • adding a “reverse-flip-over” maneuver to reverse direction would be very useful

During testing, something interesting happened several times: my colleagues became upset that the player didn’t take any damage when colliding against large objects like gates, cruisers, or asteroids. What’s funny about this is that I disabled large-object-collision damage on purpose to make things easier, but everyone seemed disappointed by this. That surprised me, and I have two guesses for why everyone reacted this way: (1) players expected realistic mechanics, i.e., collisions should cause damage, and (2) players might have felt that their careful maneuvers were meaningless if there was no penalty for failing to execute them properly. (This was an eye-opening moment for me. I hadn’t spent a lot of time thinking about these kinds of implicit rewards.)

There were some positive points as well:

  • players found destroying things (turrets, gate coils, fighters, etc.) very satisfying, especially when destroying several of these in quick succession
  • the sleek look and feel of the game made it very pleasant to play in general
  • in-game audio was immersive and well-received

Overall, everyone had a positive experience, which was a bit of a relief for me. Until that day, I really had no idea if my game was fun or not. Also, it was incredibly helpful to get so much detailed feedback. Thanks, everyone!

Of course, I can’t just talk the talk after all that. Here are some screenshots from the vertical prototype mission.

My next task is to tackle the improvements that my coworkers suggested. It’s a real confidence booster to get this kind of feedback. Not that I ever really doubted it, but this experience has reinforced my belief that Gateway is a game not only worth developing, but worth playing, too.



July 26 — Where I’m At

Well, here we are so far. A lot of work has been completed since the last progress report.

  • Voice recording and mastering is all done. That’s right. Every single line has been edited and made to sound like it’s coming over radio, so it’s all campaign-ready. I really enjoyed working with the individuals who were nice enough to offer their voice acting talents. (Finding enough actors was something I was initially concerned about, but many people were very willing to spend a half hour or so working with me to bring my characters to life. I’m very grateful for that.) There were a lot of bloopers filled with jokes and curse words. It made the editing process (which took hours upon hours) very entertaining.
  • The first 3 campaign missions have been built. These are shorter missions intended to gradually introduce features and familiarize the player with the controls, and are thus fairly simple. The remaining missions will be longer, but will probably be built quicker as I develop momentum (and gain familiarity with my own game engine…funny how that works). I have to say, it is incredibly exciting to see the action and hear my characters come to life in the way I imagined.
  • Various game play improvements. The targeting system has been improved, the computer players are smarter, bugs are being squashed…the list goes on.

Currently, my priority is getting the campaign finished. Building the missions not only advances the game towards completion, but also reveals bugs in the engine and helps identify game play issues.

Here is a screenshot from the third mission, Incursion, where a simple assault goes awry and the player’s forces are ambushed by the Coalition.

The player provides support during a mission to destroy a series of enemy network satellites.

The player provides support during a mission to destroy a series of enemy satellites.

Until next time.


July 5 — Where I’m At

It’s only been a week since my last update, but there’s been a lot of good progress. I’ll keep this quick since there’s a few other things I’d like to tackle this evening. So, here we go:

  • Voice recording is nearly, nearly done. Unfortunately, I didn’t reach my goal of having all of the recording done by the end of the weekend. A lot was done this week, but I’m still looking for an actor for the last part (Admiral Banks). All of the other parts have been recorded, though, which means that I can go ahead and build the first eight missions.
  • Improved the cockpit. I decided that even my meager art skills couldn’t excuse the poor quality of the existing design. I spent a few days building and texturing a new cockpit model, which is shown below.


  • Improved the missile system. The new system requires players to be smarter about how they launch their missiles; launches that are made too close to a target or not facing the target enough will only result in wasted ordnance.
  • Addressed a number of outstanding bugs and gameplay issues. All minor things, but there’s nothing like a quick demonstration to a colleague to make you realize there’s a lot that needs fixing. (“oops, that shouldn’t happen”, “still gotta fix that”, “that’s boring so I’ve left it until later”, etc.)


May 18 — Where I’m At

Voice recording has begun! This is a very exciting step, as the voices for the characters I’ve imagined can finally come alive.

Now, the script is still awaiting some final editing from another source, so there may be the possibility of having to do re-takes to accommodate the changes. The reason I’m starting voice recording already is because I’m getting eager to move this game along!

Since the story is now more or less finished (barring some final editing), a lot of final decisions regarding Gateway‘s gameplay have been made. The campaign itself spans 11 complete missions, and there will also be the option of playing customized instant action games. During these missions, the player will face off against several types of one-manned fighters, a few varieties of cruisers, and even newly-added space mines.

There have also been a number of performance optimizations. Space battles can now be larger, and I feel that this is important when it comes to making the player feel immersed.

Don’t let all this talk bore you! Here are some screenshots to show you what to expect after a few more months of development.


Three outmaneuvered alien vessels face destruction from opposing sides.


The volcanic planet Grappley is visible behind the chaos.

The next while will be spent fine-tuning the game mechanics, eliminating obvious bugs, and integrating voices into the missions.


Mar. 29 – Where I’m At

This will be a quick update*, but an exciting one — the story for almost all of the 11 in-game missions has been written! All that’s remaining before final script editing and voice recording is just to finish up the dialogue for the last few. I expect I’ll have the last missions fully scripted by next week.

I have to admit, I’m incredibly excited about moving forwards to the recording stage. Several folks I know have generously offered their acting abilities, and I think that they’ll all fit their roles well. Here are some short descriptions of the main characters in the game, who will often be flying and fighting alongside the player.

Col. Warren Matthews
An uncomplicated, straightforward commander. A serious man with very little sense of humour. His people come first, and the mission comes second.

Lt. Andrew “Rig” Nash
Usually second-in-command during missions. Younger and more energetic than Matthews. Primary concern is for his wingmates and subordinates. Terse and forward, one gets the impression that he’s suffered a few scars, both literally and figuratively, over the course of his career.

Ensign Kesha Orr
Fresh out of the training program, Orr’s level of experience is similar to the player’s. Usually the first one to point out new things or ask questions.

Ensign Adam “Belt” Brennan
Second in experience only to Nash. Likes to tell jokes and stories from his past. His ill-timed bantering often attracts negative attention from his superiors.

These descriptions might change slightly throughout the editing process. A lot has changed from the original story already, but I wouldn’t want to spoil anything yet…you’ll get to play it yourself when I’m finished.


* Sorry, no screenshots this time. I’ve recently suffered a hard drive failure and have yet to re-install the libraries needed to run Gateway on my (now fixed) machine to take some new screen grabs. Fortunately, I didn’t lose anything. Cloud storage is your friend.

Feb. 16 — Where I’m At

If it seems like it’s been a while since my last post…it’s probably because it has. Mostly, this has been because I’ve been busy actually working on Gateway instead of writing about it. There’s been tons of progress, but it can all be summed up in a single phrase:

The first mission is now complete.

Okay, it’s only the training mission, but that’s hardly important, since getting to this point required pretty much everything to be complete enough to support a mission with dialogue, basic enemies, props, etc. Scripting out the mission has uncovered a lot of bugs and “features” that have appeared since I last tested various aspects of gameplay. Thus, the list of things I’ve completed has mostly consisted of: “fixed a bug here, corrected a segfault there, etc.”

A few non-technical items have been addressed, as well. Several models and textures have been improved, for a better look and feel. While I recognize that I’m not an artist, I’m always open to improving something if I think that I can.

Right now, I’m at a very important stage in Gateway’s development: developing the story. I’ve always had a rough outline in my head at any given time, but the real work now involves scripting out every mission and piece of dialogue, in order to figure out how many voice actors are required. Several family and friends who I think would fit some parts well have already volunteered their time, which is going to be immensely helpful. I also have a few play testers lined up. (Not to mention that a couple of folks have already tested the tutorial mission and have given some very useful advice.) Thanks, everyone!

I’m incredibly excited about what’s going to come next. Seeing my game finally come to life in this way is rewarding and, at the same time, very nerve-wracking. What if some vital features are missing that could make the game more fun? What if it’s just no fun at all? I suppose these are normal fears. Whenever they happen to pop up, I usually just think something like, “Shut up. It’s either a half-complete game with loads of features, or something more minimal that’s actually finished. You can’t do it all.” Sound advice, if I do say so myself.

The other issue to consider is that of play-testers. If my game sucks in any way, I’ll just have to trust them to be honest. Then it falls on me to find a way to improve things. The only thing I can do now is just carry on forward.

Before we part ways, here is a screenshot from the tutorial mission. It shows some space stations, colossal gates, cruisers, fighters, and a little dialogue from the (later ill-fated) Col. Matthews.

The player is greeted by Col. Matthews as they enter the training sector.

The player is greeted by Col. Matthews as they enter the training sector.


Managing With MMD

You’ve got a free evening and a brain full of story. Ideas enter your head and then exit without closing the door, leaving your mind wide open for new ones. How do you decide which ones to put into your game, and which ones get the axe?

In an ideal world, we’d have the time and talent to say, “all of them”, but moderation is required for anything to be completed. My own approach is to use a categorization system that I call the MMD ranking model. It places all of the possible major features of a game into one of three categories in terms of how important it is (and likely) that each feature will be implemented. At the onset of every game dev project, before writing any code, I’ll sit down with all of the features and sort them into one of the following:


  • This is the simplest category of the three, and always contains the least number of entries. What should be included in this section is a complete list of all of the features necessary to turn your game into something playable. This is surprisingly minimal. You’ll be surprised to realize that it doesn’t take much to make something fun, and that many extra features you might dream up aren’t strictly required (although they might be nice to have).


  • Middle grounds are always tricky. In my experience, this has been the longest section of the three because it enumerates most of the awesome features that I think would really make my game kick some serious ass. This might include additional enemy content, fancier weapons, or optional missions. The omission of any of these items won’t ruin your game, but it might not hurt to promote one or two of them later on to the above category for some extra fun. Just don’t get carried away.


  • It might seem kind of stupid to include a list of things that you won’t be putting in your game — this is obviously a lot. (You’re not going to put a Goomba into your Halo video game clone. Hopefully.) This category is really meant for the ideas you’ve had that are unfeasible for your project, due to (a) time constraints, (b) severe lack of technical knowledge, or (c) because they’re generally not focused on the core purpose of your game.

I should point out that the items ranked in these lists don’t have to be purely non-technical. Your implementation will dictate many things about what your game can and cannot do.

Of course, I wouldn’t leave my readers with just a description and tell them not to slam the door on the way out. Here’s a real example of an MMD list I developed while I was working on a very basic, minimal 3D game library a few years ago. The list evolved over the lifetime of the project, and items that were implemented were removed as things proceeded.

Must-do (remaining):
– Triangular prisms, pyramids (easy; make a couple new primitive types)
– Camera functions: follow, point (see previous code)

– Changes sprites to use Shader code (easy)
– Frustrum culling (see BGOGL)
– Particle library in 3D (import from Wing)

– Animated model loading
– Support for user-defined custom shaders and rendering