The biggest issue with making a game, is knowing how big to make it. If you're living free and are able to work without deadlines, great! But most cases, you've got a time limit. Whether it's a weekend game jam, a small personal project, or a large team project, the question you need to ask yourself is "How big is this game going to be?"
The trouble is, there's no good answer. Given a weekend (let's say a 48 hour game jam), a veteran game developer could make a way bigger game than someone just starting out. Plus, even that is hard to quantify. There's no formula for "If you've done X hours of game development in your life, you should be able to make a Y minute-long game in Z hours." Which leads to a lot of people just blindly striving to an ideal goal in their head. However, 99.9% of the time, especially for those starting out, the goal is wayyyyy to ambitious, and the either the game falters to the intended vision, or the developer drives themselves crazy trying to finish the game. Nether are good outcomes for anyone.
To add more fuel to the fire, the only way to learn what you or your team is capable of is to try different sizes of games. However, this usually leads to a lot of failures and a lot of unhappy developers. So what's the best way to avoid overworking or having an unpolished mess of a game when time is up?
I just finished a game I made for the month of August called A Fish Named Dave. It's in no way the perfect game, but it was something I was able to finish in a month, only working evenings and weekends on it. I felt little to no stress in getting the game finished, and I don't think any part of the game really suffered from me cutting any features. Here's what I learned this month:
1. Brainstorm a bunch of things
While coming up with the idea for my game, I just started listing random things. Eventually I got onto the idea of a fire-breathing fish, and the rest of the game just spiraled from there. A kept a list of things that could appear in the game if I wanted to put it in. All things water related, all things a fish would likely try to avoid, what a fish would likely like to do in life, etc. At the end of this brain dump, there was a lot of content to pick and choose from. Which leads us to...
2. Don't come up with an involved storyline.
The very first draft of the game was just supposed to be Dave trying to rescue his girlfriend from a shark, and he fights enemies along the way. It was designed to be ambiguous, that anything could happen from start to finish. I've worked on games where we clearly defined level 1 to be introduction, level 2 this happens, level 3 that happens, and so on. Well guess what? We ran out of time for level 2, so now level 3 makes no sense. Keep your story loose and flexible with the rest of your game.
3. Make your mechanics solid enough to stand on their own.
If your mechanics aren't amazing on their own, try to rework them as soon as you can. They eventually could end up being the only thing left in your game before time is up. Obviously you can still have mechanics that interact, but if mechanic A absolutely needs mechanic B to be fun, try rethinking it, or removing it completely.
4. Finish the bare minimum of your game as soon as you can.
Every game is going to need a menu, an introduction, some end, and of course, credits. Everything else can be removed if needed. So start from that smallest game possible, and start inserting levels while you still have time. That way, you aren't scrambling to create an underwhelming final boss fight in the last 5 hours.
5. Don't be discouraged.
Games are always going to have unseen issues pop up out of nowhere, and that will always cut into development time. Like I said earlier, these things are pretty much impossible to know before you try. Learn from your mistakes. Keep track of how big a game you can get done in a set time span. No one but you knows how long something will take to make, but with practice, you can get a better understanding of your skills.
So what are you waiting for? Go join a jam, make a game, and keep on being awesome game developers.