peace be upon you
first::: choose language to program with such:
- C: ( be a professional in C is the best for game development with low level control)
here is some resources :-
"the C programming language" book
"the waite group's c primer plus" tutorial/book
- C++ ( be a professional in C++, also as C with the ability to use OOP)
here is some resources :-
"the C++ programming language" book
"teach yourself C++" tutorial/book
- Assembly (gain some knowledge in assembly, you may need to know a little about it)
here is some resources :-
"assembly language: step-by-step" book
second:: Great advices :-
- For beginning game programmers in Windows, (using DirectX )
"Tricks of the Windows Game Programming Gurus" book is great
- also check this site for organized books :
http://www.gamedev.net/columns/books/
- Supplement what you read with online tutorials.
- Ask the experts for help. If you cannot find answers to your questions in books or tutorials.
Note: This should not be looked at as a sequential process,
but as a silmultaneous process that is repeated continually.
- It is not enough to just learn, though, you must apply what you learn.
Start off with a simple game, and work up from there.
- At first, plan on working on your own. Don't rush to join a team,
Once you have several games under your belt, you may join a team.
- Don't just accumulate knowledge, apply it.
You will never really know or understand something until you use it.
Make little demo programs that use the things you are learning.
Actually do the exercises at the end of the chapters in the books.
- Play a lot of games. Doing so will give you ideas and help you make better games.
It will also provide a welcome relief from programming.
- Help others. You will get to the point where you can help others out,
and you will learn more yourself through the teaching process.
- Finish what you start. Don't fall into the trap of thinking "I know I can finish this game,
but I have an idea for a better one, so I'll move on to it instead."
You will learn so much more if you finish the games you start,
and you will have something to prove that you are not all talk.
To make this a little easier, don't try to make really big or complex games until you are more experienced.
Third:: where to begin in games develpoment
- "Tetris" is the perfect game to begin your journey on the path to becoming a game developer,
Why? Because Tetris contains the all the elements found in every game,
and can be done with just about the least amount of work. Also,
you don't have to be an artist to make a good looking Tetris game.
Anyone who can draw a block, which is everyone with a paint program,
can make a commercial quality version of Tetris.
"Tetris" has all the individual components that ALL games share in common.
It has a game loop (the process of repeating over and over until the game is quit).
The game loop reads in input, processes the input,
updates the elements of the game (the falling tetraminos), and checks for victory/loss conditions.
Every single game you will ever make does all of these things, so learning the process and
actually implementing it is extremely important. After you have completed this the first time,
it will give you an insight into how hard it will be and how long it may take on future games.
Without having done this all the way, at least once, you will never fully have a proper grasp of each of
the elements.
When you have larger projects, there will be more unknowns that you can't judge for in
complexity and time. If you don't even fully understand the entire process because you
have failed to DO it, you will likely be helpless to create schedules or estimate times properly
and will most likely not succeed at the endeavor.
the second game to try to create it :
- "Breakout" is also a similar game, but it adds in much more advanced collision detection than was necessary in Tetris. You will also need to add some simple deflection physics of the ball rebounding off different portions of the paddle and the blocks.
Level layout also becomes an issue in Breakout, and in order to have more than one level you will need to come up with a way to save the maps. This deals with another component found in all larger games, which is saving and loading resources and switching levels.
After you finish your Breakout masterpiece you should move on to making "Pac-Man".
Pac-Man is an evolutionary step because it adds in the element of enemy artificial intelligence (AI).
This kind of detailed AI was quite advanced for games of that time, and should give you a good challenge for your first game with enemy AI.
Pac-Man also increases the complexity of maps, and adds a good deal more flexibility for using sounds, as sound was certainly a crucial elements to the success of Pac-Man. (After all, what would Pac-Man be without some sort of "wakka-wakka" sound?)
The last game I suggest you should create is a side scroller, such as Super Mario Brothers, where you can jump on multiple platforms, shoot, duck and interact with enemies. As there is added art involved in this game, I would suggest looking in to using SpriteLib for some free and easy to use artwork, which is available at: http://www.flyingyogi.com/fun/spritelib.html
Side scrollers introduce the possibility of added enemy AI complexity through the use of enemy bosses which have patterns you must learn to beat, as well an added screen complexity. Now you must make a screen that is capable of scrolling in at least two directions, if not four, and deal with screen clipping, which can have a bit of a learning curve. You must also work on the physics of any jumping, bouncing of the character or shooting projectiles.
There will additionally need to be a lot more enemies than before, and you will need to keep track of their current game state (alive/dead, active/inactive), by whether they are on the screen or have already been dealt with. The level complexity and map/character storage complexity will have also increased and you will most certainly need to make a level editor at this point.
The level editor should be capable of placing tiles, scrolling through tiles, scrolling over the map, choosing tiles as brushes, cycling through the brushes, cutting and pasting, an undo, and placing enemies. If you decide to skip writing any of these, you will most likely feel sorry about it, and if you have an artist or level designer, they will probably not be very happy with you either (how would YOU feel if you had to go through someone's text files containing a bunch of numbers and commas to edit a level?). I would also suggest making back ups of previously saved maps, as it is often easier to just back things up by versions, than redrawing them.
Finally, the side scroller has a real victory condition! When you get to the end of the side scroller, you have actually GONE somewhere, so you can add on a story to progress through the game as well (and don't forget some sort of fireworks on the screen for the end of a level, so that the player has a sense of accomplishment and a REAL show of fireworks for beating the game… merely putting the words "You Have Won!" on the screen when a player has spent endless hours trying to beat your game is anti-climatic).
Finishing a game does not merely mean you get it to a point where it is playable, and then move on, this is not a finished game. A finished game will have an opening screen, a closing screen, menu options (if applicable, at least instructions on how to play and start), introduction screens to playing, reward screens and a score board (where applicable).
It's not easy to show people your game and have to constantly tell them to overlook different things and feel the same as if they picked it up and had no problems moving through it and everything was well presented and complete feeling. Other game developers are a bit more forgiving, since they know the process.
Most importantly though, you will learn all the details that go into really finishing a game. If you stop at just working gameplay, you will still miss out on the details of wrapping things up, which will leave a blank spot in your mind when trying to plan larger projects in the future.
If you can't play it, it's not a game.
Just have an understanding of what you really want out of making games and then concentrate on making that come true
for more details see (the sourcse of this previous talk is down)
How do i make games? a path to game development
http://www.gamedev.net/reference/design/features/makegames
you ca start here for some cool articles and how to choose your game development tools