Arcade Game Designer (or AGD), created by Jonathan Cauldwell, is a programming tool for coding games on 8-bit computers, specifically the Sinclair Spectrum and Amstrad CPC computers. It allows anyone with or without coding experience to learn how to code and create a game on these early 8-bit computing systems. I have been fortunate enough to interview some of the people coding with AGD by creating a post on the AGD Facebook page…
First to be interviewed is coder Douglas Bagnall. He first started coding with version 4.6 of AGD but has now since moved on to using version 4.7. He is coding with AGD to create Sinclair Spectrum games.
RGM: Greetings Douglas, would you be able to discuss your background in 8-bit computing ?
DB: My first real introduction to computing was at secondary school were we had about four Commodore PETs (which I still have fond memories of) and a couple of Research Machines running Logo. At home we had some Pong style game that plugged into the telly, and later we had an Atari 2600. My favourite game on the 2600 was Nexar – my hands hurt like hell after playing that for hours on end. It was about 1983, I think, when I was given a 48k rubber key ZX Spectrum for Christmas – obviously the best Christmas ever.
RGM: Were you a coder back in the day or a game player ?
DB: Sadly, no. I was just a gamer, not for want of trying though. I spent hours typing in program listings from magazines — not to play the games but to understand how the games worked on the inside. I learnt how to program from these although it would be years (decades even) before I’d write my first game. Of course I played loads — Jet Set Willy (not Manic Miner – I’ve never played that, not even on an emulator), Lunar Jetman, Atic Atac, etc. I was terrible at most of the games but still enjoyed playing them.
RGM: When did you first start using AGD and why ?
DB: I started in January 2015 with AGD 4.6 (I know this because the first file I saved from AGD is dated 07/01/2015) — yes I have every single version of every game and test I have ever written in AGD. The first piece of advice given to new AGDers is to “save regularly” — and I do. All of my games have hundreds of revisions. Ever since owning a Spectrum I have wanted to write a game for it and even now, over 30 years later, that desire is as strong as ever. I spent a good few weeks looking at different options, from Sinclair BASIC, Boriel’s ZXBasic, to assembler, but none of them seemed right for me. I stumbled across AGD somehow and added it to my list of things to try. AGD was like a breath of fresh air after trying all of the other options. Don’t get me wrong, the others are great for developing on the Spectrum, but AGD was clearly designed for making games, which means creating games in AGD is much easier than anything else.
RGM: How have you found the AGD coding experience has it been easy to pick up ?
DB: I’ve been writing utilities and business type software since the age of 14 so programming is nothing new, but most of my programming centered around “events” triggering some action. Games programming, especially in AGD, is all about the “game loop” were the same code repeats multiple times every second. Once I managed to get my head round this, everything else was a doddle. The manual to AGD is very good and so I was able to learn all of the commands very quickly. It’s still sometimes easy to forget that AGD is geared towards games on a 48k computer, and that resources, especially memory, are very precious. I don’t mind this as I like the challenge of writing and rewriting my code to make it as efficient as I possibly can. Sometimes whole sections or levels have to be removed for a game to work.
RGM: You mentioned you have made a few games with AGD, what are they called ?
DB: I’ve released four games so far…
The Adventures of Bouncing Bob – Summer Breeze: This is a standard platform adventure game where you have to avoid baddies whilst completing a quest – in this case you are helping Bob to turn off the heating and to find batteries in order to power the air conditioning system.
The Adventures of Bouncing Bob – Bustin’ Ghosts: I read in a forum somewhere that it would be very difficult to create Pac Man in AGD, so I created Bustin’ Ghosts just to show that it was possible.
The Adventures of Bouncing Bob – The Lurching Dead: Again, I remember reading in a forum that AGD would never be able to produce a Berzerk clone, so of course I had to show that AGD was capable. I limited the game to 127×127 rooms (16,129). It would have been easy to have 256×256 rooms but I decided this would be overkill. In hindsight I should have limited the game to 256 rooms (16×16) which I think would have been more than enough.
The Adventures of Bouncing Bob – Jet Pack Bob: Jet Pac is still one of my favorite games of all time and I just had to make something similar in AGD. I am still amazed at how much Ultimate managed to squeeze into just 16k. I added a few features to make it different whilst hopefully giving the game a similar feel.
RGM: Which game was your first with AGD?
DB: The first game that I actually developed in AGD is called Easter Madness, but I didn’t manage to finish it before Easter 2015 and so moved onto another project with the intention of coming back and completing it before Easter 2016. Well clearly that didn’t happen. Maybe next year? I liked the Hungry Horace series of games and wanted to make a series of games using the same main character (simply because coming up with original characters is hard work). I also needed a character that would be easy to animate, and thus Bouncing Bob was born. I worked on Summer Breeze on and off throughout the rest of 2015 and much of 2016, finally finishing it in August of 2016.
RGM: What is your favorite game you have created with AGD and why ?
DB: I’ve enjoyed creating each game that I’ve released because each one was harder to develop then any of my previous efforts. I love the challenge of trying to work out how I can make AGD do the things that I want it to do. I can do things now in AGD that I wouldn’t have dreamt of when I first started. Having said that though, I’m still learning and experimenting with new ideas.
RGM: Which of your AGD created games has proven the most challenging to code and why ?
DB: Summer Breeze was quite a challenge as it was the first proper game I had ever written so not only was I learning about game design, I also had to learn how to code in AGD. Bustin’ Ghosts was a fairly straight-forward game with only one screen. The Lurching Dead was a challenge in that I moved from pre-drawn screens to screens generated as they are needed.
I spent many, many hours working out a formula which would use the location co-ordinates to pseudo randomly generate rooms with enough differences from their neighbors that players wouldn’t get bored. And of course, the room had to be the same layout if the player went back into it, no matter which entrance was used. Jet Pack Bob had other challenges. At first I was going to have thousands of randomly generated planets for Bob to visit, but I was never happy with them and so reverted back to pre-drawn screens — a decision I am very happy about as, again, I now think thousands of planets would have been overkill.
There were other challenges in Jet Pack Bob. I wanted the game to have a similar look and feel to the original Jet Pac, but I also wanted to improve upon the original in some way. Having a shield was one, and allowing the rockets to land in different places was another. I’m not sure that I achieved the “improved” status, but I am happy with the end result.
RGM: What projects are you currently working on using AGD and what can you tell us specifically about this project ?
DB: I’m working on a few different games at the moment. Another game I enjoyed; not just because it’s a great game, which it is, but mainly because it was hand coded in machine code — this, for me, is just amazing. I’ve fought with assembler and have the scars to prove it. I am in awe at anyone who can write in assembler, but what Albert Ball created in machine code is truly astounding. The game is called Jumping Jack: A fairly simple game of jumping through moving holes to reach the top of the screen (sounds easy but it does get very hard). I’ve been working on this, on and off, for quite a while now. AGD has a limit of 12 sprites on screen at once. This is nowhere near enough for a game like Jumping Jack, so I’ve had to employ other techniques like using manually animated objects as well. A nice technical challenge which is still keeping me busy.
I’m also working on a two player co-op cross between Breakout and Arkanoid which I call Breakanoid (can you see what I did there?). This required me to delve into a bit of assembler so that I could read the screen attributes to detect when the player’s ball had hit a brick. The main issue I have at the moment is memory. I’ve got to the stage were I need to edit a sprite event but AGD doesn’t have enough memory to allow any editing. This is really the only thing holding up its release (and the fact that I need to create a loading screen and select some suitable music).
Another game almost finished, apart from level design, is The Adventures of Bouncing Bob – Under World, which is similar in concept to amazing Alter Ego.
There are a few other games which I have been developing but there’s no point in mentioning too much about them as they probably won’t be developed into full games in the near future, they are merely technical challenges for me to overcome.
RGM: What is that have you learned about coding since using AGD that you may have not known before ?
DB: “Save!”, “Save!”, “Save!”. It’s so important to save regularly. Save every change. Save before testing, then reload the saved game after testing.
RGM: How easy are you finding using the AGD tools to code games ?
DB: AGD is so easy to use, especially in combination with an emulator. If it wasn’t for AGD I wouldn’t be able to create the amount or types of games I’ve made.
RGM: What are you trying to get out of using AGD ?
DB: Fun. I love coding (whether games or utilities or business apps). I also love sharing my work so that other would-be game creators can learn and make more games for us to enjoy.
RGM: Is there anything else you would like to share or add about your games or in using AGD to code games ???
DB: Don’t be afraid to experiment. AGD allows you to try different ideas without having to worry too much — just save regularly 😉
RGM: Thanks for the interview, Douglas Bagnall.