Here are 10 pieces of advice I'd give to anyone considering developing independently for Xbox LIVE Indie Games (although a lot of these apply to iPhone, or other development platforms as well). These assume that you're going to be doing it by yourself, or in a very small team, in your spare time.
1. Be prepared to sink a lot of time into this. Like, a lot.
It's one thing if you're throwing together a massage app or a screen saver. But if you're actually going to create a full-blown game, it's a project. These things take time...lots of it.
Remember how much time it took to find and do everything in Final Fantasy VII? That same amount of time is nothing when it comes to game development. On the surface, Snake360 doesn't look like a whole lot, but it took something around 500 hours to create...probably more.
There's something called the 80/20 rule: 80% of your time is spent on 20% of the result. It's the truth. Getting a snake moving around a 3-D rendered level didn't take very long. I could have released a Survival Mode-only version in a very short amount of time. But then I felt that I had to go and add a whole bunch of modes, levels, options...things that a lot of players never see. And of course, all of this stuff needs to be tested. Each new level and feature, one at a time.
Game development is a time sink. You're going to have to take away a lot of time from other things to be able to do it. If you're not OK with that, then you shouldn't bother getting started.
2. Create the game for yourself first, others second.
One way of finding out if a game is fun to play is if you have fun playing it yourself. Create a game that you would enjoy playing, and it's likely that other folks will enjoy playing it, too.
There's another part of this. It's possible that a lot of other folks won't enjoy playing your game. Everyone's entitled to their own (incorrect?) opinion, after all. But if you know that you find it fun, you're less likely to be disappointed by other people's opinions.
While we're on the subject of possible disappointment...
3. Set your sales expectations low.
Snake360 was one of the first Xbox LIVE Indie Games released. Snake360 Lite was the 100th. Now, there are over 400 games on the service! Plus, Indie Games don't get the kind of commercial exposure that retail and XBLA games get.
If, while in New Releases, you get enough downloads to reach Most Popular, then you're doing all right. But new games don't spend as much time in New Releases as they used to. CardArcade was there for a mere 5 days! If you don't get into Most Popular, then your visibility drops significantly, and you're not going to get a ton more downloads unless you can get the word out in other ways.
It's hard to get a game to sell a lot of copies on XBLIG nowadays. It's more competitive than ever, and there's a possibility that you won't sell as many copies as you're hoping for. Be prepared for this. CardArcade's budget consisted of my free time and little else. For Snake360, I was able to obtain music and sound effects in exchange for a percentage of my revenues. Minimize your expenses to reduce the chance that you actually lose money in addition to working your butt off!
4. Don't write off the graphics and sound.
One of Snake360's biggest problems is that it just doesn't look that great. The graphics turn off a lot of players who otherwise might have enjoyed the game. Lots of hardcore gamers like to say "graphics don't matter, gameplay is everything," but the fact is that graphics do matter. This is the Xbox 360, and players are expecting graphics that wouldn't be possible on the Super NES (unless you're intentionally going for a retro look, in which case it still needs to look good).
Don't do what I did and sell your gameplay short. Give it worthy graphics to match, or it'll be ignored by a lot of people.
5. Don't be afraid to ask for help.
Help is all around you. Your friends can offer suggestions, and help playtest. XNA Creators Club is a great resource! Other members can offer tips, code snippets and technical help, as well as gameplay-related advice. Take advantage of the Playtest feature, and use it while your game is in development for the best possible results. There are also boards all over the Internet where you can seek programming, game design and other related advice. You can even ask potential players for help. One Creators Club member developing a shoot-em-up often asks for advice from players on Shmups Forum.
It is true that you can find a wealth of information both on programming and on XNA just using Google or other search engines. However, these are no substitute for the assistance you can receive just by asking for it. Don't hesitate. Ask for help if you need it.
6. Have a plan.
Game design is hard work! That is why you see lots of designers listed in the credits for big-budget retail games. The programmers for those titles are given a specific plan to follow, and that's for a reason: the final product comes out better.
There are some things you should think about before you even get started. Consider how the game is going to play...the features you want to include...the complexity and number of levels. Plan assets and level designs out on paper. Heck, while you're at it, write down everything you can think of. This way, you can refer to it while you're actually developing. Keep a to-do list and strike things off of it as you proceed.
If you're by yourself, you don't have to plan out every little thing ahead of time, but take it from me: it's much easier to stay focused on what you're doing if you know what to do next. Having a plan also helps you proceed towards a well-defined goal. I could have put 1000 levels and more modes into Snake360, but would I ever been able to finish it? From day one I decided it was going to have 300 levels. That's what I worked towards and when they were done, they were done. Lastly, having a plan from the get-go helps avoid situations where you have to re-do something you've finished already because of late changes.
You may have heard the phrase "A stitch in time saves nine." It applies here!
7. Promote, promote, promote.
The best-selling retail games in history have two things in common with each other: they are good games, and they were hyped like crazy before release. There are very few exceptions.
If you want a shot at success, you will need to promote your game before its release. Don't think that your game will sell itself! I already mentioned the low Dashboard visibility. Get the word out! Post gameplay videos or trailers to YouTube and GameTrailers, and link to them as much as possible. Plug the game on some forums where you think your audience might be. Set up a Web site for your game...you can't promote it 24/7, but your Web site can.
After release: lots of gaming Web sites, large and small, are willing to review your game in exchange for one of your 50 free game tokens. A negative review looks bad, but ultimately puts your name out there. Bad press is better than no press. So get the word out.
Another thing: it's true that most games drop off the sales charts after their release periods. But what takes more effort? Developing a new game from scratch, or promoting the one you already have out? You already know the answer. Continue to work on promotion for as long as you can. Even if you only convince a few more people to buy your game, they could recommend it to their friends, and then you get a few more sales on top of that. You put a lot of effort into your game, right? Make sure that effort isn't wasted. Promote it until you're physically unable!
8. Contribute to the community.
XNA Creators Club is a living, breathing community filled with enthusiastic game developers. Even if you don't ask for or accept the wealth of assistance that they can offer you, you'll still need them to peer review your game before it can be released. Guess what? By taking part in the community--reviewing other users' games, playtesting early versions, posting advice, and so forth--the community will give back to you.
Even if you don't consider the fact that the communication with other developers will inevitably improve your own work, you can be sure that other members will playtest your games more often and review your games more quickly than someone who has not participated. The community is a huge asset, and participation is highly recommended!
9. Test like crazy.
Anytime you add anything to your game, you need to test it. Anytime you change anything, you need to test it. Anytime you remove anything, you need to test it. When you think it's ready for release, you need to test it again. You need to test for cases that you wouldn't expect, like gamers playing with Controller 4, or not picking a storage device, or accessing the Guide while playing, or choosing a Memory Unit with 12KB free.
Playtesters and peer reviewers on Creators Club can help you test these things, but it's your responsibility to have looked for those things already. Just like game designers, the big-budget games have huge teams of people just for testing. It's necessary there, and guess what? Just because you've got a smaller-scale game doesn't mean you shouldn't test it just as thoroughly. Someone's going to be paying real money for your game, and the least you can do in return is give them something that works as advertised and doesn't have bugs in it.
Never underestimate your game's ability to develop issues when you least expect it. CardArcade's Network Ranking feature had already been working, but a subtle change that I made before release broke it, and I failed to test it again, foolishly thinking that since I'd seen it work, it would still work. My peer reviewers didn't test it thoroughly either, but in the end, it was my fault.
Test early, often, late, and at every other time you can! To not test will cause you great pain.
10. Finish it off.
I'm sure we've all started more projects than we've finished. Finishing, of course, is the hardest part.
Give yourself a deadline and work towards it. Try to stick with your project plan. If you fall behind, adjust your plan accordingly. Be realistic as far as what you can do, but also, try to stay focused.
If you're stuck on something, don't hesitate to ask for help. Do it before you get overly frustrated and toss the project under the dresser.
Don't try to take on too much at once. Only focus on one game project at a time. Try not to engage in other hobbies that consume as much time as game development (are there any?) while it's in progress. Most of us play games too; stick to games that can be enjoyed in short bursts rather than big time sinks.
You may add some things to your plan along the way, but at some point you have to stop, call your game "finished" and release it. Do not continue to add a ton of features, or you'll never be done! You can consider adding more features in a later update (your players will appreciate that). (Don't confuse this with bug fixes or feature omissions; those should be fixed before release.)
Hopefully this info helps some of you put together your next blockbusters. Now, back to work... oh wait, I should sleep now. Yeah, that's good advice too...don't forget to sleep. =)