Alright, I'm going to give you some advice I wish I had gotten when I was your age.
Just make something.
There are really two paths you can go down. One path is straight into 3D as you said you wanted to do. This is an awful idea. You're twelve, so that puts you in 7th grade I believe. This means that you probably have a decent understanding of basic algebra (which will also help you understand programming better, yes math is useful). Let me ask you this:
If you wanted to be an astronaut and plan a mission to Mars some day, would you jump into all the complex physics, calculus, etc. required to calculate the trip today? Or would you not continue with your current math education and study throughout highschool, college, and perhaps graduate school and beyond before attempting to make the trip?
I ask this because right now you are the twelve-year-old astronaut who wants to make it to Mars all by himself. I want you to know that at one point this was me too.
I got into programming at around the same age as you and I can honestly say that since then I have learned a lot about game development and programming, but have hardly anything to show for it. If you were to ask me right now to show you a game I have made in the past 8 years, I really couldn't show you more than a few crappy text-based games, and some 2D prototypes that could hardly be called games. This is because I never finished things. I only dreamed about what I could make if I knew this or that.
So what do I recommend you do? Well for one forget C++. It seams that you don't have much programming experience, so you need to actually get some experience instead of wasting time with all the complex bits of an ancient and often cryptic language like C++. If you want to make a game within a reasonable amount of time learn one of the following:
Really I think you could go either way, but both are great choices, and they make it about as easy as it can possibly be to learn programming and make small games fast. Also, the general techniques of game development you'll learn will help you no matter what platform you work on. The structure of a game written in C++ is generally the same one one written in Python, JavaScript or any other language.
Also very important:
Make reachable goals for yourself!
I really can't stress this enough. When you first dig into Python or JavaScript, do not go in hoping to make the next CoD or Halo (hundreds of experts worked on those games)! My recommended learning progression would go something like this:
- Learn how to write your first "Hello World!" program. (Just putting out text on the screen)
- Learn programming basics like variables, if statements and while loops, etc. (Very important, make little demos to test your skill)
- Learn how to store more complex data in things like arrays. (Also critical, keep testing your skills with little programs you make up)
- Learn about functions, objects and any other things you might see in your basic tutorial series. (Keep up the little programs!)
- Make a small text-adventure game, like one of those "choose your own adventure" books.
- Make another small (more complex) text-based game. (Maybe this one has combat?)
- Finish these games. (It's harder than it sounds, especially if you don't keep things small)
- Now read some tutorials about Pygame or Crafty or another game library that you want to use.
- Learn how to put a picture (like a spaceship) on the screen.
- Figure out how to move it with the arrow keys.
- Learn how to implement "collision detection", something that stops objects from going through each other like ghosts.
- Make the little image you control shoot something.
- Make something that blows up when you shoot it.
- Keep learning, setting little goals like this for yourself until you've made Asteroids! (Or some other simple game)
- Now make another, but slightly more complex game. (Mario clone?)
- Finish these games. (Seriously, it's a skill)
- Keep making games, and some day you will get into 3D when you feel ready!
You don't need to do this all in a day, it will take a lot of practice (just like anything else) to really understand how things work. The key thing here is that you'll be making games! By the time you do get to 3D programming (if you're even interested in it by then), you'll have a whole bunch of awesome games to show off to people (it might even help you get a job)! Just keep trucking along, setting small goals that you can accomplish and feel good about.
If you take at least a bit of this to heart I guarantee you'll have 10x as much to show off when you're my age, and you'll have learned a lot more too.
Best of wishes!