We've been working up to forming this company for the past year now, but only really started proper development on our first title in November 2014. We are currently a team of four. So without further messing around I'll get on with my 10 tips for indie devs and stuff that I'd loved to have known at the start of the year.
Iteration and change is really the core of good design and mechanics creation. You cant afford be precious about everything you make, there are things you can compromise on and there are things you shouldn't; so you need to pick your battles throughout dev. Massive changes may seem like a kick in the nuts to your original designs, but look at it from the stand point of "Now I'm better, how can I make this better?". However it should be kept in mind that you've got to retain your core and you can never really compromise on it, the pillar that made the idea come to life must keep going and cant be undermined. So find the roots of what you want to make and the things you cant change, then build your changeables from them.
Forcing yourself to plan stuff seems like a massive hassle, especially when you want to be actually deving a game, but planning is so very important. The amount of times where production has stumbled because he havent planned properly and have stepped on each other toes is annoying to say the least. Planning is less important for smaller teams because you dont have to worry about working with many people in conjunction, but its still important to outline what you're doing and how long you think its going to take you. If nothing else its an opportunity to step back and actually look at the game rather than that one cool mechanic that you've been working on for the past couple of weeks. Seeing the whole picture in planning allows you to see where its going and what needs to change on a bigger scale. It may be a pain in the ass and eat into your development, but good planning can help save you time and a shed load of grief in the long run.
What the hell are you making!? Seriously, why are you making that thing look like that? It seems silly but it asking yourself these questions and giving yourself target answers is actually a really good idea. You can say that you want to get a minimalist style like papers, please or some clever systems like portal, set these titles as soft targets and see if you can beat them. Even if you have something that you perceive as wholly original its always a good idea to know your references and influences and measure yourself against them to see how you're doing.
If your an indie its likely that you're kind of small. That means that you're inevitably going to have to make cut backs, because you and the guy on the computer next to you don't know how to do music or 3D art etc. Be aware of this before you slap all your chips on a decision to make the next Assassins Creed. You're going to have to do all of the project management, level design, mechanics or QA testing (that's a big one) the list really does go on. so be prepared to multitask and to learn a lot of new things that aren't in your area of expertise, by any stretch.
Being small is scary but its also kind of liberating. Remember that at the end of the day you and your team get to decide how you run your company. There is no one higher up than you, there is no big boss that can take your creative control or change how you want to do things. This means that anything that you make will have had a significant impact by you. You're bringing your project to life.
It still amazes me how many people miss this when they are making a game (although, I am massively guilty of it), but you should give the controller to someone who has never played your game before. You know how to play your game, you know the ins and outs, the bugs and the remedies, but does a random gamer? because that's who's going to be playing your game, a random person who you've never met and probably never will meet. So the games got to be playable by someone other than you, without you holding their hand throughout the process. This isn't just to check for bugs but also for testing to see if mechanics are fun, if the UI makes any sense or if anyone notices the item drops when an enemy dies. Nothing is more frustrating than watching someone play your game wrong, apart from playing someone's game and not being able to make sense of it.
GO TO BED. This bit of advice has come from more than one crunching session. It may seem like you're making massive headway with that system implementation, but sleeping on it reveals the truth your sleep deprived mind never could, you were doing some pretty shit work. Now this isn't always the case (programmers seem to be the exception to this rule as they start functioning after 10pm) but more often than not you're not doing quality work, chances are that you aren't focused and are massively frustrated with the smallest things. These problems dissipate with sleep, so again pick your battles. Got a deadline that can't wait and you need to work until 6am to get everything ready, sure then you can drink coffee and red bull until you are so jacked that you cant do anything but work and spasm from the caffeine occasionally. But do you really need to do it all the time, seriously just go to bed and your game will thank you.
Again, you are small. That doesn't mean you have to be alone however. The indie games community is pretty great, people giving each other help and advice about a whole host of subjects, so you can just ask someone for some tips on things and chances are they'll give you the advice you need. Meeting people in the community also helps you meet people that could fund or publish your game, or give you a plethora of services or products that could really help out your production. However its always good to be mindful that everyone is super busy almost all of the year, so if you don't get a reply don't take it to heart, they're probably shouting at a screen somewhere about why the lighting maps have broken!
This is just a good policy to adopt across your whole production. Having overly convoluted mechanics, art style etc will alienate your players and people wont be able to immerse themselves if they're having to look at the controller every 30 seconds because its all too complicated. This extends to the core concept, we managed to boil our game into 2 sentences that could sell the idea of the game to anyone that heard it, it didn't matter if they'd ever played games before, they just knew what we were making. This doesn't mean that you have to strip out all complexity from your game it just means you should build it from easily graspable concepts (jump becomes double jump becomes jumping off walls etc.). production pipelines should be as simple as you can make them so that everything is clear for the team and everything is moving smoothly. In the end keeping things simple is a kin to keeping them clear, the clearer something is the more players and your team will understand what it is.
Don't let dev get you down. Every production has peaks and troughs, so just be aware that there will be days where you don't feel like getting on your computer at 2am to re-implement UI because your testers don't understand it. These are the the low moments and they are pretty tough, its important in these moments to remember why you're doing this, why you love making games, why doing this horrible thing now will make your game so much better; and free you up to do much more awesome stuff later down the line. Be happy with what you do, you make games for crying out loud! Every kid that ever picked up a controller wants your job! (it doesn't matter that they think all you have to do is play games all day) So find those things that you love about games and making games and hold them close, they are the spark that'll see you though those hard days and get you back to doing what you hopefully love doing.
Well I hope this has been helpful for anyone interested, if you want to harrass my ramblings any further or are interested at all in keeping up with our yet unannounced indie game then follow me @ on twitter!