Well, there's multiple things you need to consider before starting any game:
1) Are you proficient in C++? Do you understand the advanced concepts such as polymorphism, encapsulation and inheritance?
2) Are you familiar with memory management techniques? Memory management is considered one of the most difficult systems to implement effectively and efficiently.
3) Are you capable of producing efficient code? In games, it's all about producing efficient code because slow, buggy code will degrade the performance of your game.
4) Are you proficient with a graphics/audio/IO/physics and AI libraries? Graphics are the heart of a game. Without them, your game will be useless. I think all game developers would agree that 3-dimensional graphics is a difficult subject in itself. The other libraries are not necessary but are recommended if you want a half-decent game.
5) Are you familiar with advanced concepts such as scene-graphing, spatial partitioning, and game engines?
6) Do you have a lot of free time? Developing a game is a big project and you will need to allocate a lot of your free time for its development.
6) Are you familiar with threading? If your game has a lot of background sub-systems, AI, audio, event handling, etcetera, then you're going to need the help of threads. Threads will help to divide the workload into small chucks. This will help your game run more smoothly in the long run.
7) Are you comfortable with 3D modelling? If you're going to build a game, you're going to need some geometry to build your world. What's a good game without models?
8) Are you a logical thinker? If you're going to implement AI then you need to be able to think logically. There's no point in having AI when it just stands there and takes hits.
I'm probably missing a few points here, but I think I've covered the important ones.
Building Your Game
Before you even open your IDE, you need to plan your game from top to bottom. In your plan, you need the following:
-- A story. The first thing you should do when planning a game is create a story. The story will be the foundation of your game and will also serve as the guidelines for your game's theme. In addition, the story will detail the main storyline which your player will follow. At this point, you would also plan out any side quests.
-- An overview of each and every sub-system within the game. By sub-systems, I mean game-mechanics, memory management systems, scene management systems, etcetera. If you plan these without due care and attention, your entire game will fall apart at the seems.
-- A detailed description of each sub-system. This will describe how the sub-systems will communicate with each other and how the game mechanics influence the game-play.
-- A general description of each of the main characters within the game. This is the fun part because it allows your imagination to run free. At this point, your game will start to take shape on paper and will also be the point where you make changes to the story or even decide if you want to continue with the game's development.
-- A general description of each item within the game. I don't expect you to write a description of each wooden bowl instance within the game; I'm talking about writing a description for each special object within the game that's part of the main storyline -- the
One Ring in the Lord of the Rings, for example, is a special item so you would describe that. You would also describe each weapon, piece of armour, jewellery, and such, too.
-- Concept art. While this stage is not entirely necessary, it does help to establish a solid theme for your game. Concept art allows you to see what items might look like within a game and may even inspire you. However, while concept art is optional, object design is not. Designing objects provide guidelines which you can follow when modelling your objects.
-- Modelling, texturing and animating. At this point, your game starts to take shape. Here, the objects which make up your scene become an actual model. The final model will then be textured and then animated for that extra, realistic feel.
-- Putting together a scene or two. This is where your game becomes real. When you build a scene, you're adding objects into a 3D space which will form some sort of house, town, dungeon or fort.
-- Testing. Here, you will see what works and what doesn't. If something doesn't work, you'd go back a fix it before releasing the final product.
Enjoy :)
Wazzak