Game design can be stressful. You have to dedicate extended periods of time to a project, with the planning, the implementation, and the polishing. What if my players don’t enjoy my game? I can’t have that happening, not after all of the time dedicated already — I have to work on it even more. I have to make my game absolutely perfect before anyone else sees it so that my time isn’t for nothing.
Stop. That’s a slippery slope — you don’t need to focus on perfection. If something is wrong with your game, the people will tell you, and in that case you can improve off the feedback. There definitely is a list of things that should be concerning to a developer, though. You should be concerned if you’re not making progress. Although you might be concerned with making some feature perfect before moving onto the next, adding or editing other features might just break what you worked so hard on. Get a rough “draft” of your game together and then polish.
You should be concerned if you’re scared of showing your project to other people. If you aren’t showing your project to anyone it’s not getting any kind of attention, and then your entire project is worthless. If you’re scared for quality reasons, show people the early version and make sure they know it’s early; this gets you attention and judgement on the game’s quality can be withheld until you’re further along in development, while you get feedback on what you should work on as a priority. If you’re scared to show the project for personal reasons, just get out of your shell and show the world what you’ve made! It’s only a win-win for you. If it’s criticized, you know where to focus development — and if it’s praised, you know to continue what you’re already doing.
You should be concerned about being overly perfect from a coding perspective. You can always change around your code later on; as long as it serves its purpose, you don’t have to keep revising it until it’s as efficient as possible. Focus on basic functionality before you polish your code; after all, if you were to build a car, and you only focused on the engine, the rest of the car has been neglected and it won’t work. You have to make sure your car can actually move before you work on making the movement efficient.
Important Takeaways: Although the end objective is to make your game as great as possible, you have to make sure it works at a basic level before you move onto perfection. Don’t be afraid to show what would be considered an “unpolished” game that’s in development to other people, as no matter the people’s opinion, you will obtain useful information you can use in the future.
Don’t hyper-focus on one particular feature before there’s even basic functionality for other features, as you might have to change your “perfect” feature later if you decide to change other parts of the game, and then all of your time was for nothing. Treat game development like rough drafts in a writing class; get the general idea down, and then go back and revise later, optimally after other people have “proofread” it, so that you can have the highest quality draft when it’s time to release.