Happy New Year everyone! It’s 2020, meaning it’s the start of not just a new year but a new decade (unless your one of those people insistent that the decade starts on 2021)! Needless to say, it has been a full ten years, and it’s fitting that nearly ten years earlier I started working on a computer game for an Extended Project at my Sixth Form project. I did a brief summary of what I’ve done over the last decade on Twitter, but I figured I’d write about what my experience with game development has been like. I won’t write in detail about every game and related projects I’ve ever worked on (at this point it’s 48, not including some of the game jam projects that didn’t get finished), but to give some highlights. You can check out all the games I’ve worked on here, as well as the academic stuff here.
I’ve always enjoyed playing video games, and it had crossed my mind on a number of occasions to have a go at making my own one. Problem was that I struggled when it came to trying new things on my own so if I didn’t have someone to instruct me, I’d get lost and eventually give up. I remember looking through DarkGDK and an old 3D game engine, and the tutorials were confusing so I stopped after a few days. Even when I was 16, I didn’t even think of being a programmer or a games developer (I originally wanted to be an electrical engineer) until one day where I took a class that was meant to demonstrate what you’d learn if you took Computer Studies as an A-Level course. Having a good teacher who could walk you through writing code (in Visual Basic .NET) effectively got me to consider taking up programming instead.
Game development was something else, I remember at the start of the year there was plenty of encouragement to do what’s called the AQA Extended Project, which is basically an assignment that students have a year to create on any given (approved) topic of their choosing. It’s the equivalent of half an A-level grade, and it’s advertised as being good on a University application because it’s extracurricular work. I remember in one of the numbers of presentations that the teacher speaking about it saying something to the likes of “You can do a project on almost anything, such as something you do on a daily basis like taking care of an animal, a certain subject you’re interested in, or a particular hobby you have. One year, someone made a computer game for their EPQ, if you want to try that, you can.” and almost immediately on my mind, I thought I should try that.
For the report, I looked at a number of tools at the time and stumbled onto Game Maker 7 (I later moved to Game Maker 8 when that came out). I read on a couple of websites that it was used in secondary schools for creating games, and it looked like you simply needed to understand flow charts in order to do stuff so I downloaded it and tried the tutorials. For the time, they must have been the most straightforward and clearest tutorials I’ve ever used. It took me less than a day to make a vertical scrolling shooter similar to 1942 just from following a PDF document, so I figured for the project I’d turn it into a horizontal scrolling shooter. I was also a fan of a sprite-based Final Fantasy webcomic called 8-Bit Theater by Brian Clevinger, so I figured I’d use Final Fantasy sprites and make it a fan-game: 8-Bit Theatre: Black Mage is in a Shooting Game.
Looking through all my documents, I think it’s safe to say I might have been a bit too ambitious for a first project. According to the design document I wrote for it, I was hoping to create eight levels, each with a boss battle (in the end, I only managed two levels and one boss battle). I even gave the game a full plot synopsis even though I never found the time to implement a game’s storyline. The game was also purely developed using the Drag and Drop visual scripting tool, which did enough that I wanted to do although more experienced Game Maker developers don’t even touch it and do everything almost entirely through Game Maker Language. That being said, I did try some of the more intermediate tools within Game Maker such as Timelines and Paths, and the boss I did end up making was massive. Regardless, it was definitely a learning experience, and it was a fun project to do in-between school, homework and a part-time job as a school cleaner. The teachers definitely thought that my game, even in an incomplete state, was an accomplishment and recognized that I had skill and drive. In some aspects, I probably had a bit too much drive, I made a gameplay video of it and put it up on a Youtube channel, pretending I was a games company called YARGHgames (I’m pretty confident it was an acronym but I cannot recall what it actually stood for). Still, we all have to start somewhere. I did try to remake this game back in 2018 for a games jam, and although I never went further than the original, I think the fact that I could remake what was more than a year of work back in 2010 in around a single week in 2017 shows I must have improved somewhat.
When it came time to apply for University, wanted to do Games Programming as a career, with the hopes that I could write code for games on the major video game consoles. I originally chose to do games specific courses, but my parents insisted that I go to the more general computer science route instead. Neither of my parents had much of a background in computers and didn’t think there was a good chance in getting into games, and in fairness neither did my A-level teachers. My cousin was the one who recommended me to look into Staffordshire University because of the games and computer courses, and I made it my first choice. I enrolled as a Computer Science student in the latter half of 2011, and after taking an optional module in games programming I decided to transfer before the end of the first semester (I was able to convince my parents that I should do it, and early enough so I don’t have to do additional modules to catch up).
Most of my work was purely academic, the most game-like stuff was a Pac-Man clone and one where you controlled a goldfish. I did pick up a lot of stuff using Microsoft XNA and C#, as well as some early 3D programming using OpenGL (with the really old framework GLUT) and then later DirectX. I even spent three months at a Summer Camp in Hawley, Pennsylvania where one of the activities I did was teaching C# and XNA. I didn’t try to make proper games until two things happened: Game Jams and Microsoft.
First one was Global Game Jam 2013, I went mostly because I knew two of my friends were taking part. Staffordshire University was the largest GGJ site in Europe for a number of years, so you got to see a lot of people get involved. Joining one of my friend’s team, we worked in XNA to create this top-down driving game we named Anarchy Ambulance in a similar vein to crazy taxi, except you’re running people over and delivering their hearts (incidentally, this was the same GGJ where Surgeon Simulator was made). It was a terrifically fun project to work on and it remains one of my favourite team-projects I’ve worked on, we were able to get a lot done and had a laugh doing it. I didn’t think it was entirely possible to get the game done in two days, but James and I managed to pull off all the coding stuff, even the collision with rotated bounding boxes. It was received fairly well at the time because of its morbid concept, I remember years later seeing it featured on a showreel the University Games Design faculty played during open days for a few years after. I’ve gotten into doing game jams since that day, because there is a lot of creativity and drive to finish a game in a short amount of time, having to decide what’s worth implementing and what stuff needs to get polished.
The other one was Microsoft’s Windows Games Ambassadors, a programme that was set up to encourage students to build gamedev portfolios by writing games to Windows 8 and Windows Phone 8 and submitting them to Microsoft’s digital store. One of the requirements for the role was to make multiple games yourself to demonstrate and work on your own portfolio, so I made a couple such as BOOM, a game where you defend people from fireworks. There were a lot of good experiences I had while working as one of their ambassadors, from getting free devices (such as a Nokia Windows Phone which remained my smartphone for years) to attending events like EGX as one of Microsoft’s crew. It did give me an early look into building games for mobile devices in particular, as well as have early experiences with submitting games to storefronts (one that I’ll get more used to later on). I still get updates from other members of the team and almost all have worked in games in some capacity, such as with Unity, Playground Games and Supermassive, as well as other technical fields such as VR and Medical.
During the second year of University, most students were looking for an internship or student placement. At the time, games industry internships were hard to come by and often were available late into the year, so I started off by applying to big software companies. After a few rejections, I applied to IBM. I had a lot of help with the application process, from the University’s careers team to an old friend from Sixth Form (who was already working for IBM at the time) and my sister. I remember having to fill in application forms with answers that could be compiled into an essay and going to the Hursley offices for interviews, a presentation and multiple group exercises. I got accepted and decided to work at the Hursley office as it was their main software engineering hub in the UK starting in August 2013.
Despite the day-job having nothing to do with games (I worked in the RDM, which was one of their data management teams), the work environment was built to be relaxed enough that employees could spend half of their time in different parts of the building to attend other things like courses to pick up skills (I did a few C++ and PHP courses at the time), conferences, as well as events that ran to help the local community (called Givebacks). I did two of the more popular Givebacks, one was teaching a local primary school IT once a week and the other was making a game for a competition called Blue Fusion. I pitched a game called Clean Commuter where you learned programming by giving a car simple commands, with the goal of making the car reach a goal in the fewest possible moves. It became one of the selected games and I was appointed team lead, so along with assisting with writing the game’s visual side (other programmers worked on mechanics and network multiplayer parts) I also had to manage the team and make sure the game was ready in time for the competition. It was a struggle at first, but things got a lot more comfortable once a plan was put in motion and the work got into a routine.
I was also working on Secret of Escape around that time, beginning as a game jam project with the premise of “What if there was a stealth game which you had to complete as fast as possible?” (I somehow forgot Metal Gear Solid: VR Missions had existed). Since I liked the concept I thought I’d make it a proper game. Because of my work at IBM, I had to keep the work outside of my spare time and hold back on releasing it, which did help in some areas. This was also the first game I made an attempt at showing in a public setting with the first Norwich Games Expo and the Indie Zone at London Gaming & Anime Con. I also got to show the game unofficially at one of the early Indie Zones at Insomnia Gaming Festival, after I found the guy running it by chance and told him I was an indie game developer (networking was a funny thing back then).
In retrospect, I’m not surprised the game didn’t do so well as it wasn’t exactly a game you could easily get into and hardly stood out. I also thought to add easter eggs that no one would find was a good idea, having one or two for a laugh is fine if they are easy to find with a bit of messing around but I put in a bunch that only I would know or someone if they had to dig through the project, Not to mention putting it on Desura and IndieGameStand not long before both services would shut down when Steam was starting to do Greenlight wasn’t a good decision, at least it’s still free on itch.io and was nominated for a games industry award. It’s also the time were two of my personal favourite solo game jam entries came from, Galaticus from GBJam and Glow Drop from Ludum Dare.
After I finished my year at IBM, it was back to University for one last year. I did end up branching out a bit more by doing engine and multiplayer game development alongside more 3D programming. After spending most of my time with C# in the first two years, and Java in my placement year, I went almost entirely into C++ for the third year, with a few modules in C#. Two key projects at that time for me were the Junior/Senior project and the final year project.
The Junior/Senior project was Staffordshire University’s biggest game design course, with students from every games course (including Games Programming) being eligible to take. For the entire year, teams would make a single game. Each team was made up of sub-teams such as tech, art, design and sound, and each member had roles assigned to them, including a producer and director role. The team I was in was called Ironworks and after a few weeks of making concepts, we went with making an auto-runner where one player had to finish a course while the other player had to sabotage them.
As I was the only person studying in Computer Games Programming in my team, I was assigned as a senior tech, meaning I worked under a lead tech and handled some of the more advanced parts of the game while the three junior techs worked on the less advanced parts. I remember our team being unfortunately unbalanced, as outside of the tech team and producers was one animator, one sound designer and mostly concept artists. Lack of animations was such a problem, that I took the initiative of writing small scripts to make the player look more animated when it moved. I remember the tech team joking that no matter what happened, our game was at least gonna look great. What made the course particularly special that year was that Epic Games sponsored the course and granted every student early access to Unreal Engine 4, so through the year we got new updates and would often raise issues with the engine that would get fixed in the following week if we were lucky.
It was also probably one of the longest and most intensive courses, being around four hours per week on a single day with an hour in-between, excluding any unscheduled sessions to get the game ready before the deadline. Because of my course having Junior/Senior technically being part of a separate module to every other course, I was only required to attend the first two hours whilst everyone else had to attend the four hours. I stayed home after finishing the first two hours after the first day, and I ended up feeling bad for leaving everyone else to work so from the next week onwards I decided to stay for the entire four hours like everyone else, spending my hour break quickly going home to have a pizza before heading back to campus. Apparently, I was one of the few games programmers that actually did this, and maybe the others had other modules as a priority but I personally enjoyed spending four hours a week working on a big fancy looking game.
The Final Year project was the big chunk of the final year, as well as my degree. Everyone had to do a thesis on something related to the course they were on. I had a small interest growing in procedural content generation as the topic was growing in interest around the time (from Spelunky to No Man’s Sky), so I thought of using that as my topic. That quickly developed into level generation and an idea of building a tool that could help with generating levels. Doing a thesis required a lot of taking notes and writing down alongside with doing a project. I had to research a number of different algorithms and methods from academic papers and conference talks, alongside learning to use GUI, Unit Testing and file-format frameworks to create the tool. Thanks to the industrial placement at IBM, I got used to treating University more like a full-time job in some aspects, so even on days where there was little to no lectures or tutorials to attend, I’d go to campus in the morning and spend most of my time in the library until 5pm when I got home, made dinner and do stuff in the evenings. In the end, I had submitted an 80+ page bound essay with a fully functional level editor that used algorithms such as L-Systems, Hilbert Curves, Cellular Automata (plus ones I created myself) as well as a tiny demo where you had to find gemstones in a randomly generated cave. To this day I’m not sure what I’m more amazed by, either the fact that I was able to get it all done despite the thesis document getting corrupted, almost losing everything, and my computer exploding thanks to a faulty power supply (and accidentally damaging the hard drive twice when trying to fix my computer), or that I was able to get a first-class degree at the end of it all.
After I graduated, I was looking for work. I did get more rejections than I did when applying for an industrial placement, but I was given an offer to work for a company that made games in C++ using computer graphics on dedicated video betting hardware. I started working there in August 2015 and I’m still working there four and a half years on.
Going back to that little demo, I decided to look into it a bit more after graduation and kept working on it even after starting a new job. It was much different from what Gemstone Keeper ended up being, the exploration was much a part of it (because I wanted to demonstrate the level generation) but because I’m a fan of arcade shmups, the gameplay in that demo was much more rigid and focused on getting a high score than traversing caverns, collecting gemstones and finding the exit.
After I finished my thesis, I was getting more interested in roguelike games, where there is more of an emphasis on preserving your character and planning your route, as opposed to the games I typically play where you go straight in, guns blazing. As I got more into them, the more I felt I should focus on the exploration and the relaxed vibe, and was part of the reason why the game has its ASCII aesthetic. I’ve always had this concept of an arcade shmup combined with RPG elements in my mind, but I couldn’t get an idea for it to fit. Next thing I know, I play a few traditional roguelikes like Angband and DoomRL and suddenly, an idea just clicked.
There was a lot of experimentation and trial-and-error to get the ASCII art to look right, although I did anticipate that early on because I always like to develop a game where there was a considerable challenge that was a part of it. All the ASCII art is generated in-game using a single font file: the design of sprites, objects and walls were planned out and then I wrote out which characters should be rendered and where individually. Unfortunately with the nature of fonts, you cannot guarantee that the individual characters would be rendered in the right place, so eventually, I wrote out a function to print out all the generated textures so I could properly inspect them and make necessary adjustments.
Moving from the demo’s original framework of Allegro to SFML was a good move, in the long run, it’s a much nicer framework to work with. It also meant I had to structure the engine in order to get what I wanted. I take a lot of influence in my game engine architecture from Flixel (and it’s more modern equivalent HaxeFlixel) because I like how it’s built from simple pieces, where everything you see in the game is either a basic object, a physical object or a group like it’s purely the entity part of an entity-component system. Although I have tried to write a framework in the past with Ricoh2D, it was working on Gemstone Keeper and taking inspiration from HaxeFlixel that lead to Vigilante, my own game framework that I take pride in. I don’t believe creating your own engine yields an output superior to those who make games in a proprietary engine, but there is something I find satisfying in being able to control as much of your system as possible, to the point where you can find issues in the lower-level part and fix them as soon as possible.
I was worried through most of the Steam Greenlight experience since, despite the criticisms of the quality of most entries meaning the bar was pretty low, there was still that worry that not enough people would like the game enough for it to get through. Accepting an offer to be part of a Groupees bundle did help, even at the cost of the value of my game, as I feel that was mostly what got the game accepted onto the Steam store. It’s a shame that Steam has put less effort into quality control since dropping Greenlight for a direct fee. Despite a fairly rocky launch (I decided to launch the game a day before my birthday in 2017, whilst at Rezzed, and then ended up having to release several patches after I got back home because there were several bugs), I still feel like the game did really well. After all of my experience, I moderate my expectations, yet I was still chuffed to see statements saying how many copies were sold in the first few months.
I was aware of anticipated information on the upcoming generation of game consoles during University (PS4, Xbox One and Nintendo Switch), but it wasn’t until info came out about Nintendo Switch supporting OpenGL that I thought there was a possibility of bringing one of my own games to the console without the help of Unity or another game engine. It was about half a year after launch that I wrote a lengthy pitch about bringing over Gemstone Keeper for the Nintendo Switch, but I heard nothing. I did contemplate following up or trying again, as a few game developers I knew advised, but I wasn’t up for the possibility of radio silence. That was when I decided to do more game jams, particularly in 2018 where I did one game jam a month. Then in late 2018 I got an email from Nintendo asking if I still wanted to bring Gemstone Keeper to the Switch, I responded yes and so starting in 2019, I got my opportunity to develop games for a major games console.
Along with porting over SFML, I decided that the graphics need to be upgraded as the Switch was an HD console, so the game needed to be HD too. The game was originally built at half the 720p resolution, but upgrading involved more than just doubling the size of everything. All the positions, sizes, the movement calculations and other details had to be checked by hand, line by line. It was all worth it in the end.
The thing is, I’m honestly not sure. I said a few months earlier that I want to make my next game a Nintendo Switch exclusive, and I do have an idea or two, but even more than a month after accomplishing a goal that had been in my mind for 10 years, I’m struggling to find an answer to “What will I do now?” I’ll still maintain Gemstone Keeper as long as its necessary, and after only doing one Ludum Dare last year I want to get back into doing game jams, but right now I feel like I’ve just peaked a mountain. I think I’ll just find out where the wind will take me.
If there is anything that I want to show people from writing all this, is that getting to achieve your goals takes a lot of work. I’m as guilty as any other novice in his creative minefield in starting out expecting to make something much bigger than I was capable of. I needed good guidance, support and to take a lot of opportunities to get the experience I have today, and I’m nowhere near done. You might get lucky, but I wouldn’t rely on it. It might have taken 10 years for me to get a game onto a Nintendo console, but at least I have 10 years to look back on.
Time to see what the next 10 years will bring me.