God Is Debt

About

God Is Debt was originally made for a game jam, which I talk about more here. While the Game Jam Version took 190 hours to complete, the full game took exactly 500 hours. Most of this time was spent on development, but a portion was also spent on miscellaneous admin and marketing tasks.

Every single part of the game was solely made by me using GameMaker Studio 2 as the engine, scripting the gameplay with GML. Aseprite was used for all of the sprite art, as well as storefront artwork. The music was produced in Waveform 11, and the SFX in ChipTone.

Gameplay

The game fits well within the Shoot-’em-up genre. Although it borders bullet hell in some areas, it doesn’t quite cross over into that definition.

The game takes place over 6 levels in which the player travels up the screen and confronts waves of enemies which are configured to move in various curve patterns, or hold still as stationary obstacles. The end of each level features a boss fight with more elaborate attack patterns and larger, more detailed artwork.

The player controls a fighter craft which can fire bullets in a straight line, or overheat their weapon to fire a spread-shot attack. This small detail alone provides the player with a constant moment-to-moment choice of how to deal with enemies. Whether to carefully manage their shots to keep a high fire rate or opt for a slower but wider spread shot. Each weapon has its advantages and in some cases there is a correct choice.

As enemies are defeated they drop Power which the player can collect. This gives the player points, but functionally it also upgrades their weapons to fire more projectiles per shot. Once a weapon is at level 3, Power will then overcharge weapons which allows the player to Power Shift, making them invulnerable, but also firing a very high number of projectiles that will clear the screen, or make good progress in a boss fight. It also doubles the points earned from collecting Power, so if a player doesn’t need to use it for survival, they have the option to earn some extra points.

As for level progression, I went for a world map which offers the player a chance to play levels one after the other, as they see fit. Once all have been completed The Complete Saga is unlocked which offers a classic arcade experience of playing through each level in sequence in one sitting.

Each level has 3 medals to signify the player’s progression. One medal is earned for completion, while 2 more can be earned for ensuring all enemies are destroyed, and for not taking any hits. If a player earns all medals in one go, they then earn a special Perfect Clear medal, and a Steam achievement. Getting Perfect Clears on all levels will unlock the second epilogue.

One other consideration I had was for difficulty. I did originally plan to have 3 different difficulties but scrapped this idea due to the added development time. It would mostly just be changing variables to instead be 3 variables that switch based on the player’s chosen difficulty, but the real task I felt would be too much would have been to test and balance each level 3 times over, while just 1 was already taking enough time. I instead opted to treat the Perfect Clear system as a pseudo difficulty, letting the player decide if they wanted to push for the challenge themselves.

The difference that 3 variables per enemy would have done is allowed me to adjust speed, health, amount, as well projectile speed, amount, spread, etc. The more substantial difference would have been with the lives system. Normal difficulty had infinite lives, while Hard and Extreme had limited lives with a game over screen if they were exhausted. Saga Mode was much harder for the player, with Hard offering 3 lives per level, but Extreme offering 3 Lives in total. After scrapping these, the Normal difficulty system was the one that remained, and along with it any limited lives, or game over screen.

God Is Debt Achievements

The bosses were simultaneously the most interesting and challenging part of the game to make. I had a lot of fun coming up with silly ideas and seeing them come to life, but due to their size and complexity each boss took a long time to draw, and then code. A few of them were significantly reworked throughout development as well. The basic code which controls how the bosses move from one attack phase to another was shared between them all, but beyond that they are all built very differently, so still took a long time to develop.

Achievements

Every designer loves designing an achievement list, and it’s clear why. Making a collectable set images for people to gradually earn is a very satisfying concept. For God Is Debt I kept it simple and had planned to have only 30, which were pruned down to just 25. For each level there is an achievement for completing it, Perfect Clearing it, and fulfilling an extra challenge unique to each level. In addition to these there are a few others for Saga Mode, viewing each Epilogue, and some general level completion ones. I gave them unified borders so it was clear how they are categorised.

God Is Debt Achievements

Narrative

