I want to make C++ games

jaywash

Baseband Member
Messages
69
Location
Canada
I wan to (eventually) make games in C++, so I've compiled a list of things I think I should learn, or just want to learn in general.
Can someone take a look at the books ive picked out, and maybe suggest some better ones or add to the list?

The math Part:
Pre-Calc: Precalculus: Mathematics For Calculus Book by James Stewart | Hardcover | chapters.indigo.ca

Calc: Calculus Book by James Stewart | Hardcover | chapters.indigo.ca

Algebra: The Linear Algebra Survival Guide: Illustrated With Mathematica Book by Fred Szabo | Trade Paperback | chapters.indigo.ca

The computer stuff:
My OS: A Practical Guide To Ubuntu Linux Book by Mark G. Sobell | Trade Paperback | chapters.indigo.ca (since i love ubuntu but am awful at operating on it)

OpenGL: OpenGL Game Programming Book by Kevin Hawkins | Trade Paperback | chapters.indigo.ca

C++: Sams Teach Yourself C++ in One Hour a Day Book by Jesse Liberty | Trade Paperback | chapters.indigo.ca

C: Head First C Book by David Griffiths | Trade Paperback | chapters.indigo.ca

That's the list. Most of this probably shouldnt be in this thread, or maybe ven this forum, but this is the only thread i thought it might work in, and i always get helpful tips from here so figured id try.
 
Considering the topic of your post, the books should be fine where they are at.
If making games in C++ is what you are after, then your selection is great. There are a number of websites that I think you should check out as well, but all at your own pace. The best advice that I can give you is to learn at your own pace. For every tutorial that the book gives you, follow the tutorial, then try to do somthing unique to you using what you have learned up to that point. (This is a fact that books leave out...)
 
Book Assessment:

I'd say that is a reasonable selection - however I would say the best book on C is "the C programming language" by Kernighan and Ritchie (known as the K&R book). It literally is 'the book' on the subject.

I wouldn't bother with the Ubuntu book, I know you said you don't know how to operate it - but online tutorials and forums are much more useful for this kind of thing as they are more up-to-date and can focus specifically on your problem. Those books are generally designed for people who want to use Ubuntu like Windows - i.e. what applications are similar to X, Y and Z on Windows/Mac. They won't tell you how to install g++ (the C++ compiler for linux) and what the filesystem structure is used for by convention. Also, if you like ubuntu, I'd suggest Linux Mint as a derivative distribution because it is hugely popular, has a massive community forum and you can find lots of good tools which others have already built for it.

For people new-ish to Linux I can't overstate how important popularity and a vibrant support community is.

One genre of book you don't have a representative for on your list would be something like: Computer Graphics: Principles and Practice
I had the second edition of this book through my CS degree where I specialised in Grahpics, and it was by far the best at conveying what the core CG concepts are and how to think about them when writing code. In short - don't even bother trying to write games until you've grasped the rationale behind things like lighting, perspective, the modelview and projection matrices (opengl specific terminology there) etc.

Game Development Aspirations:

As you've mentioned C++ and OpenGL books I'm inferring the kind of game programming you're talking about, but this does impact slightly upon your aspirations. There are easier ways to learn how to write simple games, but I'd definitely recommend the approach you're suggesting in the long run as it is incredibly satisfying to see your own 3d worlds come to life. One thing I will caveat that with though, is that it takes a lot of dedication to understand what's required for game programming and how it all works (this is what the aforementioned CG book is excellent at explaining).

Technical Considerations:

You should decide up front what platform you wish to make games for (i.e. Windows/Linux) and ensure whatever books you get are tailored for that environment.

Ensure your graphics hardware is compatible with the latest version of OpenGL (or whatever version your wish to use / get books for etc.)

Before you purchase anything, get the simplest online example from a tutorial and make sure you know how to use your build environment properly (by this I mean: navigate in your IDE - e.g. eclipse, visual studio; build a new project, compile it, link with external libraries, run it, debug it etc.) And (more importantly) make sure you understand these terms and when each is required. Like many students on my course you could spend more time trying to work out what's wrong with your code when it's actually something on your system which is setup incorrectly.

OpenGL versions: Make sure everything you're looking at is the same version - there are HUGE differences between 'old' opengl (1&2) and 'new' opengl (3&4). You have been warned!

Online Tutorials:

For windows, the NeHe opengl tutorials are exceptional (available at: NeHe Productions - Everything OpenGL)
For linux there are a few pretty good ones
1) Lighthouse 3d: OpenGL @ Lighthouse 3D - Tutorials
2) Opengl tutorials: Tutorial 1 : Opening a window | opengl-tutorial.org

