For me and many other programmers, games have been an entry point into the field of software engineering. When I was younger I spent most of my time consumed by different games, often daydreaming about the working with games just to be able to spend more time immersed in their virtual worlds. Now, over a decade later, I am proud to be able to say that I have turned what was only daydreams into my reality.
What is the longest time you have creatively worked on one single thing?
Leonardo da Vinci took four years to complete the Mona Lisa. Beethoven spent four composing his fifth symphony. Nowadays, games much like movies, also require several years to finish. I mention this to emphasize that producing creative works takes time, I will save a controversial post about games and art for another time.
The truth is that all forms of creative work demand a tremendous amount of effort to complete, and the quality of the finished work depends on the depth of the mental effort that is invested into the work. The fact is that creative work itself is genuinely difficult, especially when it comes to games, which combine several art forms into one. The challenge is something that many developers overlook as they daydream about the games they want to create. A lot of the problems arise from you not being able to decide when to be creative and when you’re not. Creativity is not something you can brute force, it is something you need to cultivate by exposing yourself to things that sparks your imagination.
When I was younger, I used to enjoy drawing monsters, much like a daydreaming game developer. However, my hastly scribbled monsters rarely resembled the vivid creatures of my in my imagination. This happened because I never committed to completing them. I abstracted away all the effort required - various pencil strokes, precise details, shading, decorations as well as the monster’s story, name and goals. Consequently, my monsters never progressed beyond mere scribbles, so they stayed unfinished forever.
Unfortunately, most indie game projects meet the same fate as my unfinished monsters - they remain prototypes or forgotten side projects. Thankfully, today there are now tools available that can help you reach a completed stage faster. Game engines offer ready-made templates that can provide a foundation from day one. AI tools can assist with coding, generate images and even create sound or music. You can argue that these tools theoretically reduce the time needed to finish a game project - and they do to some extent, but they only solve the problem of reaching the finish line. They don’t automatically guarantee high-quality work, this means that just because tools can put together the pieces for you, you will not be finished in a shorter total timespan. Instead, you are sacrificing control over your project in order to get more velocity, but this can only be taken advantage of if you know these tools very well or if your AI generates the images or sound you want in a reasonable manner of time.
Once again, most indie games are never finished. Between the ones who are, there are very few that are hit games that will earn enough revenue to allow the developer to quit their job or immediately self-fund the next title.
There is a lot of talk about finishing a game or completing it as a project but the definition of what a finished game project is is quite vague. It can mean that you just shipped the product to Steam, or it can mean that your original idea is functional. There are no rules requiring you to have a main menu, or be able to adjust settings like sound or controls but yet players expect them, missing them will instantly give players the feeling that the game is not serious. There are of course exceptions to this but you get the idea.
To me, as a complete beginner with no games under my belt, finishing a game means first setting a certain bar for your game, then pushing it to that bar. With Brainroll being my first title, I didn’t know where the bar was at first. I just knew in which direction it was, mostly because of inspiration I got from looking at other games, this gave me a headstart in understanding what systems should be in place. The closer Brainroll got to the bar, the easier it was for both me and the people to tested it to know what was missing. This is the type of iterative process that I used throughout the entire development.
How I got to the finish line
When I started working on Brainroll I already knew that I wanted to make games, I also knew that I wanted to make it my own by being in charge of the code and design aspects. I had a good understanding of how much time I realistically can expect to pour into the development. Additionally, I wanted to develop the game publicly and offer an early access version to those interested in supporting it. This early access version was a paid edition of the game that received regular updates for every minor and patch version.
I also had a firm understanding of the project scope, as I had recently abandoned my first game - a 2D pinball game. I had planned on making it a pinball-based roguelike where you would travel between different planets and kill different types of aliens using your pinball spaceship. I even approached a local tattoo artist and asked him if he was accepting commissions in order to draw artwork for the game. However, after a year, I realized the scope was entirely unrealistic for my first game, given my skill level at the time. Consequently, I chose to develop something simpler.
The first important aspect of starting the second project was offering a paid early access version. It may have seemed weird for an unknown indie developer to do, but my intention was to find motivation in delivering a product to someone I didn’t know that had actually made an investment in the game. I wanted to be someone who could be trusted and relied upon, that I wouldn’t accept payment and then abandon the project.
This decision turned out to be one of the best decisions I made. After a couple of months and interactions with other indie game developers, someone kindly purchased a copy to show support, thereby holding me accountable for delivering on my promise. I am not the only indie developer that has found help in these small motivational factors, I know other developers that helped push themselves by things like live streaming their development, keeping a journal, and even taking help from family and friends to push them to finish what they started.
The second crucial part was having a realistic understanding of my capabilities and the scope of the game from the beginning. Interestingly after implementing the core idea, I received feedback from playtesters who felt that the gameplay lacked engagement. This prompted me to re-evaluate my progress and consider investing more time and effort to improve the game’s quality. Once again, the early backers of the project proved to be a great source of motivation for this decision as I wanted to make their money well spent.
I just mentioned that I did focus on quality towards the end of development, it’s important to clarify that although I made some refinements to the game’s levels I didn’t re-implement the game to achieve this, all the mechanics were already there and I did not do a complete re-write, instead, I just adjusted parts of the game.
Even with this effort the game still falls short of being in the top 5% of indie games. Creating the best puzzle game on Steam was never my goal. My aim was to become a game developer and “have skin in the game”. The reason I never aspired to create the most unique and outstanding experience was that, without ever having completed and released a game before, I couldn’t fully understand or estimate the effort required to reach the finish line. Without that knowledge, how would I be able to talk and explain what is needed for me to complete it to potential investors, family, and friends? I estimated Brainroll to take approximately one year to complete, but it ended up taking two.
Why it took so much longer than I anticipated was that I never fully realized that coding the game was just one part of the process. There were numerous other tasks that I hadn’t anticipated, such as:
Managing accounting for the itch.io payments.
Dealing with feedback.
Resolving hardware-specific bugs.
Ensuring compatibility across different Windows versions.
Communicating and commissioning artwork.
Establishing an efficient debugging process for issues beyond my control.
Robustness of a UI system.
Addressing performance and optimizations.
Implementing settings and save files with versioning in case of updates.
Steam integration.
Rewriting rendering code just to make the art that I commissioned work.
Audio sliders need to be logarithmic instead of linear.
Adapting the game to different aspect ratios.
Effects to make the game look more interesting.
Implementing compression and keep both memory and disk footprint small.
Having a lot of days where I just don’t feel like working.
Mental fatigue to the point of me not being able to think straight or have normal conversations.
These examples provide an idea of the additional tasks that unexpectedly arose during the game’s development. In my next project, this list will change with new unexpected things. Throughout the entire project, it was crucial to maintain a balance and prevent burnout, especially considering my full-time job as a programmer, which occupied eight hours of my day before I could even start working on the game.
But what about quality?
What is video game quality? If we ignore the absolute lowest bar a completed game should have. Some ideas may pop into your head such as story, graphics, or size. I personally think that the gameplay is what will determine the quality of the game, how well the problems with the idea have been ironed out, and how much thought has been spent deciding what the player will be doing, feeling, and thinking while playing the game.
I believe that game design is a skill like many others that improves with time and practice. I would never claim that the game design in Brainroll is exceptional or even good, I can however confidently say that both me and my game have come a long way since it first started. I see it as a journey of growth and development, where you gradually will form your own style and preferences. I think, however, it is important to not get fixated on perfection from the start. I would never finish Brainroll if I wouldn’t accept anything less than perfect. Instead, I’m going to take what I’ve learned and apply it to everything I do moving forwards.
Moving forward I plan on attempting to grow my design skill by having smaller side projects just for the sole purpose of practicing my game design skills. I am going to dedicate a few hours now and then to creating a board game or experimenting with small game prototypes. Why I didn’t make a great leap and do it for this project was that it is of my opinion that in order to successfully apply your skill to increase quality, there needs to be a product to apply it to. If your monsters will stay forever unfinished then you cannot reap the benefits from the quality increase of a great design.
How you will reach the finish line
If you want to release a game of your own, it’s crucial to first spend some time planning your route to the goal. Determine how much time you can allocate to the project each month and estimate the amount of work you will be able to accomplish within that timeframe. This is something that I recommend you do throughout the entire lifespan of the project, estimate each task and then measure how long it actually took. This will allow you to build up a better skill with planning but also help you stay on track because it will be more apparent if your time is spent in the right or wrong place.
Once your expectations are adjusted and your route is planned you can select the appropriate tools that fit the scope of your project. Especially if it’s your first game then lower the scope even further. I recommend reading this article by Chris Zukowski titled “Happy 2021: You are going to finish a game this year” for more guidance and motivation.
Surround yourself with people who will support, motivate, and assist you. This point is critical for success. Personally, I couldn't have completed Brainroll without the support of my girlfriend, as well as the encouragement from my wonderful friends and fellow indie developers who wanted nothing but the best for me. This point is essential for success. Do not allow others to bring you down. Stay true to your vision and goals. If you encounter individuals who try to detract, provide toxic advice, or simply aren't interested in your growth, it's important to distance yourself from them. Don't let their negativity drag you down. Remember, those who behave this way are projecting their own insecurities and cynicism onto you. Spending time with them will hinder your productivity and hinder you from achieving your dreams.
Listen to feedback, but don’t blindly accept every suggestion. Throughout the development of Brainroll, I had the privilege of receiving help from excellent testers and developers who provided very valuable feedback. I carefully considered and took action on much of the input I received on the game. However, there were also instances where I chose to not follow certain suggestions. Remember that you are in charge of your project, in the end, it will be your name associated with the final product. Design the game that you believe in. Some feedback I received sat in my task management system for months before I decided whether to take action on it.
Avoid getting sidetracked. Side projects are fun and can provide a well-needed breath of fresh air, but it also takes away time from your main project, further delaying its release. If you need to take a break from your project, set clear limits on the amount of time you’ll spend on the side project before returning to your main focus. Alternatively, consider side projects that your game will directly benefit from. For example, updating your renderer or developing tools that help you create new levels.
Don’t get stuck in marketing, of course, you are creating a product that you want to earn money from so that you can continue your endeavors but if you are just starting out then your focus needs to be on actually learning about finishing your game. Once again Chris has a great article with the title “The stairstep approach to indie game marketing”. If you are just starting out then you will be on level 0 in his article and according to it doesn’t need to focus on making the world know who you are, save that for your 2nd or 3rd game. Remember that your new games will generate traffic to your older games as well.
My view on the matter is that just like finishing a game, building your career in indie games is not a race but a marathon. “Rome was not built in a day” kind of thing.
If you like what you’ve read, please consider subscribing. Thank you for reading.
I am also releasing Brainroll on Steam, be sure to check it out!
Hi Oskar,
Firstly, congrats on seeing your game through to the end.
I'm about to release my own handmade game on Steam in a couple of weeks and was wondering if you could dive into deeper detail about "Resolving hardware-specific bugs" and "Ensuring compatibility across different Windows versions"... I feel I might have some issues there with my own game since I'm only testing it on 2 or 3 machines.
Thanks,
Nick