The game jam which this was originally made for was themed on anti-capitalism, and the narrative didn’t change for the full game. It would be quite easy to make the case that most games are narratively focussed on that exact theme. Abe’s Exoddus (my favourite game), and many of the early Ratchet & Clank entries (my favourite series) are quite explicitly anti-capitalist, with the main characters seeking to right the wrongs of the world around them, being the Magog Cartel, Chairman Drek, or another businessman villain.

The name of the game “God Is Debt” sums up the world quite accurately, goofy pun aside. Capitalism has been so revered and worshipped to the point that it has manifested into literal gods which I named Paradigms, or ‘para-dimes’, a terrible pun not even worth mentioning. Each Paradigm is a reflection of a symptom, or phenomenon of capitalism, and rules over a domain which also fits the theme, some more obvious than others:

  • Tutorial Simulation – The AI bubble
  • Shores of Waste – Pollution and waste
  • Straight of Devastation – War, colonialism and genocide
  • The Flats of Ire – Consumerism
  • The Chartered Lands – Labour exploitation
  • Safe Heaven – Extreme wealth

The player, only referred to as ‘comrade’, travels between each realm, where they are occasionally contacted by two colleagues who also remain unnamed. A scientist, and a commander. They comment at the start of each level, before boss fights, and if I felt the need to draw attention to anything in particular, such as a new mechanic. Sometimes a Paradigm will butt in and make a comment too. Dialogue is delivered via a popup dialogue box, but due to the auto-scrolling nature of the game, I kept these to a minimum. So there are only about 20 interactions throughout the game, each very brief.

The only other source of written narrative are the intro and 2 epilogues, each is a slideshow of a few images with text, which is written in a very brief, folky, sermon style.

Sprites

The game has a huge number of sprites which took up a large portion of the development time. There are 250 png files which correspond to a mixture of spritesheets, singular images, and environment tilesets, which is a lot. A quick count of individual images, including those that weren’t in the final game, is approximately 1000!

For the environments, I made a tileset for each level which could be autotiled to form a base layer, and then depending on the level, add buildings or other decoration. Even though the general layout was automatically tiled, I still had to go over each layer to add variation which took a while. I couldn’t find a way to improve the autotiling tool to add some more randomisation, so manually going over it all took a while.

The enemies also took up a good chunk of time, but the bosses were much more complex as they had lots of elaborate attack animations, secondary forms, or multiple moving parts which had to work together.

The 10 intro and Epilogue images were quite daunting as they were full screen pieces of art, but were finished to a standard I was happy with. Considering they are only shown for a few seconds and would only be viewed by the player once or twice, they didn’t need to be masterpieces, just enough to compliment the accompanying text.

One part I quite enjoyed was the GUI and world map, I’ve always enjoyed GUI and had fun creating the map screen with moving tabs and the techy borders. The HUD was likewise fun to design and draw. I used adjustable 9slice sprites for buttons and menu backgrounds to easily adjust sizes to fit the contained text.

Audio

I’ve always struggled to make music, it feels very trial and error for me, though 10 years of casual guitar playing and piano lessons when I was younger have taught me some helpful, but basic music theory. Each level has its own looping track about a minute long, and all share the same boss fight music. There are a few much shorter tunes too such as the level completion jingle, as well as intro, main menu, and map loops.

I used Waveform 11 as it is free, straight forward, and doesn’t hijack my PCs audio or require annoying licensing managers, which are very frustrating quirks that put me off many other audio tools. I’ve really come to appreciate its simplicity, and think it will replace my previous goto, Bosca Ceoil.

All the songs are composed across 7 tracks, each track being a different instrument that come with Waveform. I have just 1 drum track, and 6 various synth instruments all made with the built-in 4OSC plugin.

As for the SFX, I found these quite frustrating to make at first, again due to the trial and error nature, though by the end of the project I had made exactly 100 sound effects and better understood the process. I used ChipTone which is a very handy, free synth sound effect maker. I’m glad that I now finally understand what all the cryptic synth nobs mean.

QA Testing