Regardless of what platform / books / games / tutorials you decide to adopt as a 'permanent' solution. I would suggest reading through all of these at a high level to begin with as it will give you some good ideas about what's possible and motivate you to continue through what appear basic and uninspiring examples at the start.

Hope that helps,
Michael.
 
Depending on what type of learner you are but you will find a huge selection of Youtube videos that you can code along with, you'll also find a lot of the time the authors of the videos have there own sites/source code for you to visit if you get stuck.
 
I don't want to take a dump on your parade, but I would choose a different language than C++. C++ is mainly a Command Prompt based language, and is similar to C#which would be better for making a game. However, I wouldn't use C# either. I would go with Java.
 
I think that you're thinking of C, not C++.

given that the OS that you're using, with all its graphics, and well everything that makes it work entirely, is written in C++.

you can pretty much do anything that you want to in C++.
(in fact probably more than you can do in Java for making games...)

There are benefits to using Java over C++ and benefits to using C++ over Java for both.

but suggesting that C++ is only for making command line programs is like me saying that Java is for making boring grey forms with an OK button at the bottom.
 
Perhaps only a couple at a time?
I use LUA for interface design most of the time... but its really up to the OP, and there is no reason to confuse a new programmer. C++ is for sure a long stretch, but worth learning with time and patience.
 
I think that you're thinking of C, not C++.

given that the OS that you're using, with all its graphics, and well everything that makes it work entirely, is written in C++.

you can pretty much do anything that you want to in C++.
(in fact probably more than you can do in Java for making games...)

There are benefits to using Java over C++ and benefits to using C++ over Java for both.

but suggesting that C++ is only for making command line programs is like me saying that Java is for making boring grey forms with an OK button at the bottom.

I was talking about C++. I am certified in C++, VB, VBA, C#, Java, and Python, and for gaming I choose Java. If you're going to program in C++, you may as well do it in C#.
 
well then you should look at giving your cert back!

C++ is mainly a Command Prompt based language,
that's completely false.
It's not mainly a command prompt based language, (whether you mean you'll be using the command prompt to program or it's for making console programs.)
sure, it's easy to make console programs, (so it's easy to make a game like zork) but that's not a limitation.

There is no reason that you shouldn't be making games in C++
(and indeed plenty of people -like blizzard making world of war craft or Sony with the play station agree)

And some pretty good reasons that you would like to program in C++ (like it's lower level, and makes you think about how some things are done. -as it's a programming language that is used in industry why wouldn't you want to use it, sure it's harder than using c# but nobody ever got good playing on easy levels.)

there are plenty of reasons that you'd avoid C# for writing games (or anything), (like it's a .net language and therefore only receives third party support and compilers on anything but windows)

(whilst C++ and Java have wider cross platform support)
so C# will be limited to windows machines, windows phones and xbox

C++ will compile on:
windows
linux
mac
windows phone
android
iphone
xbox
playstation
etc...

Java may be an option for some (maybe even all) of those platforms too.

there is an article about it on wikipedia:
Game programming - Wikipedia, the free encyclopedia

ignore the "cons" for C++ that boilerplate code is used, everyone everywhere can use boiler plates and templates, that's not a language specific issue, in fact it's something that I see time and time again even in very high level scripts like ASP. (Oh look xyz website has a vulnerability, because rather than spending ten minutes writing code the developer spent ten minutes searching google for a pre-made something that they could just drop in.

or rather if you don't want to ignore it then it should be added as a con for all languages.
 
Well said root, I second that. I did a lot of game development at uni in both Java and C++ and when you consider that the modern gaming industry is driven by consumers - to focus on efficient code, performance and powerful game engines with physics simulations, GPGPU and other highly specific optimisations - it makes complete sense that they would prefer C++ (native, cross-platform compiled, powerful language) over Java (compiled to intermediate byte-code and interpreted via JVM).

That is not to say that beginners to game development shouldn't consider Java for a learning platform, but from a career/recruitment perspective, developers with C++ game development will be looked upon more favourable than Java game developers. This is simply because C++ requires you to better understand what really goes on in software i.e. memory, threading etc. Obviously people are free to disagree with this and consider it unfair, but these things don't often just materialise through personal/company preference - experience does largely corroborate this trend. Again, not to say there aren't exceptions, but in general this is a common industry view.
 
Last edited:
Back
Top Bottom