I'm new here to the forums, so hello to all who take the time to read this post.
I'm beginning in C++ and teaching my self. I've bought a C++ Book for Beginners in Game Programming and have been taking notes of...well everything.
As a quick background, games are my thing. I literally play games on many platforms, and watch let's plays on youtube (Let's Plays being people who play games, record it, and commentate for those who don't know). But in the end I really want to make the actual game.
For anyone who is familiar with LittleBigPlanet 2 on the PS3, I am in love with the logic side of the game.
I've actually done a little in Game Maker 7.0 Pro, scripting the programming. Obviously C++ is much more advanced, at least from what I know.
So after I did a bit of reading in the book I got, I skimmed to the back to see if graphics were involved, none were. I admit, I'm very eager to jump into an API for C++ and think I've chosen OpenGL.
My questions:
This book does not go into details of making a game with actual 3D, or 2D graphics. How can I find out how to associate the API with my programming?
My Process thus far is to finish this book and get certified, while learning how to associate the API. Is learning a book on Game Programming enough to get certified?
I want to dive head first into actually making games, but I know learning programming is very difficult. I'd like to know if there's a better process (other than college).
I always have serious doubts on certification. Certificates prove you are capable in that subject but it rarely speaks of your implementation skills. A much better gauge would be to provide a working portfolio of your past projects as your credentials. Such credential sure beat certificates anytime in my humble opinion.
Well yeah, I don't intend on relying souly on a certification. I'd create a couple project games, maybe create or join a team and get a good portfolio going, as you suggested :)
Advice: drop the game part and learn pure C++ first. You will have enough trouble with that. Stuff like OpenGL provides content for multiple books, it's really no surprise no one dedicates single chapters to it. When you're competent in using C++, that is the time you can go back to games.
I know this sounds sort of harsh, but game programming is really, really complicated and starting it without very grounded knowledge of the tools you are going to use is a surefire way to fail.
Alright, so this book I have now describes fundamentals of the language such as what #include <iostream> is for, what main int() is for, what the std is, making prefixes and postfixes.
(keep in mind I just finished the first chapter)
You say learn "pure" C++, but does that mean the book I'm reading isn't "pure"?
I mean I know it's focusing on Game Programming, but what would I be missing if I continued on with this book?
I disagree with hanst. I started with an interest in game programming and dove right into making simple games with MFC/AppWizard in old VS4 (which isn't exactly "beginner" stuff - but not a day passes where I'm not convinced I did the right thing).
Either way you're going to have to learn language basics, so you might as well learn them in an environment that's more fun. If games are fun for you, then that's the environment you should learn them in.
I say start with a simple game lib (I like to recommend SFML). Install it, get it set up and be able to compile some of the example programs on the SFML site. Once you do that, you can follow the guides and templates on the site and play around to figure out how to make your own games.
Ok, maybe not "surefire". What I mean is that most people will be troubled enough by stuff like drawing functions, file loaders, AI, collision detection and response etc etc and attempting to do all that without having solid knowledge of how the language you are using works just doesn't seem like a very good idea to me. I mean, you don't have to become an expert, but... do you see what I mean?
I'm not saying his first project should be a functioning game. I'm saying that he should use a learning environment that's closer to what sparks his interest.
Starting in a game environment is just like starting anywhere else. You practice simple things and go from there.
A first step might be drawing a simple image to a screen. Not hard at all if you follow cookie cutter examples. A next step might be to change what image is drawn when the user presses the space bar or something. Again not really difficult... but it teaches you all sorts of things about the environment.
You go from there.
Nobody's going to expect to make a masterpiece right out of the gate, but you can at least make something.
Disch:
I agree with learning a language in an environment that is entertaining to the learner. Thank you for the link. I will definitely have to check it out :)
Hanst99:
I also agree with being comfortable in the language and having a good base knowledge of the language before trying something too difficult. For example I jumped into Game Maker thinking I could script an entire 2D Zelda fan game and was not up to the challenge as I had no base in scripting what so ever. So I do understand what your saying.
I'd like to point out that some of my questions aren't being answered. I asked what I would be missing out on if I continue with the current book I own rather than getting a book purely on C++?
I'm no expert (In fact, I too am a begginer) but, I think that you could miss out on quite a few keywords or functions by starting in just games.
It's like learning to dive without learning to swim. Sure, you'll get get the job done, you may even do very well, but you won't have the core exercise learned.
But by all means, take into acount what Dish is saying... If it worked for him, who knows, it might work for you.
It's like learning to dive without learning to swim. Sure, you'll get get the job done, you may even do very well, but you won't have the core exercise learned.
I can't give in to this analogy. It doesn't jive with me at all.
What will starting in a console environment teach him that he wouldn't learn in a game environment?
We're not talking about learning different things. We're talking about the environment in which he learns them.
He's not going to miss out on learning any core fundamentals by starting in games. He's just going to have more fun learning them.
To make things a little clearer, the book I own is for beginners. There's 10 chapters, and I just finished the chapter that introduces: #include <iostream>, cout, cin, main(), {}, int, variables, arithmetic, ASCII, variable types (long, short, double, ect) and more.
That's all in the first chapter and I'm sure I have a good base on all these areas. So when I asked what I could be missing, is there anything missing? I took notes on all these subjects and intend to do so on the next 9 chapters, but not if I could potentially be missing something.
I know it's hard to say, "This is the book I'm reading, this is what's in it, tell me what's missing". However if this book has a chance to get me going I'd like to keep going.
There is no need to stop now, go ahead. I don't know your book after all. The time to think about what you might be missing is when you run into actual problems, and that's what this forum is there for after all.
Alright, so back to my first question, after I've gotten a good grasp of the language, I'm confused on how to associate the API with the programming. I read somewhere that it involves using #include _____. But is that just nicking the surface? Well I'm sure it is but how much more is there?
#include is for header files - the content of the specified file is literally inserted at that point. Usually header files contain function/datatype declarations and the like. Other than that there is also linking, which basically adds a bunch of compiled files together and forms the executable that way. And that's pretty much all there is to it (well, there are also differences like static and dynamic libraries, but you probably don't need to know about that right now).
I see. In that case, thanks for the help guys, this will really help me out getting started. Got a lot more to learn but I know where to come if I have questions :)