Is GCC the right book for me to start off with?

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Is GCC the right book for me to start off with?

      Hey everyone,
      Originally, I started window-shopping for game engines to work with. Everything from cocos2d-x for android development to Unity3D, etc. Unfortunately, I am not proficient in any programming language and many sources say that C++ is heavily documented and lots of big game companies use it.

      Alright, so let's assume I don't know the first thing about directx, visual basic, opengl, etc. There are many thick books out there and I don't know where to start.

      Below are my questions:
      1.Is this book the right reading material for a person who wants to learn game development and has no previous experience?

      2.Does GCC teach some C++?

      3. Either way, would getting this book along with GCC be a good decision?
      amazon.com/Beginning-Through-P…ition-ebook/dp/B00LZW07P0

      I'd like to know what you guys think. ||
    • Basically, I am not a proficient programmer in any language, either, haha! I strongly suggest that you first learn some basic knowledge about C++ (or C#, which is said to be easier to code) before reading GCC4. As to your questions, maybe I can give you some advice.

      1.Is this book the right reading material for a person who wants to learn game development and has no previous experience?
      --- Not really. As I said, you should have some basic understanding about C++ (or C#) before you can truly appreciate the benefits of this wonderful book.

      2.Does GCC teach some C++?
      --- Yes and no. GCC4 does give us some useful techniques about programming C++; however, it is not a C++ textbook, as far as I know.

      3. Either way, would getting this book along with GCC be a good decision?
      --- I haven't read this book yet. If you read through that book, maybe you'll gain some useful knowledge about programming C++, but I don't think it will give you too many useful ideas about games programming.


      I can give you one final suggestion:
      First, learn some C++ knowledge by reading books like Ivor Horton's Beginning Visual C++ 2013 (or 2010, or the 2010 version for C#);
      Second, learn some knowledge about DirectX or OpenGL. I haven't learned OpenGL, so I recommend that you read books about programming DirectX 11 (9.0c is also OK, but a little more complicated), like Frank D. Luna's Introduction to 3D Game Programming with DirectX 11.
      After you have done the previous two, you can go on to read GCC4 and enjoy it!
    • 1) No, if you have no programming experience this book will probably not make much sense at first.
      2) It does not really teach C++. It has some best practices and other techniques, but if you are not familiar with the language or programming in general they won't help much.
      3) I haven't read that book so I don't know how useful it is.

      I think it will all depend on what your goal is. If you want to be a game programmer, then obviously you will have to learn programming. There are plenty of free tutorials online so you can go that route instead of buying a book.
    • dreamland85 wrote:

      Unfortunately, I am not proficient in any programming language and many sources say that C++ is heavily documented and lots of big game companies use it.

      Yes and no... C++ is a very old language. Some people like it, some people hate it. There are old archaic things you have to deal with in C++ that people can't stand. I've been programming in C++ for about 20 years so I'm used to those things. There's just a LOT of stuff there. Other languages have come along that are similar to C++ and try to clean some of that up. C# is an example, which tries to take the best parts of C++ and Java.

      A lot of my personal issues with C++ are being solved with C++ 11 & 14. Things like range-based for loops, the auto keyword, the override/final keywords, and automatically managed smart pointers (shared_ptr, weak_ptr, and unique_ptr) make it much easier to deal with.

      Due to its age, it's VERY well documented. You can google for just about any question you have and should find several good answers. Although the same is true for C# and many other languages.

      C++ is the most common language used by professional game studios because it's FAST. It's as close to the metal as you can get without dipping into assembly language. Most engines are built in C++ and have some kind of scripting layer for gameplay (Game Coding Complete uses Lua for this).

      C# is the most common language for indie and mobile developers because most of them are moving (or have already moved) to Unity. Unity makes cross-platform development trivially easy. I can take the same game and make a build for Android, iOS, PC, Mac, and whatever else I want. This is great because each of these platforms are very different from each other and they use totally different languages.

      Alright, so let's assume I don't know the first thing about directx, visual basic, opengl, etc. There are many thick books out there and I don't know where to start.

      I think others here are probably better at helping with this question. I will add my 2 cents though... what's your goal? Why do you want to learn DirectX, Visual Basic, or OpenGL? DirectX and OpenGL are low-level graphics APIs and aren't really useful to learn unless you want to be a graphics programmer. In my 10 years as a professional developer, I think I've touched DirectX and/or OpenGL twice. Every professional game engine I've used abstracts that stuff away so you're using generic interfaces. If you're not interested in graphics programming, I wouldn't bother learning this stuff. Now, you DO want to learn the basics of how the rendering pipeline works and you need to know 3D math. Game Coding Complete will get you started with those.

      As for Visual Basic, I wouldn't bother. It's not used in the games industry. We tend to use C# for back-end tools, which is what one might use Visual Basic for.


      Below are my questions:
      1.Is this book the right reading material for a person who wants to learn game development and has no previous experience?

      Yes and no. You'll want to learn C++ before diving into this book (expect this process to take a few months). Once you learn it, this book makes a good introduction to using C++ for game development.


      2.Does GCC teach some C++?

      No, we assume that you are comfortable with C++ and programming in general.


      3. Either way, would getting this book along with GCC be a good decision?
      amazon.com/Beginning-Through-P…ition-ebook/dp/B00LZW07P0

      I haven't read this book. It seems ok, though the ordering of the information looks a bit wonky to me. Teaching namespaces on day 1 seems confusing. C++ suffers from a chicken & egg problem. In the beginning, you have to hand-wave over a bunch of stuff. For example, this is a Hello World program, which is the simplest program you can write (it just prints hello world on the screen):

      Source Code

      1. #include <iostream>
      2. using namespace std;
      3. void main()
      4. {
      5. cout << "Hello World\n";
      6. }


      There's a LOT going on in that code snippet. There's includes, namespaces, a function definition, an object, an overloaded operator, etc. You have to hand-wave over a lot of that if you're just trying to explain how to compile a program.

      For learning C++, this book is one that people seem to recommend:
      amazon.com/Primer-Plus-6th-Dev…/dp/0321776402/ref=sr_1_1

      I'm not saying it's better, just that it's what people seem to recommend when I ask.

      -Rez
    • My goal is to be a game programmer so that I can possibly join a team in the future or get a job creating games aside.

      For now, I'd like to create some kind of 2D or 2.5D platformer for experience and maybe even building it for android. Just something that utilizes a similar formula, because I love the old-school 2D games. From Megaman, Gunstar Heroes, Castlevania, Kirby,etc

      I've tried Unity in the past with having absolutely no knowledge of coding or the language I was using. I guess it was C#, but I was just copy/pasting tutorial scripts and experimenting. I remember creating a ball (controller) and a slide with boxes that had AI scripts in them. Sure, it was fun to do that, but I burned out my macbook pro while running Unity all summer.

      Now, I have a low-end Toshiba that I economically purchased at Besbuy, earlier this year. Right now, one of the engines I'm attracted to is Cocos2d-x.

      The post was edited 2 times, last by dreamland85 ().

    • dreamland85 wrote:

      My goal is to be a game programmer so that I can possibly join a team in the future or get a job creating games aside.

      For now, I'd like to create some kind of 2D or 2.5D platformer for experience and maybe even building it for android. Just something that utilizes a similar formula, because I love the old-school 2D games. From Megaman, Gunstar Heroes, Castlevania, Kirby,etc

      Honestly, I would take a step back from games and learn a real programming language first. Spend a few months just learning C++ or C#. Of the two, I'd probably start with C# since it's a bit easier to grasp. Once you have a solid foundation in C#, go back to Unity and use their 2D platform to build a really simple game. This is also around the time when Game Coding Complete will become a lot more relevant. The book is geared towards C++ but the lessons apply equally well to other languages (Trinak showed me his Python engine which applied the same architecture, for example).


      I've tried Unity in the past with having absolutely no knowledge of coding or the language I was using. I guess it was C#, but I was just copy/pasting tutorial scripts and experimenting. I remember creating a ball (controller) and a slide with boxes that had AI scripts in them. Sure, it was fun to do that, but I burned out my macbook pro while running Unity all summer.

      This is exactly why I suggest that you learn programming first and separately. You'll never get out of "sample land" if you don't. The good news is that you can learn it in pieces. Start by learning a language and then make a few things. Then step back again and learn some computer science principles (data structures, algorithms, etc.) and then go back and make more complex games. Rinse & repeat.

      Just remember, this is a long road and you'll never stop that cycle. I learn new stuff constantly. So does Mike and he's been programming even longer than me.


      Now, I have a low-end Toshiba that I economically purchased at Besbuy, earlier this year. Right now, one of the engines I'm attracted to is Cocos2d-x.

      Eh, I wouldn't bother, unless your goal is to be an engine programmer. My sense is that your happy place is in gameplay, not engine tech.

      Unity is the gold standard in mobile development at this point. I know very few mobile developers who aren't using Unity. The ones I know of who aren't have been around for long enough that they have their own internal tech and pipeline. If you want to make a mobile game, Unity can't be beat.

      -Rez