#1GAM - 6 Month Post Mortem

This year I've been taking part in One Game a Month (#1GAM). Wanting to make games is what got me into software development, but for the last few years I haven't really had enough time to do anything.

Although if I'm being honest, I haven't really made enough time to create anything.

#1GAM gave me a target to focus on, and with the exception of May (when I moved house and then broke my computer) I've managed to create one game every month. They won't be winning awards any time soon, but the aim is to finish something, no matter how small it is.

The rogue's gallery is as follows:

January 2014 - Haywire January - Haywire
Based on an Atari ST game of the same name. Fly your little spaceship around, capture animals and deliver them to the mothership.
February 2014 - Super Puzzle Dungeon Adventure February - Super Puzzle Dungeon Adventure
Match colours to help your adventurer progress through meadows, forests and dungeons.
March 2014 - Zap March - Zap
A really bad shoot-em-up made in four hours. Four different versions available, each released at the hour mark.
April 2014 - Splodey Boats April - Splodey Boats
Made for Ludum Dare #29. Drop your depth charges to destroy the enemy submarines (and try not to kill any fish).
June 2014 - Over-Engineered Invaders June - Over-Engineered Invaders
Space Invaders built using a custom framework. No download available for copyright reasons.

With the exception of Over-Engineered Invaders, all of these were written using AS3 and Flixel.

What I've Learnt

Game development is HARD

Coming up with an idea and then turning it into reality is difficult. Anything over the simplest idea can quickly become a challenge, and once extra features start getting added it becomes even harder. It's a constant battle to make something that's a working piece of software and something for people to play.

Experience makes it EASIER

Haywire didn't really turn out very well. Although it was no fun to play, it got me back into the game development mindset and reminded me of how to do various things. In the end I used lot of stuff from it in newer projects, so I count the overall experience as a positive one.

Don't get me wrong, it's still difficult to make things, but having the library of code and the experience of solving certain problems has been a tremendous help.

How to say "no" (sometimes)

Knowing that I'm building a small project, and that I have to keep it small, has helped me focus on building useful stuff without getting too bogged down in the engineering aspect. There are projects I've been working on for years that would have seriously benefited from being built alongside a bunch of smaller test projects. I can't believe it's taken me this long to figure that out.

It's even harder to get people to play your games

#1GAM hasn't brought in a whole bunch of traffic to the site. Google says about 50 visitors. I've had about the same traffic from Twitter, and about 100 players from Ludum Dare #29. Granted, I'm not doing this for fame or fortune, but it's still a little disheartening to create something that nobody plays.

There are a lot of games out there, and getting seen isn't easy.

Game development is not just about game development

I like the technical challenge of building a game. I like figuring out how to get things moving on screen in a way that I want. I like building an experience for someone else to play, and then seeing that they play it in a totally different way from how I expected.

However, this is only part of the story.

For the last 10 years or so I've been trying to recreate the experience I had when I first started building games for the PC. I wrote two of the best game demos I've ever made. They were fun, people liked them, and I got them built in a couple of months of super-productive coding. It probably shows how much I enjoyed it that even after all this time I still think very fondly about it.

So far I have not been able to recreate that experience.

I've gone though a bunch of phases and emotions. Maybe I was just a better programmer back then? Or now I'm too old to really dedicate myself to it? Maybe I'm just not trying hard enough? Or am I too easily distracted? Or just not good enough?

Perhaps they're all true to some extent, but looking back I think the biggest mistake I make at the moment is developing in a vacuum. I don't want to show any work unless it's "perfect", so I show nothing. Part of what made that time so special was that I didn't do it alone. I showed off what I was making, but I also looked at what everyone was creating. We all encouraged each other, and made what we wanted to make.

The funny thing is that now there's even more chance to interact with other developers. There are way more forums and sites dedicated to it, not to mention the likes of Twitter, Facebook, Instagram, Google Plus, App.net and everything else.

Moving forward

Normally this is the part of a post-mortem where I write a bunch of bullet points and then promptly ignore them. This time I'm going with just two resolutions:

  • No more developing in the quiet. Show more stuff more often. Get feedback and encouragement.
  • Pay attention to other developers. Spend time playing their projects. Give feedback and encouragement.

I think they're pretty achievable. Feel free to leave comments promoting your own games and I'll take a look!

Over-Engineered Invaders - Post Mortem

"Over-Engineered Invaders" was my June entry into #1GAM. It's not publically available as I was lazy and used copyrighted graphics from the original Space Invaders. Having said that, the main reason for creating it was to put some of my own framework to the test. The results were certainly enlightening…

What Went Right

Found some weaknesses

This might not sound like something positive, but a key part of me writing the game was to find out where my own code and process was below-par.

Needless to say, I found plenty of places to improve, and building a quick project really highlighted them. Some areas of code are poorly written, and there are other areas of functionality are missing completely. I never really realised how much of a help Flixel is, so it was certainly an eye opener.

Found some strengths

One part that went absolutely right was the custom entity framework. I used a very simple version of component-based entities when creating Ineptia, and even though it was crude it really helped. This time around I used an entity system approach, and it worked out better than I ever could have hoped.

In previous iterations I have used components that have data and behaviour mixed together. It works well enough, but one thing that always bothered me was deciding which component should do what, and how they should communicate. With entity systems, the component is just data and systems are just behaviour. It makes breaking down data and behaviour much easier, and because systems can access multiple components at once there is rarely a need for them to communicate with other systems.

With this approach, systems are added to the World and can then register their interest with one or more components. For example, you can have a system that only cares about entities with a PlayerComponent attached. Like components, systems can be added and removed at runtime, so new behaviours can be added dynamically.

There's a couple of gotcha's, and it requires a slightly different way of breaking things down, but it works rather well.

What Went Wrong

No release

Although it wasn't very polished, but the main reason for keeping the build private was the use of copyrighted graphics. Now I'm pretty sure the lawyers wouldn't have come to get me, but you can never be too careful.

Late start. Again.

I moved house at the end of May, and the various bits of move prep spilled into June. Coupled with work deadlines it didn't leave me much time or energy for game development, so I didn't start until very late in the month. If I had started earlier I would have been able to change out the graphics and release something.

No inspiration

Although I enjoyed figuring out the technical aspects of the project, the idea of cloning Space Invaders didn't really trigger my imagination. I've always felt like I spend more time trying to solve software problems rather than gameplay ones, so I wasn't really expecting this.


Start earlier

I'm writing this two weeks into June, so I guess I failed that already…

Don't use copyrighted material

This one speaks for itself really.

Make something I enjoy

Space Invaders was fun, but technical challenges alone don't motivate me as much as I thought they would. There needs to be some creative aspect in order to inspire me to build something.