game maker

A Post Mortem on Developing my Game, D.A.B.G

Like many avid games players, I have spent many an hour arm chair designing when I came across moments that provided frustration, annoyance or a weird solution to a problem. I am not the first and certainly won't be the last, but after almost a decade of thinking about it, I finally decided enough was enough, and made a game myself.

First off, I haven’t made any money from this game, nor do I have any intention to. It would be nice don’t get me wrong, but I am not an idiot despite what many people say: The game just isn’t good enough to make any money from. This was a learning exercise and one I heartily enjoyed.

But it does beg the question, can I call myself a developer? Well in my heart, I am torn on this. Games Developer, as much as I would like it to be, isn’t my full time job title. I won’t be making money doing it, same as I don’t make money writing. I have always been of the mind that if you don’t make money from something you do, you can’t formally call yourself that.

However, I spent hours of my life on this project, across a few months. I formally released the game on and have even had a couple of downloads. When I say a couple I mean five total. Two of which were me testing the download to make sure everything was working. The code is all mine, the ‘art’ such as it is, was created by my own hand and the systems in place were all designed by me. So yeah, I guess I am in fact, a Games Developer.

I have to say it's a nice feeling to call myself that, after years of trying and failing to even get interviews for jobs at games companies - jobs that aren’t even design or coding orientated. I recently tried for a Senior IT technician role at a developer, basically doing what I do full time now and was told my skill set doesn’t match. Which sucks.

The last few years have been awash with games developed by people ‘doing it themselves’ as it were. Old school designers have stated it is a return to the ‘bedroom coder’ era of the 80’s, but with a generation that grew up playing games and dreaming about making them, and then making that dream a reality.

That was me. I dreamed of being part of a team that made great games, like the ones I was playing on my PC and consoles at the time, and tried several times to get into it. The problem I have always had, though, is a severe case of impostor syndrome. I am considering another article on that so I will leave it there, suffice to say that if you know what it is, it can be crippling.

25 years later I overcame that (yes, its that bad), and downloaded a copy of Game Maker, yoyo games free engine. It sat on my laptop for a couple of months, but once I loaded it up, I ran through the first couple of tutorials and went from there.

Those tutorials are pretty great. You make games almost as rubbish as mine, but it slowly teaches you how to use the ‘drag and drop’ interface and gets a game going pretty quickly. The engine has its problems from my admittedly low use, but as a starting point, that first glimpse into the development cycle, it has pretty damn sweet.

Game Maker uses a ‘drag and drop’ interface to allow you to get up and running quickly, and I have seen some marketing materials that state you do not need to know how to code at all to make great games with it. My experience differs from that statement. While yes, the interface is great and means you don’t have to memorize built in or create new methods and algorithms and actually type them into a code editor, getting it to do anything slightly more complicated that what the thing you dropped is supposed to do is a pain.

For example, I have a ball in D.A.B.G ( henceforth being called ‘the game’) that bounces around the screen, and when it hits a goal at the bottom, assuming it's the same colour, it speeds up and increases the score by one. The drag and drop interface should mean I can place all the elements to make that work into the GUI and set a few parameters and hey presto, but that doesn’t track.

That interface has a set number of things you can in fact ‘drag and drop’. Things like mouse click events, what happens when an object is created in the game and how to display the score. Which is good for beginners, but if you want it do what I wanted to with the ball, I had to drop the ‘execute code’ item in the correct place, and then write code to get it to speed up and change the score, as well as check for the colour.

In one sense, this isn’t a bad thing, I was able to practice coding skills I picked up years ago and, for the most part, they worked, but saying the engine is capable of making  great games without you having to learn code is flat out wrong in my experience. That's not to say that Game Maker isn’t a capable engine, but the interface isn’t as awesome as its creators would have you think, so if you are going to give it a try, it’s something to be aware of.

I have been coding on and off for years, but I mainly did it using Java in University and being taught object orientation, where each little bit of code that does something is treated a separate ‘object’ that can be manipulated. That's a reduced way to look at it but, I hope you get the idea. Game Maker isn’t truly object orientated, so when I tried to be clever and use that to get around a problem, in this case, checking if the ball’s speed was a certain number or higher, I found I wasn’t able to do what I wanted how I wanted to do it.

I was able to get around the problem with a bunch of nested ‘If’ statements. So if the ball’s speed is 10 or less, do the following. Which was wrapped inside an if statement about what do if the ball is the same colour as the goal, which is wrapped inside another one. To say it was elegant coding would be a straight up lie, but it got the job done. There are programmers reading this screaming at the screen right now I am sure.

Due to my lack of experience, I had to turn to the forums for coding help. I have to say that this is an immeasurable tick in Game Maker's box. The community is great, and always willing to help, and help they did, so long as I provide as much info as possible. There was no judgement, just friendly nudges in the right direction for things I hadn’t asked about and bona fide answers to the questions I had. It was a great experience, and my biggest tip to anyone is to use this resource.

