Simon J McDonnell

Creating cool stuff

Sh-Sh-Shaken up


I missed last weeks post, and I’m writing this on this weeks new post day. Things have been hectic for me recently.

Last Monday my girlfriend arrived from America. We’ve been waiting for this for quite a while as we’ve not seen each other in quite some time. So we decided to take a week off. Now that week is up! But we’ve now moved into a new flat in Dublin, so it’s been all go go go getting it set up, so I’m pretty busy still.

Really this is more of an explanatory pity-me post. Normal services will resume, probably next week (whenever we actually get internet again, really). I’m going to be covering Datastructures for a few weeks, so hold on to your pants, I know that’s exciting.

Staying Linear in an Open World

This guy is having a great time

This guy is having a great time

I sometimes have trouble with open world games. There’s too much to do. I noticed it again when playing The Witcher 3 recently.

I’m the kind of player who has to complete everything there is to do. I draw the line at pointless collection fests like Ass Creed 2’s feather quest, but everything even mildly story related will usually be totally cleared out before I’ll move on. I’m the kind of guy who will complete everything even if it makes him over levelled for the next area, which he then fully completes which expands the problem for the next one, and so on. I’m the kind of guy who, in Deux Ex, hacked EVERY hackable thing in the game, read every piece of written text, and knocked out every guard (yes, every) in the entire game.

I like to complete things, okay?

But that’s a big problem in open world games. They pride themselves on content. On having a million and one things for the player to do and complete. This encourages the kind of player who likes to play loosely, taking the game as it comes to them.

This is really hard for me to do. I keep trying to complete everything, even when doing so is not even that fun. I’ll give you a couple of examples.

In Saints Row 3 I only completed the first two or so story missions, and then spent about ten hours completing assassination and car jacking missions. I had fun for the first while, but then it just became about completing all of them. I was no longer having fun, I was just completing things.

At the start of The Witcher 3 there’s a battlefield nearby. A couple of quests are completed there, but nothing starts there. Despite this I spent a good half an hour picking up rusty hatchets from the many many many corpses. I then died to some wild dogs because I am a fearless monster slayer with a weakness to things that bite me. So what did I do, as I reloaded to before I picked up these hatchets? I picked them all up again, of course.

A whole city of new things to collect! Great.

A whole city of new things to collect! Great.

These are minor incidents, but they exemplify a style of play that clashes really hard with the ethos of open world games. It leads me to playing things in a way that is really not that fun, and it’s something I have to guard against when starting out. I hadn’t even played the witcher in a week or two because I found it kind of boring. After doing some of the main story missions again I realised I wasn’t really bored of the game, just the endless procession of tiny quests I was doing.

The designers made these worlds to lose yourself in, to follow where you want, and do what seems fun, because there’s content everywhere. They didn’t intend for people to joylessly hunt down every piece of content in each area before allowing themselves to move on to the next. Because that’s crazy. It would take forever and wouldn’t be fun, and then you’d be left with a barren map, with no diversions from the main plot.

It requires me to relax my usual standards of collection and completion, because I’m not not taking the game the way it’s meant to be taken.

Open world games aren’t really meant to be finished, just inhabited.


Scope is a very important thing.

DONE, drop the mic, I’m outta here.


I’m talking about project scope. A problem that a lot of beginners fall into is having too big a scope. So an aspiring game developer likes World of Warcraft and Guild Wars, right? They’re a big part of their life and they inspire them to create games themselves. Wonderful! Problem is that this aspirational person then decides to make an MMO like WoW as their first game. I mean, it’s the kind of thing they play, and they know just how they want it to play, so it’s perfect!

This could not possibly be more wrong.

For those who aren’t very game-savvy (which is probably few of you considering my profession and interests) an MMOG is a Massive Multiplayer Online Game. It is a type of game where hundreds, thousands, millions of players will be playing together in various worlds completing various tasks. These are enorrrrrrrmmous undertakings. They frequently take large, experienced teams many years to develop one. That’s not even the end, as current MMO’s have conditioned players to regular updates of new content.

You may now be seeing why having your initial effort be an MMO is such a bad idea.

Your first project in any new field should be incredibly small. It should be something that you can accomplish quickly and with minimal knowledge. The project after that should be a bit more complex in areas you haven’t covered, and so on and so on. The idea is that trying to tackle a huge project right away is just a recipe for failure. It’d be like trying to run a marathon before you’ve run a mile.

