Yeah I know but many people telling me to start with 2D where I would rather to start with 3D
Well you can start with 3D, but with no Programming experience, you will get lost in a matter of seconds.
To make a 3D Game from scratch, (with no programming experiance) you need to Learn:
1/ Your Programming Language
2/ Common Programming Practices (Algorithm Design, Optimization, Object oriented Design)
3/ How to work with a 3D API (Such as DirectX, Ogre3D, CryEngine etc. etc. which in-itself is .. not a matter of overnight reading)
4/ To program with Shaders(HLSL) (to work with Lighting, Bump mapping etc.)
5/ How 3D Animation works (Keyframes etc, probally learn a 3D Designer package like blender)
6/ and probably some more i forget
1 and 2 are key to both 2D and 3D, but the rest are 3D only, to learn a 2D API like SDL, SFML or XNA you just need to follow some tutorials and make some images in Paint (which can just be rectangles)
I can tell you from personal experience, i started with 3D game programming, and although I had a working 3D game at the end of it, i was none the wiser on HOW or WHY it worked, just that it worked. When i started programming with XNA in 2D, i started to understand how everything worked, and my design patterns got much better.
I also realized that the largest stumbling block of 3D games is this: Work with what you can do, I am s**t at art so, and as such cannot make 3D models, you also have no experience with 3D modeling so i seriously suggest putting 3D on a back-burner and learn 2D Games, while learning to makes 3D Models. if you are serious about learning game development, then Start off making 2D games and work your way up to 3D development.