When I was younger, working on hobby projects has been a huge problem: laziness combined with loss of enthusiasm both took their toll on my results. Now, however, while being far from perfection, I have found some personal techniques that help me to preserve enthusiasm and allow me to persist through the whole process while managing it more effectively. At one point I have been working 50h/week and studying about 30h and still found four or five hours during the week for my programming hobbies. Here are some technical tools and methods I’m using to keep developing:
Don’t be afraid to cut your losses
This has to be the first point. Based on that, if you cannot build a prototype in 2 week spare time and see how it plays – don’t bother. It would suck to develop the prototype for 2 months during the weekends and after-work hours and then see that it is completely unplayable.
Enthusiasm passes, goals stay. Write them down.
When you get an awesome idea, you feel excited. You see the final product and imagine how great it is going to be. Then, as you start developing, you notice that your “honeymoon phase” has passed, you’re no longer in love with the game you are making and you are now irritated by the time it will take to develop. The image of the final version you had in the beginning now gets blurry: you’ve spent time, you somehow get the idea what do you want to see, but now you feel the lack of enthusiasm to do something: you just feel the weight of responsibility and necessary man-hours required to complete the game. You’re (hopefully) halfway through, but you have no idea how to finish the other half, because you’re feeling so lazy that you’d rather watch a turtle race than write a new code lines.
Here’s what you need to do: as soon as you have the initial vision of the game, start writing down issues, split it into smaller sub-tasks. For example, when I’ve started developing my Blades of the Righteous game, I’ve began using bitbucket’s built-in issue tracker when I had an awesome idea of a feature. That way I’ve made lots of small issues like “Check distance when attacking”, “Add Item System”, “Allow player to inspect objects on game map”. You get the idea. My enthusiasm is almost gone now, but the open tracker issues are what keeps me going: the goal (to publish the game) remains, and I know exactly what I have to do to get to it. Speaking about bitbucket:
Use version control
If you are a professional software engineer, you’re probably already doing it. It is very important to do so for your hobby projects: not only it allows you to make backups of your projects, enforcing additional level of data safety, it also allows you to revert unnecessary changes / mistakes and see the code changes from the previous versions which saves you time. Speaking about the previous versions: if I ever get discouraged, I just go to my repository logs and see my progress.
Another important thing regarding logs: use meaningful commit messages. I’m pretty sure you won’t remember what did you mean with “Fixed a bug” message. Compare it with “Fixed a bug in combat when attack damaged the friendly unit.” It’s also going to make it easier for you to search for the necessary commit should something go wrong with your new changes.
Rather than increasing the number of game features, try to decrease it
“It seems that perfection is attained not when there is nothing more to add, but when there is nothing more to remove” – Antoine de Saint Exupéry.
I’m sure your game will be cooler with all those 200 droppable items. But do you really need them? Unless you are A+ developer working 60+ hours a week on your dream game, try to reduce the content to a minimum. I’m not saying “remove everything”, I’m saying “remove everything that is not of the essence.” Don’t give up on things that you think will be great, but choose your battles carefully.
More than that: don’t bother to make all the features at once. Try to get your game going as soon as possible and then give it to your friends. They will provide you with feedback. Listen to it.
This is all I wanted to tell. Don’t give up on your aspirations: even if in the end you are the only one who plays the game you made, that still means that there IS a game to play. Good luck!