Are you getting an education in software development? If not, do that if you plan on actually working as a game developer. Even if you just want to go indie and don't expect to make a living off it, a proper education is extremely valuable. In the 2-ish years I knew I wanted to program games before I actually started school for it, I was a little all over the place and didn't know how to use source control, or 3D modeling tools, or Direct3D/OpenGL, or winsock, or even the Win32 API. A real education will teach you how to write and utilize design docs, work on a team, meet TRC compliance, use source control (useful regardless if working on a team or solo), and get you free access to a wide range of software tools (IDE's like Visual Studio, modeling tools like Maya or 3DS Max, etc.) that you would otherwise have to pay a small fortune for. Having knowlegeable instructors readily available to answer your questions quickly and accurately will also speed up your learning process.
If you flat out insist on doing this without an education, then there are a few must-have books. If you're still relatively new at C++, then buy SAMS Teach Yourself C++ in 21 Days (5th edition, not the newer ones as the authors are terrible). It covers pretty much everything you need to know about C++, falling short on the STL. For that, buy The C++ Standard Library, 2nd edtiion to complete your knowledge. For the math you need to know to program real games, I recommend 3D Math Primer for Graphics and Game Development, 2nd edition. To learn to work with the Win32 API to make simple Windowed applications, I haven't found any good books but MSDN can answer almost all of your questions. You can start off in 2D if you want, but I found it easier to just learn in 3D and mimic 2D using quads when needed. DirectX9 is the easiest way to learn 3D graphics (quick initialization, supported on more hardware, easier to use than D3D11, and DX extensions make it easier to start off with than OpenGL). To learn DirectX9, I recommend Introduction to 3D Game Programming with Directx 9.0c, A Shader Approach. To make large-scale games, you'll need a solid understanding of OOP and design patterns. For that I recommend Game Engine Architecture, API Design for C++, and Pattern-Oriented Software Architecture. To take advantage of C++11 multithreading features, I recommend C++ Concurrency in Action. For game network programming, I haven't found one particularly great book, so I would recommend at least taking a class for network programming for that. For the physics and collision detection needed in games, I recommend Game Physics Engine Development and Real-Time Collision Detection.
If you take the advice of others here and use someone else's engine, you'll do a lot of scripting, but you won't learn much about actual game development. At best you'll learn how to script in some simple game mechanics, but you won't know jack about rendering, networking, input, audio, or any other core game technology. If you just want to dabble and churn out a bunch of super simple games that you probably won't own enough rights to for substantial profit, then go for that. Otherwise, I highly recommend pursuing a real education.
-A Game Developer
Edited by Uberwulu, 06 January 2014 - 03:58 PM.