A great beginner project for new game developers is Asteroids, or Pong. These are games that have very, very simple mechanics, and which have very few demands in terms of art of content. They will teach you basic skills which you can take forward to your next projects. They’re also both games you can start and finish within a reasonable frame of time. Having regular successes is really important for your motivation. You don’t want to be slaving away on a single project for months or years when you’re starting out. Number one: the mechanics will likely be harder to implement than Pong’s are, and Number Two: your motivation will dry up long before you finish it.

Having a finished product in your hands is a great feeling, and it’s revitalising. It means you can show people something that you’ve done and be proud of it, while also freeing you up to try that new fun idea that might have been bouncing around in your head during the last development days of Pong 2: Pong Harder.

I’ve framed these examples in terms of game development, but the same logic can easily be applied to other fields, like writing. A lot of people want to write, but they want to write books. They want to write books right away, without ever trying something shorter. This fails a lot of the time, and then they get really discouraged and decided that they just can’t write.

This approach is so flawed! Of course you’re bad when you start off, everyone is, at everything, ever. The key is to start small. Take on projects that you know you can finish quickly, and work, slowly, up to bigger things.

Remember, Rome wan’t built in a day, and neither was Pong Galaxy: Legacy of the Pong Crystals, the hot new MMOG from Aspiration Studios.


The Darkest of Dungeons


The steam summer sale is upon us!

So far I have showcased incredible restraint, and have only bought two games. This is because I am sitting on a figurative mountain of unplayed titles. As I have so very many games I have formed a small rule for myself. If I can’t see myself playing a game that I’m going to buy within the next month then I don’t buy it. In this way I’ve avoided buying such titles as Metro: Last Light, Valkyria Chronicles, and Cities: Skylines. These are all games that I have on my wishlist and have wanted to play for a while. Metro because I enjoyed its prequel, Cities because it looks like a super-slick city builder, and Valkyria because it’s apparently a great twist on some usual tactics game mechanics (wrapped in a lovely art-shell). I’m sure I’d enjoy these games, but I have to stop buying games just because they’re good.

The two games that I DID buy were actually the two that were in the number one and two slots on my wishlist. Those are Darkest Dungeon, and Endless Legend. I’ve wanted both of these for a while now and they dropped to prices that I just could nae resist any longer.


Endless Legend, briefly, is a 4X game in the style of Civilization or it’s ilk. It comes from Amplitude Studios, who also make the space civ-style game Endless Space and the top down tower defencey thingy that is Dungeon of the Endless.

I bought and enjoyed Endless Space, but it didn’t set my world on fire. The main draw for me was the sci fi setting and the incredibly slick UI. Seriously, that thing is intensely good. As someone who has programmed more than one UI I am crazy jealous of their skills. I have not played Dungeon of the Endless, though I have heard it’s very quite good, and the art in it is very very pretty. Clearly they have the design aspects of game production down pat.

Endless Legend then! It’s a fantasy 4X (eXplore, eXpand, eXploit, and eXterminate) game. This by itself would not entice me. Where they’ve hooked me is their world and their races. They are apparently a deeply weird mix of creatures and cultures that you just don’t usually see in typical fantasy faire. I loooove this, I’m a big fan of mix-ups of traditional genre tropes. There are, for example, the Roving Clans. This faction can move their cities on the backs of giant beasts. Not only this, they also don’t believe in war. You are simply incapable of declaring it against any other faction. This is so cool! I love that their taking elements that these games don’t usually play with and are really going full tilt with that direction.

That’s it really. I don’t know a large amount about this game, just enough that it furiously intrigues me. It’s also gotten a lot of love from press outlets that I usually agree with, which definitely helps. Mmmm yes yes, it will be quite fun to try this out.


Darkest Dungeon (for those not in the know) is a game about sending adventurers into the perilous ruins and corrupted lands surrounding your ancient family estate, wherein dwells the eponymous Darkest Dungeon. The actual dungeon is yet to be added to the game, for it’s still in early access you see, however there are a few other areas that offer ample adventure. A key part of the game is managing light and stress.