With the coding in hand, I had to make some art. I am no artist, go download the game if you don’t believe me, but the engines built in sprite editor was a great way to easily get something looking half decent for what I wanted to do into the game. By creating a sprite in the editor, you then have the option to go to an actual sprite creator program that comes with the engine and design whatever you want. You can even link several images together to create animation, which is how I came up with my user interface.

That interface changes a sprite between two different sub images when the mouse is moved over it. I knocked that up in a total of about three hours for everything I wanted to add, and I am actually quite proud of how it looks. Professional UI designers are probably hunting me down, but hey, for a first attempt, it is pretty sweet and surprisingly easy.

The rest of the art are just circles, squares and lines, some you see, some you don’t. I toyed with the idea of getting the walls to change colour to be the same as the ball when it hits, just to give the game a bit more a stylized look. However, I couldn’t wrap my head around what I had to code so gave up and made the walls invisible instead.

That is an example of both ‘feature creep’ and measuring the ‘scope’ of the game. As I was developing it, I kept coming up with new ideas for things to put in, increasing the size and scope of the endeavor. Some worked out - making sure the speed doesn’t get so fast the collision detection fails - but others would have affected my intended release date and provided little benefit.

I learnt quickly that while idea might be good on paper, getting it into the game might not be worth the effort. I found this actually quite fun because I was essentially self editing on the fly, analyzing my ideas so that I made sure the right ones made it in. That’s not to say it wasn’t difficult at times, there were several days when I didn’t make any progress because I was stuck trying to figure out a way around a problem before asking for help.

Luckily, I could get away with doing this. I wasn’t doing it full time as a job, I didn’t have people relying on me to get things done, and there was no formal release date set. This meant I could take my time, think through my ideas a couple of times and take the appropriate action. I like to think I would do the same in a formal developer role within a business, but the pressure would be on then, and I honestly couldn’t say for sure.

That is one of the biggest lessons I have learnt from this experience. Developing in your own time, for fun, changes the rules. I know I am not doing this as a job, but the job I do on a day to day basis requires deadlines to be met, people that depend on me to get the service they need and all this to be done professionally and in a decent time frame.

Doing something for fun means that you can ignore all of this, and do it when you want to. I honestly think I could have had this game done and out in less than a week if I was working on it full time. To be frank, if I took a week, I was probably slacking off a lot of the time. Again though, I was never aiming to make money from this, maybe get my name out there as a developer a bit, but it was more to learn.

We all have to start somewhere, for me, it was this game. I had developed a couple of applications in Uni for course work, and a couple of games when I did a course at the open university, but I never considered myself any good, nor that they would lead to more development later in life. But not long after I finished Uni, I started to follow the games industry more closely.

I found myself drawn to articles and videos about development, and criticism that delved into that side of the industry. Most people fantasize about having the power the game's protagonist has, being some preternatural bad ass that mows through bad guys with wanton abandon. I fantasized about being the guy that come up with the fiction that powers that fantasy, or helping to bring someone else's vision to life.

To be fair, I also want to be Iron Man, or the Green Ranger, or any other of a hundred preternatural bad asses. But I am a realist too, and in the real world I need a job, and I would like something I truly enjoy. I love my current one, but games developer is just cool as job titles go, and now I am one. I am cool.

My game is one I have been kicking around for years in my head, and finally made. I am planning on developing more in the future, and maybe even taking part in game jams. My impostor syndrome is an ever present threat, one I am working on defeating, and developing over the last couple of months has really helped.

The one thing I found the most easy, taking only a few minutes, was the name. I called it D.A.B.G. I am trying to be a bit clever, a bit self deprecating. It stands for Dumb Ass Ball Game, because my game is dumb, is game about a ball bouncing around the screen and I am an ass for thinking I have any right to make it, but I loved doing.

It was a modest start, but that isn’t a bad thing. I learnt how quick feature creep can set in, how to stay focused on what I am making and how large it should be. I learnt I have enough skill at coding to be dangerous, but that isn’t a bad thing and how you must work around the limitations of the software to get the best results. Those limitations may also make your game better and improve your skills by forcing you to get creative with the way you do things.

I am very proud of the achievement, and kept in mind a statement I read from a developer that stated if you do make a game, finish that first game, no matter how bad it is. I followed that. I know D.A.B.G isn’t a great game. Hell, it wasn’t that long ago I would have played it and rolled my eyes at how amateur it is and I am sure there will be plenty of people who would do the same, if they play it. No one will, but there isn’t much I can do about that.

If you enjoyed reading my over view of my development time, and would like to know more, please hit me up on twitter. If you want to play D.A.B.G, I apologize for making you feel that way, but you can play it for free by downloading from here.