How I have stopped abandoning the projects and finally finished one
As many fellow developers I too have struggled with what Ethan Levy called an Indie Shame Spiral. For several years (I think at least since 2014) I always had this brilliant game idea, I have started to work on it, implemented several prototypes, sometimes some core systems, graphics, etc. and then I got bored, my motivation disappeared and I started to slack the work on the project. Sometimes, it's not even the game's fault, as we work in our free time, sometimes you might just have a rough month and work and you just can't get yourself to work on the free time project. And you don't want to burn out on your free time activity. The worst part of this is that sometimes I was not the only one on the project. Sometimes someone else got bored and demoralised the whole team, including me, but sometimes it was me what lacked motivation and dragged the team down, which is very sad and I'm sorry to those fine folks. I have tried to observe what is the reason for me to lose the motivation and I think the biggest reason was that I saw the huge scope of the project that was ahead us, I have imagined the years it will take us and that took all my motivation away. I will later return to this topic, the first part will be about me developing the game and the second one will be about my tips on how to finish your project so if you are interested in the tips only, skip directly to the second part.
So after not finishing several managers, strategies, child games and other project (and also actually finishing some work for hire projects) I felt really bad and I have decided to start a really small project by myself and I have also decided to do all the work by myself (including art which was something I had no experience with as a programmer). I had several reasons to do this
I took it as a learning exercise, even if I didn't finish the project, I would have learned how to draw and other cool stuff
If I would fail, I would just waste my time and money
I also wanted to keep the scope super small, so I didn't want anyone to talk into my scope
I have started on 2nd April and my goal was to have it finished within next two weeks, max one month and quit if I don't and repeat with a smaller scope. Well, it didn't work as I had expected and I have released the game 1st of August.
So what happened during that time? I have implemented a first working prototype in just a few days and everything looked bright, I was pretty confident it will be easily finished in time. Well then it showed up that the 80/20 rule is not just made up as I have though. I spent a lot of time drawing the assets and then drawing them again and again. When I showed the game to my friends, they have discovered numerous bugs in my "physics" system and I had to rework it. Then I showed it to my wife and she didn't like the feel she had when moving the stones so I reworked the physics again. When I was satisfied with the physics and the visuals I have started to work on more level features and twists than just moving the stones. I have also started with more detailed polishing like particles, sound effects, custom shutters etc.I ended up with with quite polished level elements, menu, score system, physics and so on but I had just few test levels. This was another point where my resolve has come to a test because building levels was super boring and far, far more time consuming than I have expected. First levels took me just something around one hour to create. But as the levels grew bigger and more complex, it took me on average several hours, sometimes a day or two to build and test a good level. I even built a simple level editor to help me build the levels. In the end, I have ended up with 45 levels, which took a big portion of a time I have spent on the project. Then another point came when I wanted to give up on the project. I had the game, I was collecting the feedback and improving the game but I needed a website, press kit, trailer, screenshots and other things to support the release. This turned out to be also quite a big and boring task I had to chew. In the end, it's a priceless feeling to finish a project even as small as this one. I don't expect to make much or even any money on this project, but that's actually good for me, because I will be super happy for any copy I sell.
By the way I have localised the game in 11 languages. I wanted to localise it as an experiment to see if and how the localisation allows me to sell any copies in the given market. I have crowdsourced most of the language from my friends (thank you, guys) and since the game does not use much text, I was able to get some more languages translated pretty cheaply.
What have worked for me
In this part I will try to explain what did work for me and what didn't. Please do not try to copy it whole, try the tips and see what works for you, I did the same with other people articles and tips (thank you Ethan and others) and I have found out that some of them worked for me but a lot of them didn't work for me.
Scope, scope, scope
This is in my opinion the most important one and I know everyone says that and I also know that it's one of the hardest to follow. Do not overscope! Make your project small, small that you will even think it's too small. If you are not an experienced developer and this your first project you intend to finish, plan small! If you plan your project to take a month, it will take a several months, maybe a year. If you plan it to take a year, it will probably take several years.
The problem is, at least for me, that if I don't see an end, I get demoralised. We have once implemented a manager game, I have spent like a year of my free time programming the systems just for the prototype. Can you imagine how much time it would take to test, iterate, polish and finish game like this at this speed?
Work every day
This is also another quite popular and common advice I found super useful. Do something on your project every day, it does not need to be full workday, it does not even need to be an hour. It can be just 10 minutes, tweak some variables, refactor some code, do some art. The thing is that if you miss one day, there is a high chance you will miss another day, and the day after and before you know it, you won't even recognize your code. I had a rule to work on the project at least one hour a day. Most of the day I have spent much much more but sometimes I've just opened the project, review something and that was it for the day.
One man scrum
I have followed some of the scrum methodics. I didn't have any meetings with myself (some people do) but I had estimated the stories, planned the sprints and so on and in the end I liked it and it worked quite well for me. I have used pivotal tracker as a tool for tracking the agile stuff.
Have a different goal then money
For most of the project before, my goal was to sell as many copies as possible, make money and maybe make the game I would like to play (which contradicts the scope rule). I found out that this is a really bad form of motivation. For this project I have chosen another motivation, two in fact. The first one was to learn something new (drawing) and to basically make a game for my wife. This was a good motivation, because I learned in the process of making the game which was super exciting and also I loved to watch my wife try the game (well in the end, I made the end levels a little bit too hard for her so she does not like the end product that much, the important thing is that this drove me forward). In general, if this is your free time, enjoy it, money is not your goal!
Show the game often to anyone you can
I'm the kind of person who likes to show his work to the others (even though I'm always very shy to show it) and gets the recognition for it. So if I can make a build every week or every day and show it to my friend or to my wife, that's something that drives me forward. You will also get a feedback as a side effect and that is also very important. On the other hand, what really kills my motivation is to work on something for a month or a year that no one is interested about. Nothing is worse than implement some interesting system no one cares about.
Polish as you go
This one might sounds a little bit odd, because it contradicts the general advice of iterating first and polishing later. But what I have found is that if I implement everything unpolished and then I have to polish everything I feel overwhelmed and discouraged by the amount of polishmentneeded to be done. So even though I might do some extra work of polishing that I throw away, later I have found that this way is better for me. Also, if I show at least a little bit polished game to someone, it has better wow effect then just squares and circles.
What didn't work for me
Making a commitment
I tried to make some commitment that would force me to finish a game before some deadline. It never worked for me, either I struggled to find something to commit to or the commitment was not hard enough and I rather lost something (like money) than honoring the commitment.
There were probably more minor things that worked or didn't work for me that I have forgotten to mention! Feel free to contact me, ask questions or suggest your own methods to finish a project. Thank you for reading this far!