As you delve deeper into the various levels your torch gradually wanes. As it does so the monsters become harder, the rewards greater, and the stress more frequent. I generally try to keep mine as high as it can go because I am a delicate flower. The stress level of each of your characters generally raises as you explore the eldritch environments too. It also increases more when you get unlucky with your interactions with the random scenery that populate the different floors of the dungeons. By far the most common cause of raised stress however, is combat. When an enemy gets a critical hit, when you suffer a bad miss, when an enemy uses a distressing enough attack, all of these cause your stress to tick upwards. To be fair, lucky events like a solid hit or a critical will gain them back some stress too, but never as much as they lose.

When it gets too high (100) your characters resolve will be tested. This can either result in them gaining a negative trait for the remainder of the adventure (like Paranoid, above, though I’ve also seen Abusive, Masochistic, and Hopeless), or more rarely, a positive attribute like Courageous. The awful thing about failing this test is not only does the character get this debuff, which can affect their stats, it also causes other effects. Abusive, for example, causes the afflicted character to heap scorn upon the other members of the party, which increases THEIR stress. This can lead to vicious cycles of increasing stress.

Stress also doesn’t go away when you finish the dungeon. It stays at the exact same level. You have to send your party out to various activities for stress relief after particularly daunting delves. This could be meditating in the chapel, flagellating themselves, drinking at the bar, or visiting the brothel. This costs money though, so you have to balance it with buying supplies and upgrading your equipment and skills. The loss of heroes to this activity for one adventure also isn’t that bad, you have a pretty big roster of heroes to choose from, with more coming every time you get back to town. This leaves you free to try different party configurations without severe hampering.


If it wasn’t clear, I fucking love this game. I haven’t even described all the mechanics at play, like camping skills and character traits (from Early Riser to Nymphomaniac to Syphilis! (not necessarily in that order)). I’ve gone through a few heroes at this stage, my best three dying yesterday after an over-confidant try of the first boss creature. I am eager to play more and even have the client open as I type this up.

I highly recommend this game. Do not let it pass you by, it is spectacularly good value for money and last but not least it is absolutely fucking gorgeous. Look at those line weights! Unf, this game turns my crank (not in a sexy way (a little bit in a sexy way)).



I am Ironman

Screenshot 2015-06-08 20.11.25

XCOM 2 was announced last week and since then I have just been super excited about it. I loved the remake so much, and the new direction they were taking it in seemed really really cool. The world reimagined as if the aliens won, and you as the commander of a guerilla force fighting back against their sinister motives. Ahh, it just looks great. Oh, and there are going to be swords! Oh man I was so excited when I saw that. Even if it’s kind of dumb as guns would clearly always be better, I have a childlike love of swords that can’t be overcome by my desire for realism.

That's Colonel Sniper guy to you

That’s Colonel Sniper guy to you

A side effect of this enthusiasm is my renewed interest in it’s prequel, XCOM: Enemy Unknown, with it’s expansion pack, Enemy Within. I’ve completed a Classic run through of the original campaign, utilising save scumming to it’s utmost to ensure victory. However I never did complete the full Enemy Within campaign. I’ve also never completed an Ironman attempt. So I decided to do both!

This resolution quickly led to me dying over and over again. Usually this was on the same mission, Portent, where you have to escort the lone survivor of a raid to safety. Thin Men abound in this mission and I would constantly outmanoeuvred and fucked up by their crazy-accurate light plasma rifles.


My repeated deaths and restarts caused to become super crazy cautious, to the point where I just completely ignored any Meld on the battlefield. Meld is the new resource for giving your soldiers gene mods or cybernetic augmentations by the by. It comes in handy canisters on the battlefield which expire after a set number of turns. I figured that as I wasn’t actually going to have any of the facilities for doing these augmentations for at least the first few months then there really wasn’t much point in risking my incredibly fragile low ranked soldiers on a resource I couldn’t use.

This paid good dividends, as this approach led to me actually progressing in the game. I now have a slew of high ranked soldiers with laser equipment and armour, only one member has left the council (fucking Mexico), and I have a couple of continent bonuses. I’m doing really well and the game has become a lot more fun as a result. It’s nice to actually feel like you have a fighting chance of winning, as opposed to the raw fear and hope for good luck that comes with the first few missions.