Another time consuming task was testing, more specifically general playtesting to check the game’s difficulty and pacing. I had several phases of development where I would perform sweeps, where I’d play through every level, focusing on a different area such as SFX or visuals, and add every single issue to a spreadsheet. This sheet peaked at around 200 issues which was extremely demotivating, but I was close to the end of the project so it was the final giant hurdle to the finish line.

I would eventually work my way through the list, either addressing issues, or marking them as optional fixes if they were more fussy nit-picks than genuine issues. A lot of things were pleasantly simple 5 minute jobs, but some larger tasks required reworking boss attacks to make them more fun or interesting, or adding more artwork to levels to make them less bland.

Storefronts

God Is Debt has been published on Steam and itch.io. Steam was a much more complex undertaking as I had to create a lot of info for the store page as well as store and library images which are all different sizes which I found very frustrating. I ended up just using the same image for everything, cropped and adjusted to fit which still took an entire day. The trailer was fun to make though, I synced up gameplay clips with the boss fight music in DaVinci Resolve and overlayed some marketing text, which only took a couple of hours.

For both stores I had to sign the same US tax documentation to declare I was a foreign entity doing business with US companies. For steam I also had to pay £80 for a game release credit.

The entire store setup process took longer than I expected, but once I had done it all on Steam, itch.io was quick to get through.

Pushing builds was also a lot more complex on Steam, I had to use tools built into the steamworks sdk to handle that, though once I’d done it first time it was quick to repeat. For itch.io it’s a simple case of uploading a zip file. I had originally intended to release it as a HTML5 export to play in browser, as I had done with the Game Jam Version, but it turns out that itch.io doesn’t support browser based games as paid products. I only found this out on release day, but after thinking over it I was fine releasing it as a DRM free download.

One additional concern I had for Steam was that some of my game’s content could be flagged for being objectionable, as some platforms are very fussy about that sort of thing. The level Straight of Devastation is about war, colonialism and genocide and has several references to Palestine which was important for me to include. If flagged it could result in being blocked from releasing until addressed or outright removed. Thankfully no issues were raised, but there is always a risk of complaint later down the line that could lead to issues, only time will tell.

Solo Development Challenges

As much as I like that this game was 100% made by me, there was a lot that I struggled with. Music production, SFX, and art are not things that come naturally to me. I’m more than happy to give feedback on them, but would rather leave the creative process to people who are skilled and passionate, and let them shine in their area of expertise. In the end a game would only benefit from professionally made assets and it’s clear that God Is Debt was made by someone who can get by, but isn’t an expert in these areas by any means.

A big drain on my time was the QA testing. The usual checks that follow adding a feature or enemy was fine, it’s an expected part of coding. But when it came to balance testing and performing level playthroughs over and over again, I found this very monotonous and frustrating.

If I could pick two others to form a mini dream team, I’d ask for a level designer who also does playtesting and balancing, and an artist who could also do music and SFX. I’d be very happy to focus only on the design and coding of the designs, though even then I’d probably prefer a dedicated coder as my coding knowledge is quite limited.

As for the Publishing side of things, it wasn’t too bad, some annoyances here and there, but a few days spent on admin tasks got it all done. On a proper commercial product I’d most likely want to handle the publishing admin myself as throughout my career I’ve seen publishers mishandle the process in every possible way.

Conclusion

I’ve learned a huge amount from this project, more than any of my others. I feel like I’ve become much more competent, and efficient in many areas such as music production, and 2D sprite art, not to mention the huge endeavour of coding the entire thing.

I’ve applied much of my experience in the industry to this project. I really noticed how quickly I was able to analyse things and decide to change or remove them for the good of the game, and how quickly I could go on a tangent to unblock other parts of development.

My goal for this project was simply to publish a game that I’m proud of, and I can comfortably say that I’ve achieved that. I have no goals or expectations for sales, though I am happy to share that despite doing no marketing besides the Steam store page, the game’s first week has made 10 sales, and gained 100 wishlists.

The project has taken up most of my time for the past few months and I’m glad it’s finished. I’ve been eager to explore some other ideas that I’ve made sure to stay away from until this was all done with. I’ll take a break from game design for a bit, but have a good idea of what I’ll be moving on to next, and if it works out, I’d be willing to go through all this again to publish a second game.