Gamedev is hard. It is even much harder when you decide to do it as a solo developer. It is close to impossible if you also have to provide for your family. How can you stay productive when the world doesn't want you to finish your game?
You need to eat, you need to pay the rent, you need to spend time with your wife, your children, you should have a social life. Let's not forget about always seeking attention cat. On top of all that, it would be really neat if you could stay sane.
During your game development, there will be many times that something will shake your confidence. If you didn't cut the scope of your game, it might take years to finish what you envisioned. During these years you will come across hundreds of other ideas for different games that might seem better. There will be hard times when that shiny new game release will compete for your free time with game development.
No matter the reason, your dedication to your dream will be tested constantly. Below I will describe what helped me stay on track and always push my game development forward.
Plan your game development
Don't start your work by running the game and searching for things to do. You can waste a lot of time or move on to play some game. That's disheartening. Not everything you will have to do to finish the game will be fun. You won't be inspired to work on your dream every day.
If you are struck with inspiration for new features, new ideas for improving the game - write them down. I use a spreadsheet for this, but there are applications that might better fit your needs.
Split your game development into manageable tasks. Make the tasks as small as you can. The first column on the image above is a short description. Most often this should be enough to remember what you want to create. The second column is how much time you think it will take to finish the task. The third one is how much time it actually took you. The fourth column is a task description, you should write details there if a feature is complex. The last one is a date and time when you finished the task.
I don't personally need historical data about how many times my assumption about time I need to finish a task was wrong, so when I finish it I change the second column value to reflect the third one. The reason for this is I like to see a percentage of how much work I did. It gives me that extra motivation boost.
To calculate a percentage of work done you sum all estimates and divide it by the sum of time it took you to finish everything until now.
Some of you at this point might be thinking, but game development is all about creativity and making such plans will kill that by turning it into a chore. Let's discuss this in the second point.
The plan is crap, planning is gold
You are not making a plan to constrain your creativity. You do this so you can push some work even if you are tired or uninspired. You might at some point discover that your game doesn't work as intended, or feature is not as fun as you imagined. Maybe you decided that the feature you want will take way too much time and it's better to focus on something else. Having a plan allows you to prioritize your work.
Constantly change your game development plan. If you had a hard day and can muster only an hour, you can either push your plan by 0.5% by picking a task you know you can do in this hour, or waste an hour looking for inspiration and possibly finding nothing. Or worse, decide that this hour will not help you finish the game and not do anything with it.
Unless your idea is well established and you are at a point where you can see the finish line, you don't need to plan everything you want to accomplish in your game development. For the last half a year I'm constantly at around 300 hours planned for my game. I write new ideas when I feel inspired and when something doesn't work I cut it out. Regular iteration based game design doesn't collide with planning.
There might come a time when you feel that direction you are taking the game doesn't turn out great. For example, at one point I wanted to try how a trading game mechanisms would work with my roguelike idea. I didn't like the outcome so I cut it out and decided to just write a completely new plan with a new direction. That's why sticking to the plan even when it doesn't work is not a good idea. However, planning your game development will keep you productive when you will need it the most.
The above method of splitting your development into small tasks and estimating the time cost is not new. Big and small development companies moved to SCRUM methodology that applies these planning methods among others to estimate the cost of work and keep programmers productive. The bigger the team, the more advanced tools are required to keep things organized. If you work in a team and spreadsheet would just get too messy, you might want to look into tools like Jira
There is also a great free tool called Toggl
. I like to use it to measure my time when doing tasks. Ticking time in the browser tab helps me to stay focused on the work at hand when other tabs tempt with their promise of funny videos.
Spreadsheet is rather easy to set up, you can copy a clean google spreadsheet from here: development spreadsheet
That's it for now, if you have some ideas of your own on how to stay productive during long development cycles, please help fellow gamedevs by sharing them in the comments below!