I have in fact come to the point where I need to worry about Meld again! I’ve finally done the research and am on track for building the Gene Lab some time this month or the next. I’m going for Gene Mods because while I like mechs, I just find the idea of super soldiers a whole lot cooler. I will probably pick up a mech eventually, but it’s definitely not my first priority.


I’m quite enjoying playing on Ironman now that I’m to the point where my guys aren’t just dying all the time. In fact only two soldiers have died on my entire play through. BOTH of which were due to sneaky thin men not triggering any of the 3+ overwatchs surrounding them and critting for a full health to dead shot. ugh, god they felt so fucking cheap. Luckily I now have carapace armour, so that can’t happen anymore. But now I’ve begun encountering tougher enemies! Ugh, it’s a nightmare.

That worry and anxiety over my soldiers is part of what make XCOM, and Ironman in particular – so great. I agonise over decisions, over which missions to take, over who to send where. I hold my face and say fuck over and over again any time there’s an enemy turn when they’re actually revealed and active. I get so angry when a surprise shot takes out my only backup sniper in one go. BUT, but, without these lows, without this anxiety, the highs that I get from the game wouldn’t be nearly as satisfying. Because every mission could end in failure, because every encounter is a big risk, every time I get to that mission complete screen with no soldier deaths…it just feels awesome.

So yeah, I’m thoroughly loving XCOM right now. It helps that my current playthrough is actually going okay. So I guess what I’m saying is that you can look forward to a post soon that details the exact ways in which all my soldiers died horrible deaths.

Loading 3D models in OpenGL

You’ll find that a lot of the time there’s a ton of work done outside of a game engine to make sure it’s as smooth as possible when it’s actually running. An example of this is something I did recently, which was loading a 3D model into my engine. If I were to take the basic file format (OBJ in this case), and try to load it in and use it as-is I would have to do a lot of work just to get it into the right shape. This meant that it took on average about five seconds to load in one 3D model of a character, one! Can you imagine a game that froze for five seconds every time it showed you a new model? It would be unplayable.

To explain why that is we need to briefly look at what the actual data that comprises a 3D model looks like. Below you’ll see the data for a simple cube.


Lots of numbers! Very surprising, I know. Luckily I’ve used my amazing artistic skills to separate this jumble into the four sections that we need to concern ourselves with.

  • The red section of numbers are the vertex coordinates of the model. Each line is a separate coordinate and specifies the location of a vertex in model space.
  • The blue section of numbers are the texture coordinates of the model. Each line is one set of uv coordinates, which point to a specific point on a texture. These are usually specified by the 3D modeller in the modelling application.
  • The black section of numbers are the vertex normals of the model. Each line specifies what the normal is at a particular vertex.

The green section is where it all comes together. Each line specifies a single face of the object. As we can see each line is comprised of three sets of three numbers, each of the subsections being divided by forward slashes. The three numbers in each sub section are indexes into the previous groups of numbers. So the first subsection of the first face line is 5/1/1. This means that the first vertex of this face uses the fifth entry in the vertex coordinates section of numbers, which is (1, 1, -1). It also uses the first entry of the texture coordinates section, which is (0.748573, 0.750412). And finally it also uses the first entry of the vertex normals section, which is (0, 0, -1). So each face line will specify three groups of this information, which together constitute one face (triangle) of the model in question.

So hopefully you can now see that once we’ve loaded in the first three sections (position, uv coords, normals), we use the final face section to assemble them into the complete model.

After having looked this information up and discovering how to parse the information in an OBJ I began to write my model loader. Once it was finished I began to do some tests and it was a success! I had successfully loaded a model in OBJ format into my engine. However, there was a problem. The problem I mentioned at the beginning of this post. It took forever to load each new model. I went back and had a look at my loader and the problem became apparent quite quickly. Every time I wanted to load a model I would actually load in the OBJ file and parse it right there and then. This was very slow as it involved opening up a file, loading a huge amount of data from it, parsing it, then dumping the data. This wasn’t a problem when I was just loading cubes, but once I started on more complex models it became hugely noticeable.

After puzzling over it for a while I hit upon the idea that what I was doing when I parsed the data from the OBJ files wasn’t something that really had to be done while the game was running. If I did it offline, before I ever ran anything, I could load the model up, parse the data, and then store it in a file in exactly the shape I needed it when the game was running. I did so, storing it in binary for some extra speed, and the loading time turned from five seconds to imperceptible.

