It sounds like you really don't have any concrete plans. For one, you need to at least decide on a target (or more) for deployment. Then you need to make a final decision on your primary language (you can, however, use multiple languages if required or simply desired). Once you know that, then you can make the logical choice in your main API (or ONLY API). If you don't do that before starting any serious work, you're basically playing around and wasting time. Not a problem for general learning, but a big waste if you're shooting for a certain release time-frame. Don't try to make WoW for your first project. Pick something manageable, challenging for your skill level and practical. Answer all of these questions and make a design document before you get started.
Next, you really need to consider whether or not you
really need to "re-invent the wheel", and by wheel, I mean engine. In my case, I absolutely
had to; no way around it. But maybe you don't. Developing an engine and then a game can take 2-3 (or more) times longer than using an existing one. And it's very inefficient if it's tightly coupled to the design and implementation of the game (virtually no re-usability? hard to maintain? changing one breaks the other?).
The big question is:
1) Is it, in any way, possible for me to make the game with an existing game engine "out of the box"?
::If not, can I adapt/modify/extend the engine to meet my needs?
If yes, it's probably best to use that existing engine or adapt it, rather than making a brand new one from scratch (especially if you're new to game/simulation dev). Only valid exception I can think of is extremely harsh licensing/legal terms on that particular engine or a ridiculous price you cannot afford. If both answers are no, you'd better check and recheck to make
sure there's no way possible before trying to start on a serious engine. Developing a game can be fun; developing an engine can be dull and tedious (not to mention time consuming and expensive). I won't even say how much I've spent so far. *shudders*
And haven't gotten a penny in returns on it yet. To further the problem, I have to work on other things to make money (thus slowing it down and costing more). Can be brutal. But that's the nature of our project. It's a serious, historical simulation that no engine on the market (that wouldn't cost millions) could spit out. And we're looking at several more years development time. It's not a pleasant situation, so you'd better think long and hard before ever making such a commitment. Once you do, there's no way to back out with all limbs intact. :S
A simple option you can do for free is to make the game "it's own engine". In other words, there IS NO engine like we think of it. Rather, the game is just built right on top of your graphic/media API. This is a "quickie", one-time solution. You can basically forget portability and re-use. But it's not very hard and can be cheap (or free). That can be harder with low-level APIs if you're uncomfortable with it. With XNA, it's a breeze.
Well, just think about those things, and make some concrete decisions. Otherwise you're not really doing anything with no objective. If simply experimenting and learning is the only goal right now, then you're ok. But I still suggest you think more concrete and consider where you want to go. Combuster is right though. He's not saying reading is "no good", but that it's only "so good". In other words, reading is only as good as what you know in practice (experience). You should read a chapter then implement the concepts to truly learn it. Reading a whole book without working step by step on some new concept code is pretty wasteful. And yup, when you learn the basics you will know exactly what you are the best at and love to do. For me, it's physics and realism; i.e., flight models, damage models, ballistics, etc. I'm rather poor with shaders and tech art.
Goodness, sorry for my wordiness. I type rather fast!
There are two major products that come out of Berkeley: LSD and UNIX. We don't believe this to be a coincidence. - Jeremy S. Anderson