Here's a few more tips that are really important:
- When you have a real game you want to make, make several small projects that build you up toward the game. You want to make a large project. If you jump in to make it, you will get in over your head and when things get too complicated, it'll mess with your emotions. Start with smaller projects and work your way up. Have you even made Tetris or Asteroids yet? How about a small 3D interactive dungeon to explore? By being willing to start small, and put your real project on hold, you'll actually eventually succeed at completing that project. Many people want to make their dream game NOW, and they claim to know that it'll take a long time, but when you say, "work up to it in smaller games", they get frustrated, ignore the advice, and work on their dream game anyway. They end up not succeeding.
- When you start a project, do everything you can to finish it, even when you get bored. It is really important to learn the habit of finishing what you start.
On the other hand, also learn the habit of cutting your losses when you can't complete the project. If bored, press on anyway and complete. If incapable of completing it (from a huge lack of knowledge and skill), and you aren't able to learn what you need to complete it, then cut your losses there. When you end the project, make sure you really 'end' it, and don't come back to it. Although, 3 or 4 years later it's fine to return to it, it isn't fine to pick it up again only a month later.
- If you no longer have passion to work on a project, get to a suitable pausing point (make sure the project compiles fine and the last feature you were working on is completed). Take a small break and play around with a different non-programming hobby (go paintballing or bowling or start reading a new series of books), and when you think you are ready to come back and start working - don't let yourself. Deny yourself the ability to work on your project for at least a week longer, and since we usually want whatever we can't have, it'll help create that passion and desire again once you do get back into the project, since during that last week, you'll be frequently thinking about the game with new ideas whether you want to or not.
- Aim high long term (years), but to reach that goal, don't let any one project along the way be too great a step that you aren't able to complete it.
Form three goals: Short term, medium term, long term. Apply this to your life, as well as to each individual large project, and to each piece of each project.
Here (loosely) are my goals, as an example:
- Short term (one-two years): Support myself through indie game development
- Short term: Finish AdventureFar
(Moving from 'goals' to 'tasks' now. So I have 'task lists')
- Finish the Editor, create the first town.
- Add combat
- NPC interactions
(10 tasks in total that are listed in order, taped individually hanging above and behind my monitor, so I can get satisfaction by ripping each one down once completed. Each 'task', when working on it, has sub-tasks that they are broken into. Maybe those sub-tasks, if large, are also broken into sub-tasks. I don't bother breaking down the sub-tasks for any other task except the one I'm currently working on ("Finish the Editor, create the first town."), and those sub-tasks may or may not be in a specific order. Also, the sub-task list grows and shrinks as needed, when I discover something else that needs to be done, or when I complete or discard/cut a subtask)
- Medium term: Use the same game framework and tools from AdventureFar to make two or three other similar-genre games.
- Long term: Move to 3D
- Short term: Finish AdventureFar
- Medium term (5-10 years): Grow into a small game studio with 5-10 employees making larger scale 3D games.
- Once I finish my short term goal, only then will I start breaking this down.
- Long term (20-ish years): Grow into a large game studio with >100 employees making AAA games.
I want to apply this habit (small, medium, and long-term goals) to each area in my life, not just game development. I haven't done too good of a job at this yet, but nor have I written it down (which I should do, as it helps solidify it in your mind), but I want to create a 'physical health' plan in the same way (I'm not in physical shape), and a spiritual growth plan (I'm a Christian, so I mean more fellowship with God on a regular basis and better understanding of scripture), and I want to get into better mental shape (My math is poor - I want to improve there. I'd also like to learn economics in relation to virtual worlds, learn at least one other spoken language, more programming languages, and learn the Piano and the Violin for fun - all of which will stretch and grow my mental capabilities in different ways).
This is all 'ideally' how I want to organize things, and 'ideally' what goals I want to achieve. I have more, though not yet solidified and put in writing. Creating lists of what I want is easy, reaching towards them every single day is much harder, and I am very sporadic in my progress . I also don't want to so completely book up my days that I am overworked and burn out from exhaustion, so some things (economics, violin and piano, and a few unlisted goals like putting together my own computer) I am holding off for later when I have more time or more finances.
Your goals, and your short-term, medium-term, and long-term plans will differ from mine, and the steps you take to reach those goals need to be tailored to you specifically.
You don't have to organize things the same way I do either, but at least some organization of your goals are important.
Despite how much I may want to do something, it won't get done without a plan. A famous saying is, "If you fail to plan, you plan to fail."
I also like to say, "If you aim for the moon, you only hit the sky, but if you aim for the sun, you reach the moon". But aiming (goals) is nothing without plans (methods to reach those goals) which are nothing without the carrying out and the doing of those plans. This means day-by-day you try to make a step forward, and if you fail, no problem, but you have to pick yourself up and step forward again. Just because yesterday I was too lazy to make any progression, that doesn't mean I 'failed' and my project is ruined, and it doesn't mean that because I was lazy yesterday, I am doomed to being lazy today.
If I can even force myself to write ten-twenty lines of code, then I know I'll continue flowing more code and actually make progress... but the sitting down and actually doing the first ten or twenty lines is the challenge for me personally.
So I guess that brings up another tip:
- Learn how your own body and mind works, and figure out how you can trick yourself into being productive.