You’ll find with some digging that this is a pretty common problem for game engines, and that it’s just one example of how data needs to be optimised for best performance.

Hope it helps!

Imposter Syndrome and Failing to Finish

There’s a thing called “Imposter Syndrome” Put simply it’s the feeling that you’re just tricking people with your competence, and feeling that they’ll eventually find out how terrible you really are. This is something that I feel is probably common among beginner game developers, at least it is in my completely anecdotal experience. I know plenty of developers who feel they always have to work, and always think they’re terrible. I also know ones who let this fear of being secretly awful paralyse them into never doing anything, because they just assume it’ll be the worst, that it and they will never be good enough.

Imposter Syndrome is a really shitty thing to be suffering from, and it’s a pretty hard thing to escape. You feel like you’re shit, so you don’t make things, so you feel shittier about not doing things, and so on.


I’m someone who very firmly believes that most people can do most things if they apply enough dedication and practise, and even I struggle with this still. Something that helped me was getting and maintaining a job, eventually I began to feel like maybe, just maybe, I wasn’t tricking them and was actually decent at my job.

I’m sure that’s only one way of getting out of that funk, though. A key component of it is becoming more forgiving of yourself. Perfectionism will only ever make you miserable about the things you create. I was only able to enjoy my work more when I stopped beating myself up over every mistake. That’s also only in regards to my engine coding side project by the way. I still give myself tons of shit whenever I try to design a game, or when I write something. I always think it’s garbage. Always. But I’m working on it.

Something that helps me right now is just trying to finish things. A lot of the time I’ll start something with an initial surge of excitement, and that will fade and I’ll think it’s all shit. Then I never work on it and never recoup anything from my investment. Whereas if I’d simply stuck with it I’d have at the very least learned some useful things about what doesn’t work. When you abandon something early on you miss out on all those learning opportunities.

This is actually part of a theory that’s been percolating in my head lately about creative work. Which is that you have to be okay with making shitty things. I realise this isn’t something new, but there’s a difference between hearing something and internalising it. You have to be okay with making shitty things because that it is literally the only way to make good or even great things. I can’t expect a game idea to spring into my head fully formed, be amazing in it’s implementation the first time I try it, and have no unforeseen issues at all. That’s crazy.

Every single project that I’ve worked on has started with some excitement and then eventually run into serious issues. The difference between the ones that I’ve finished and the ones I haven’t is that the ones I finished usually had outside pressure applied. They were either for college, a competition, or my actual job. I had no real choice, they HAD to be completed. This made me/us actually work through the issues that came up, and I learned valuable lessons each time. They never turned out exactly the way I liked, sure, but they were never as awful as I thought they’d be. Each one was usually better than the last, too.

Now I’ll wrap up this meandering post by linking to a typography of an Ira Glass quote that says all of this far more succinctly than I did.

The Urge to Create

I work in a creative industry. From indie exploration of obscure subject matter, to AAA blockbuster thrill-taculars, there’s a lot of imagination and creative juice running through the veins of game development. So why do I struggle to create so much in my personal time? I always feel like I should be creating, but it sometimes feels like an uphill battle.

Dare to be Digital
I competed in Dare 2013. It was a very creative environment, with multiple teams all making some really innovative stuff whilst being very passionate about it. Being constantly surrounded by that many people focused on producing things was a really great seedbed for further creative output. It was like a snowball effect, the more surrounded by creative people doing creative things I was, the more creative I became. More and more and more. I had this incredible urge to make things, cool things. It was a virtuous cycle. I created all day long (and sometimes all night), and then I would go and have these great conversations back our lodgings, and then I would write.

I had a saying during that time whenever I would begin to watch some tv or mess around on the internet which was “Would I rather be creating or consuming right now?” The answer would always be creating, and so I would get a lot done.

First Job
Since then I’ve found it a lot harder to create. I’m not sure why that is. My day job almost directly after Dare was being a game programmer. Every day was filled with game development. That said, it was developing games which I personally wouldn’t play. Not because they were bad games, but because they weren’t for me. Moshi Monsters village, for example, is a kids game in a franchise that is also for kids. Not exactly something that’s going to set my world on fire. This would certainly explain some damping of the creative juices. However I lived in Dundee during that time too, which is a university city that has a very vibrant game development community. My girlfriend was finishing up her course in computer arts, my friends were almost exclusively programmers, artists, and audio developers for games. You would think these two competing elements would balance each other out.

