Derek Yu's
"Finishing a Game" and this
one-game-a-month article were the most helpful for me.
Some of the bits that I remember often:
- Save it for the sequel: cut any non-absolutely-essential features and tell yourself you'll do them in the sequel to this game.
- Create a working prototype ASAP and have a working game at all times after that. Figure that you could walk away from the project after each build you make (every day or two) and someone could still be entertained by it.
It sounds like you've already made the first mistake, which is overthinking it (but no worries). Some planning is good, but if you've been planning for more than a few hours and haven't written any code yet, then you're most likely procrastinating, not working productively. You can't work out all the issues without actually making anything. You
will make mistakes and have to rework things—plan on that.
Start your project as if it's for a game jam. Plan to create a playable prototype in two days or less. If that doesn't work then your basic gameplay concept is too complex or too vague. If you're making Zelda, your minimum prototype would have a character with basic movement and an attack, and something to hit. Done. Everything after that is just incremental improvements.
Don't do any art until you have a decent playable game. I keep a few basic shape images(square, hard circle, soft circle, triangle, and cross) that I scale, rotate, and color to make my prototype objects.
Break things down into "bite-sized" pieces. If you're not sure where to start on something then you just haven't broken it down small enough.
Don't plan huge systems until you've made a hack version that works. It's MUCH faster to make a terrible thing that sort of works, then rewrite it properly now that you know the challenges; than it is to plan out a perfect system and try to do it right from the beginning.
Once you have some decent gameplay coded and playable, then start on art. Start with rough static images for things, then start adding animations, then the fancy little bits of polish. Try to keep all the game pieces at roughly the same level. Don't make a super polished character and leave everything else blank. I think you'll find it progresses fairly naturally between code and art. Once you make some art assets you'll probably have to write code for them to work with the gameplay. Then you'll playtest it and see that the art needs to change a bit . . . You'll probably need to write shaders, and make specific assets to work with them. Meanwhile you'll be fixing bugs, adding new gameplay and content, new enemies, menus, and so on, which will then need new art assets made . . . you go back and forth as needed. You could plan your days to focus art or code if you want, but you can't really have one without the other, so don't try too hard to separate them.