A few important Tips for new Game Developers
Author: Nikolaus Gebhardt (http://irrlicht3d.org/pivot/entry.php?id=1548)
So you would like to create a game, and probably also earn a lot of money with it? As developer of a commercial game engine (and probably better known for that once popular open source 3D lib), I have a lot of contact with new game developers. I also created commercial games completely on my own (6 until now, this one here is my latest attempt) and about a dozen as part of a bigger team, so there are some few tips I have which new game developers might find useful:
About once a month, a game developer contacts me, telling me about his deleted / destroyed / lost game files. They usually deleted important files by accident, the disk stopped working, a virus encrypted the data, or similar. Months and months of work completely lost. In the beginning I was baffled that these people haven't made backups, but apparently, this seems to happen more often than I thought. For god's sake, please, people. Make backups. You don't even need some sophisticated system for this. Just copy your important game data regularily onto an USB stick. Or to another PC. Or burn it onto a DVD. At least do something. It only takes a few minutes but will safe your ass.
Plan for Failure
Game development is a very risky business. Only some very, very few games ever make a profit. You are lucky if you will be able to pay yourself a minimum wage by selling your game. Don't put all one's eggs into one basket. Don't quit your job and take a mortage to work fulltime on your game. Thinking of all the games where my software has been involved in and where I have a bit insight into, I estimate about 10% have not been financial failures. Your numbers might vary, but that's what I experienced during the last 10 years.
Finishing a project
I've seen dozens of cool and interesting games which have been created with my game engines, but which never have been made public. In most cases because the developers have lost focus and interest or just stopped working on it, which is a pity. Finishing a project is not easy, and the last 10% are always the hardest part. But there is a simple trick: The best way to ensure you'll be able to release a finished, working project is this: Start small. Don't plan a huge game with and endless list of complicated features. Create a small, working game, and iterate from there, by adding more features to the existing, working game. That way, you can always stop at any time, bundle the thing you have and release it. Even if you haven't added everything you initially wanted.
Use an Engine
For all my games, I've created all the code from scratch myself. I've written the graphics renderer, audio engine, collision detection, user interface, io, model loaders, input handling, everything from scratch in C++. But today, this is a bad idea. It is a lot of work, and you'll be spending a year or more with this, instead of focusing on creating the actual game. Today, there are lots of game engines out there. Just choose a fitting one for creating your game.
Development is only half of the work
I often get criticized for my opinion on this, but I'll repeat it here: Once your game is finished, you still have about half of the work to do. You need to do marketing. And it is as difficult (or for me: even more difficult) as game development itself. Without a lot of work in marketing, your game won't usually sell. You probably hope for an automatical viral bump via social media or similar, but usually, this won't happen. It is unlikely that people will find your game themselves. And of course: Lots of people will tell you that you should have started with marketing even much earlier to begin with. When your game is done, it might even be too late to start with marketing.
Most points I've mentioned here are pretty basic, but a lot of people don't seem to know this. If you are interested, I'll write up some more generic game dev articles with more interesting stuff in the future, just let me know. Ah, and I forgot the shameless plug: Try my game engine CopperCube! :)