So why the drop off in creative energy? One reason could be that competitions are intense things. In Dare we were under a very strict timeline (8 weeks) to create a game from scratch, which we would then have to showcase. That kind of thing leads to a very singular focus. All anyone talked about was game development, or the competition, or exciting social drama!

Perception of Self
It may also be that while I was confident in my ability to design and improve games, I was a lot less so in my technical skills. I felt that I had ill-prepared myself for an actual career in games programming during my college years. I didn’t have nearly the skills I felt I needed to be successful. So I began to improve them. This has led to some fun things, like SimEngine. However it’s also led to me only focusing on improving my technical skills when sitting down to do some of my own development work. I’m a game developer who doesn’t make games in his spare time.

That statement being a fact is really damaging to my perception of who I am. When looking at the media surrounding games I’m constantly presented with people whose creative output is insanely prolific. I think of these people as game developers. I also think of myself as a game developer, but how can I do so when I don’t match one tenth of these peoples output? I’m afraid that my love of my craft isn’t sufficient for success, artisticly or financially.

Creative Failings
Writing is something I like to pretend I do. It’s something I’ve always admired and it’s always a skill I’ve always wanted to cultivate within myself. I’ve tried a website like this before, with regular posts. I have always failed. I just get bored and don’t bother writing new stuff. This one’s the first time I’ve decided on a regular schedule. A new post every Tuesday. This is hard for me to do. Yet so far I’m doing it, and I’ve produced more regular content than I’ve ever done before.

I say the thing about writing because I think of it as another example of how I find creative work difficult. I wonder is it a common thing, to enjoy/ long for the end result while dreading doing the work to get there. Probably. There are plenty of people who want to be in shape, after all, who never attain the golden body they dream of. The people who actually do get in shape are the ones who found a way to make the work to get there enjoyable, or who pushed through the discomfort.

I don’t create as much as I think I should, and it’s damaging to my perception of who I am. Having a regular deadline for writing new things has made me create more regularly than I did before. A similar deadline for games development might work. Creative work is difficult. I wish I had more drive.


The Importance of User Testing


What is User Testing?

Fairly self-explanatory, user testing is when you test your games with actual people. Either letting them play and jotting down notes or guiding them through and giving them a questionnaire. User testing has a lot of approaches. The beta testing weekends that in-development MMO’s tend to use are a kind of user testing, as is getting a family member to try the latest build of your game.

Why should I care?

You should care because user feedback is important. Nay, it is probably the MOST important thing for you to get when building a game. You know why? Because after working on a game for a while you lose the ability to gauge a few things, namely:

  1. How easy it is to understand your game
  2. How fun your game is

I don’t say this out of the blue as a strange aside, it’s happened to me on nearly every game I’ve worked on. It’s easy to lose track of what fun is when you’re focused on meeting deadlines and implementing new features.

The game I made for my fourth year project in college is a good example of the importance of user feedback. The base of it’s combat was a directional system like Mount & Blade’s or War of the Roses. You could attack and block in three directions. The only way to negate an attack would be to block in the appropriate direction: top block with top attack, left block with right attack, etc. We thought it was a good system and we had fun designing and implementing it. All was well and we did our first round of user testing about 2 weeks before the deadline, this was when we got an unpleasant surprise. It turned out that no one blocked, ever. Most didn’t even know they could, but even those that did couldn’t be bothered. This was a big problem because it rendered the main meat of our gameplay unused and weak. People couldn’t engage with the system because it was poorly explained, unwieldy, hard to understand, and not that much fun to execute successfully.

Now you might argue that if the system was this bad then we are simply bad designers for having chosen it, that a better game designer wouldn’t have made the same mistakes. This is possible, but does not negate the usefulness of user testing. More experienced game designers won’t make as many mistakes; they’ll churn out work of a higher quality at a quicker pace. But the simple fact of the matter is that you won’t always be working with great designers, and even great designers can get things wrong. The nice thing is that even if you’re amazing and wonderful, user testing can still improve your game. It allows you to see through the eyes of the people you’re designing for, and shows you the game from a viewpoint unclouded by the development process or familiarity.

When should I User Test?

