You wanted to get into game programming.
You found out that C++ is the real deal.
You came here and started reading the first post of the series.
You practiced and moved on till the end.
Now, you are confused about what to do next?
(By the way, it applies to all the enthusiastic people who learned to program for the sake of making games.)
What you need to do now, is to google some simple C++ 2D Game Development Libraries.
Back in the days, SDL2 was my choice (I still use it a lot). SDL2 is pretty neat and it just clicked with me. But it does have drawbacks (for example, no easy-peasy shaders). If SDL2 is your choice, Lazy Foo’s SDL2 Tutorial Series is probably the best place for learning it. I also learned SDL2 from there.
People recommend SFML a lot. Even though I don’t use it, it won’t hurt you to try different libraries in the start and just go with what feels right.
Fewer features won’t hurt. But less personal compatibility will…
That is why I use SDL2. Even if there is not that something you need, you can craft your own hack to go through it.
Why not the OpenGL library or just any library to make 3D games (like Call Of Duty and GTA)?
DON’T!
It’s impractical unless you got a thousand experienced people of all kinds working on it.
-_-
Why not a game engine like Unity for making 2D games?
Yeah, you can. In fact, it is awesome. Go and do it.
But you may consider this. They have a GUI, an editor and all fancy stuff that eases game development. And that makes your brain lazy and kinda limits your creativity.
I am not saying to build a game development career upon some C++ 2D Game Development Library (which honestly, won’t hurt). I am trying to imply the fact that doing code by hand and visualizing the game in the head will give you a much deeper understanding of what a video game is and how video game actually works.
And when you are satisfied with that experience, you can go with Unity like me.
How this deeper understanding thing works on a higher level?
It works. But you may not be able to see it working. Unconscious, maybe.
To see it in effect, just compare yourself with the one who went directly into Unity and you will realize yourself. You will be able to pick things faster than he would.
And please, take my words with a grain of salt.
So, that means I, as an individual, am stuck with 2D forever?
Hell no!
I recently started learning Blender (free, open-source 3D modeling and rigging software) and it seems like 3D is a viable option for any solo developer.
But yeah, as a solo game developer, no Call Of Duty or GTA forever. But awesome games like Gone Home and Inside are always a good option for an experienced artist and game developer.
In the end, I would like to say to make as many complete games as possible. With every completed game, your experience gets higher exponentially as compare to half-baked games.
Here is the summary:
Programming -> 2D in Game Library -> 2D in Game Engine -> 3D in Game Engine
What if I learned C++ for some other purpose?
Well, I don’t know the specifics but you can go for that purpose as hard as you can.
Sorry, I don’t have much advise on that, other than the fact that you shouldn’t go big on whatever the purpose is. Always try small and then, step towards bigger things.