As soon as you can. Your first goal when developing a new game should be to get it into a state in which you can user test. It can be rough, just use cubes and raw geometry if you have to, but it’s important to get your basic gameplay there and working. Hell, if your game is the type that’s semi-easily transferred to paper or board game format then mock up a quick paper prototype. This will save you lots of time in the long run as you find out what features are and aren’t fun at an early stage, before they’ve sucked up a ton of development time.


The sooner you learn what is and isn’t fun the sooner you can correct it and the less negative impact a silly design decision will have on your game. Plus you have a much closer idea of what players find fun at all times; use that to guide your further decisions.

Also, don’t worry if some parts of your game aren’t ready before you start testing – you can still test the other elements that are. You have to be wary when testing this early though, ensure that any negative user experiences stem from genuine distaste with a feature and aren’t just because the stuff that makes it fun isn’t implemented yet. Think of a game with great shooting; how much of what makes it great lie in the execution of the shooting mechanic? I bet not so much. If you were to remove the recoil, the particles, and the sound effects then you would almost certainly find it lacking. User dissatisfaction then isn’t always because of a problem with your base mechanic, it could be a problem with it’s presentation.

That leads to an important point, however: the user is not always right. Sometimes a person is having a bad day, isn’t interested in the genre of the game you’re making, or the game just doesn’t click with them. That’s okay, not everyone will like your game (hard to bear, I know). That is why it’s important to do a lot of user testing. Test with your target demographic, test outside it, test with people who play games, test with those who don’t. All this will give you a broad base of data from which to draw results. If a lot of people find your combat engaging then you can probably ignore (or just cursorily consider) complaints of the few that didn’t. However, if a lot of people from different demographics are finding it difficult to understand then you KNOW you have a problem.

User testing is cheap, easy to do, and nearly always improves your game; often in ways you didn’t even conceive. So go on and get your game to that playable state, then moan at your friends until they come test it for you.

You’ll hate hearing some of the complaints, especially the ones about your favourite mechanics. Grit your teeth, because you need it.


I do a lot of coding in my spare time. Most of this coding is poured into a game engine that I’m writing, called SimEngine. It’s a simple engine, it simulates stuff, and that’s my name, so it seemed appropriate. That said I might change it. Frostbyte and Infinity sound like cool engine names, SimEngine not so much.

SimEngine link in case you missed it.

It’s built in C++ using OpenGL, and a variety of small libraries. It was originally started simply as a way to learn about OpenGL, however I’ve kept expanding it and it’s now a thing to teach me how to build low level systems (such as are seen in game engines). My logic for this being that knowing how to build things that are common to games from scratch will only serve to make me understand them that much better. It also teaches me more about how to architecture systems, as well as helping me understand how engines work so that I can better know how to use other ones I might encounter.

A lot of the time has centred around the Rendering side of things, reflecting the projects roots as a way to learn OpenGL. Examples of this can be seen in the posts I’ve written about sprite animation and instancing.

When I first began working on SimEngine it was called OpenGL Attempt 1. This was where I struggled through learning modern OpenGL. I’m still no master at it, but I feel a lot more comfortable than I did in those days. It was hard to work on it back then, it felt like pulling teeth to get even the most basic functionality off the ground. As it wore on and I got more comfortable it became a lot easier. Now I enjoy opening it up and just adding something, like that new animation system. The momentum has finally taken over.

It’s been really educational writing this engine. I feel like if I had to implement something from the ground up for work I’d now have a much better chance of achieving it, because hey, I’ve done it a bunch of times already. I also think it’s going to be a good thing to show to potential employers to get them interested, as if I can build a half-decent project like this in my spare time, then I’ll be able to do the same or better while working for them. There’s also the thing of it being great to have personal projects, it shows a dedication to your craft that I think employers like to see.

I think that most game programmers, aspiring or otherwise, should write an engine of their own at least once. It gives you a much better understanding of how things work from the ground up, without the obscuration that modern game engines employ to make things easier to use. This might help diagnose strange bugs that you see in the course of your normal work, or give you an idea on how to optimise a previously unknown section of code.

My next step will be to decide what my engine needs for me to make a simple game with it. If I’m already there then that is wonderful, if I’m not then I have something to aim towards when deciding what new features to add.

Be ready for the wave of AAA titles with SimEngine in their credits…man, I need to change that name.