Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Any suggestions for teaching myself C++?

13»

Comments

  • CuathonCuathon Member Posts: 2,211

    Originally posted by Creslin321

    Well from what I hear C++ is the most prominent language in the professional game dev scene...so you will probably want to know it if that's what you want.

    Back in 1998 when I learned C++ I started with the SAMS "Learn C++ in 21 days" book, and it taught me a lot of useful things.  That said though, when I actually took C++ in college I found out how little I really knew.

    Languages with manual pointer manipulation and memory allocation are just harder to learn, even though you do get benefits from knowing that stuff.  You can do it, I did it, but you should prepare yourself for a lot of frustration.

    Anyway...I still don't know if C++ is the best place for you to start.  Programming isn't the only thing you need to know for game development.  You also need to know a lot of the typical game dev algorithms that apply to universal concepts like collision detection, 3d geometry, etc.  So you really may want to start with a pre-existing engine as it will help you learn how that stuff is typically done.

    In the end, it's all up to you.  You have a lot of skills to learn, so I suggest just pick one to learn at a time and stick to it :).

    Well now that he has confirmed his desire to enter the gaming industry I guess its time to revise my thoughts. Go to college. Get a CS degree. While there try and program some games and do some work with open source libraries like the ones I mentioned. You need both a portfolio and a degree if you want to maximize job chances.

    Go to www.gamedev.net and read through every single FAQ in the breaking in and beginners forums. Do not ask a question until you have read and understand the FAQs. The answer is likely in there and they get annoyed if you post a thread with a question answered in the FAQ. For those actually interested in industry jobs, and even for people who want to form indie companies, they have a lot of excellent resources.

  • nomssnomss Member UncommonPosts: 1,468

    Originally posted by kjempff

    Learning by doing. If you get the thrills from making things happen, you will find out how to do it.

    Find some language tutorials for whatever you want to code in, plow em through and don't worry if you don't understand all the concepts because it may suddenly dawn on you as you gain experience.

    I would start with java is it is very well documented, C++ is great for a more pure understanding of object oriented programming but is also more advanced and thereby harder to learn. C++, java, C# are all object oriented languages and not that far apart, so when you learn one you can switch to the others without too much trouble.

     

    Specifically if you want to code small games, you could go for flash instead of using c++/java because those languages can grow over your head fast as a novice programmer. Sorry I cant give any specific tutorials to use, its been way too many years.. only thing I can say is, either you got that thrill of coding or its a chore, and if it is a chore to you find something else to do :)

     

    ps. Android apps are coded in java only afaik. Eclipse is the programming environment to use for java programming and it is free, see eclipse.org.

    THE worst advice you can give to anyone. Specially someone just starting. OP, or anyone who wants to get a fundamental foundation in anything would acquire great knowledge from fundamental books rather then these internet tutorials.

  • nomssnomss Member UncommonPosts: 1,468

    http://www.walkerboystudio.com/html/unity_training___free__.html

    Awsome place to start for anybody interested in game programing. They start at the bottom, but you'll need to have spent about 3 months in programming to get something out of the above training.

  • KilraneKilrane Member UncommonPosts: 322

    If you're really serious about programming as a career, be it in the game industry or elsewhere, you really do need a Computer Science degree.  Lucky for you Harvard offers their first semester Computer Science course for free, you can check that out here:

     

    http://cs50.tv/2011/fall/

     

    They give you everything you need to get started on the website so you can follow along with the class videos.

     

    That said, if you DO want to get into the game industry learning C is essential.  You should start off with C before moving onto C++, especially for you're possible career choice.  Here is another great website on how to get into the gaming biz.  Read it, you will get a lot of good tips in there if you actually follow through with school.  If you try to do this all on your own, with out a higher education degree, you are going to have one hell of an uphill battle.  Good luck!

     

    http://www.sloperama.com/advice/idea.htm

  • FrostWyrmFrostWyrm Member Posts: 1,036

    Originally posted by Creslin321

    Originally posted by FrostWyrm


    Originally posted by Creslin321

    In response to OP...

    If you just want to make indie games by yourself or with a few buddies and you aren't eventually looking to get a job in the game industry, then I would say don't even worry about C++ and get the Unity3D game engine!

    Unity3D is pretty amazing IMO, it's free, it's multi-platform, it uses C# or Javascript as its scripting language, it's heavily GUI based, and it's extremely versatile and powerful.  In addition, it will also teach you lots of concepts about how game engines work. 

    If you try to start making games by using C++ and DirectX or something, you have a daunting task ahead of you.  Before you make a game, you have to make an engine in which it runs and not only is that not easy, it's also unnecessary in most cases.  Unity3D can handle a ton of different game concepts just fine, so why reinvent the wheel?

    Anyway, if you want to use Unity3D, my recommendation would be to just DL it from their site, and then get the book "Unity 3.x Development Essentials."  That book will have you creating a prototype game with real functioning physics in chapter 1.

    I've checked out Unity before. Even found some tutorial videos on it from 3DBuzz (I first found them for their Maya tutorials). It seems you need to know C# to really work with Unity, though. In any case indy games is just a mid-term goal. Long-term I really would like to move into a more professional programming field.

    As I mentioned, though, I cant afford school (cant get financial aid/loans for the moment) but I'd still like to build some demonstratable skills. I understand this will take time, but its something I'm willing to work towards.

    Well from what I hear C++ is the most prominent language in the professional game dev scene...so you will probably want to know it if that's what you want.

    Back in 1998 when I learned C++ I started with the SAMS "Learn C++ in 21 days" book, and it taught me a lot of useful things.  That said though, when I actually took C++ in college I found out how little I really knew.

    Languages with manual pointer manipulation and memory allocation are just harder to learn, even though you do get benefits from knowing that stuff.  You can do it, I did it, but you should prepare yourself for a lot of frustration.

    Anyway...I still don't know if C++ is the best place for you to start.  Programming isn't the only thing you need to know for game development.  You also need to know a lot of the typical game dev algorithms that apply to universal concepts like collision detection, 3d geometry, etc.  So you really may want to start with a pre-existing engine as it will help you learn how that stuff is typically done.

    In the end, it's all up to you.  You have a lot of skills to learn, so I suggest just pick one to learn at a time and stick to it :).

    I took a few years of game design in college. Never completed a degree (ran out of $$) but we learned a little bit about hit boxes and such. I was focused more into art than programming, though, so I only caught some of the basics of OOP and game loops, if/then/else statements and the like. Hardly enough to make a working program. I probably couldnt even remember how to do a Hello World.

  • Creslin321Creslin321 Member Posts: 5,359

    Originally posted by FrostWyrm

    Originally posted by Creslin321

    Originally posted by FrostWyrm

    Originally posted by Creslin321

    In response to OP...

    If you just want to make indie games by yourself or with a few buddies and you aren't eventually looking to get a job in the game industry, then I would say don't even worry about C++ and get the Unity3D game engine!

    Unity3D is pretty amazing IMO, it's free, it's multi-platform, it uses C# or Javascript as its scripting language, it's heavily GUI based, and it's extremely versatile and powerful.  In addition, it will also teach you lots of concepts about how game engines work. 

    If you try to start making games by using C++ and DirectX or something, you have a daunting task ahead of you.  Before you make a game, you have to make an engine in which it runs and not only is that not easy, it's also unnecessary in most cases.  Unity3D can handle a ton of different game concepts just fine, so why reinvent the wheel?

    Anyway, if you want to use Unity3D, my recommendation would be to just DL it from their site, and then get the book "Unity 3.x Development Essentials."  That book will have you creating a prototype game with real functioning physics in chapter 1.

    I've checked out Unity before. Even found some tutorial videos on it from 3DBuzz (I first found them for their Maya tutorials). It seems you need to know C# to really work with Unity, though. In any case indy games is just a mid-term goal. Long-term I really would like to move into a more professional programming field.

    As I mentioned, though, I cant afford school (cant get financial aid/loans for the moment) but I'd still like to build some demonstratable skills. I understand this will take time, but its something I'm willing to work towards.

    Well from what I hear C++ is the most prominent language in the professional game dev scene...so you will probably want to know it if that's what you want.

    Back in 1998 when I learned C++ I started with the SAMS "Learn C++ in 21 days" book, and it taught me a lot of useful things.  That said though, when I actually took C++ in college I found out how little I really knew.

    Languages with manual pointer manipulation and memory allocation are just harder to learn, even though you do get benefits from knowing that stuff.  You can do it, I did it, but you should prepare yourself for a lot of frustration.

    Anyway...I still don't know if C++ is the best place for you to start.  Programming isn't the only thing you need to know for game development.  You also need to know a lot of the typical game dev algorithms that apply to universal concepts like collision detection, 3d geometry, etc.  So you really may want to start with a pre-existing engine as it will help you learn how that stuff is typically done.

    In the end, it's all up to you.  You have a lot of skills to learn, so I suggest just pick one to learn at a time and stick to it :).

    I took a few years of game design in college. Never completed a degree (ran out of $$) but we learned a little bit about hit boxes and such. I was focused more into art than programming, though, so I only caught some of the basics of OOP and game loops, if/then/else statements and the like. Hardly enough to make a working program. I probably couldnt even remember how to do a Hello World.

     Well that's good, at least you've got a bit of fundamental knowledge in game design concepts.

    I think you've got a lot of advice on what books to start with and what not already.  The one other thing I would add is that you should try to find a friendly forum where experienced programmers help students.  Because you're going to inevitably find yourself in a situation where you are just stumped.

    I think it happens to all programmers when they are learning.  You will be working on a program, and then just have some crazy runtime error that you simply can't figure out.  When this happened to me, I had the help center at college to help me, but you won't have that, and that's why I think an internet community could really help you.

    An experienced programmer could probably look at your code and figure out what's wrong in 10 minutes, while it would have taken you hours or days to solve.

    Anyway...if you want to get a job as a programmer in the game industry...I think it's going to be rough for you without a CS degree.  It's a very competitive field, and there is no shortage of CS graduates looking for a position.

    Basically, you will just have it harder.  You will have to PROVE to the industry that you are valuable.  And the way you can do this is by actually making games.  I really think that's your best path if you can't afford college.

    Learn a language, make an actual game or three that are at least moderately fun to play, then you can use them to make a portfolio for yourself that will help you get a job.  I dunno, if I had a choice to hire a college kid with a CS degree and nothing else, or a self-taught guy that actually made real games on his own initiative...I would choose the self-taught guy.

    You can't teach drive, ambition, or dedication...and that has to be your edge IMO :).

    Are you team Azeroth, team Tyria, or team Jacob?

  • FrostWyrmFrostWyrm Member Posts: 1,036

    Originally posted by Creslin321

    Originally posted by FrostWyrm


    Originally posted by Creslin321


    Originally posted by FrostWyrm


    Originally posted by Creslin321

    *ka-chonk*

    I took a few years of game design in college. Never completed a degree (ran out of $$) but we learned a little bit about hit boxes and such. I was focused more into art than programming, though, so I only caught some of the basics of OOP and game loops, if/then/else statements and the like. Hardly enough to make a working program. I probably couldnt even remember how to do a Hello World.

     Well that's good, at least you've got a bit of fundamental knowledge in game design concepts.

    I think you've got a lot of advice on what books to start with and what not already.  The one other thing I would add is that you should try to find a friendly forum where experienced programmers help students.  Because you're going to inevitably find yourself in a situation where you are just stumped.

    I think it happens to all programmers when they are learning.  You will be working on a program, and then just have some crazy runtime error that you simply can't figure out.  When this happened to me, I had the help center at college to help me, but you won't have that, and that's why I think an internet community could really help you.

    An experienced programmer could probably look at your code and figure out what's wrong in 10 minutes, while it would have taken you hours or days to solve.

    Anyway...if you want to get a job as a programmer in the game industry...I think it's going to be rough for you without a CS degree.  It's a very competitive field, and there is no shortage of CS graduates looking for a position.

    Basically, you will just have it harder.  You will have to PROVE to the industry that you are valuable.  And the way you can do this is by actually making games.  I really think that's your best path if you can't afford college.

    Learn a language, make an actual game or three that are at least moderately fun to play, then you can use them to make a portfolio for yourself that will help you get a job.  I dunno, if I had a choice to hire a college kid with a CS degree and nothing else, or a self-taught guy that actually made real games on his own initiative...I would choose the self-taught guy.

    You can't teach drive, ambition, or dedication...and that has to be your edge IMO :).

    This is kind of the plan. I cant go back to school, but at the same time I dont want to give up entirely.

    I've already got several small game ideas worked out. Just need the skills to implement them.

  • sealatissealatis Member Posts: 1

    If you are going to learn any object oriented lenguage ak c++ with out  knowing about object oriented programming your software will probably end up being trash, and a nest of bugs 

  • kjempffkjempff Member RarePosts: 1,759

    Originally posted by nomss

    Originally posted by kjempff

    Learning by doing. If you get the thrills from making things happen, you will find out how to do it.

    Find some language tutorials for whatever you want to code in, plow em through and don't worry if you don't understand all the concepts because it may suddenly dawn on you as you gain experience.

    I would start with java is it is very well documented, C++ is great for a more pure understanding of object oriented programming but is also more advanced and thereby harder to learn. C++, java, C# are all object oriented languages and not that far apart, so when you learn one you can switch to the others without too much trouble.

     

    Specifically if you want to code small games, you could go for flash instead of using c++/java because those languages can grow over your head fast as a novice programmer. Sorry I cant give any specific tutorials to use, its been way too many years.. only thing I can say is, either you got that thrill of coding or its a chore, and if it is a chore to you find something else to do :)

     

    ps. Android apps are coded in java only afaik. Eclipse is the programming environment to use for java programming and it is free, see eclipse.org.

    THE worst advice you can give to anyone. Specially someone just starting. OP, or anyone who wants to get a fundamental foundation in anything would acquire great knowledge from fundamental books rather then these internet tutorials.

     

    Not sure what you are on about, doesnt a tutorial teach you the fundamentals ? Mine did (20 years ago tho :P).

    I agree with you that it is very important to really understand object oriented programming to write good code, but they way I read OP it sounded like first step is to find out if he has the drive in the first place.

    Besides nothing will confuse you like reading theory without code examples and hands on experience.

  • CalmOceansCalmOceans Member UncommonPosts: 2,437

    C# isn't used for demanding games since it's a managed language (it uses a JIT compiler unlike C++ or C, it's comparable to Java) and it doesn't play well with the libraries of DX and programmers like C++ because it's easier to port their game to other platforms like PS3 and Xbox if their game doesn't have to deal with type differences between C# and C++. All big gaming engines are written in unmanaged C++, programmers who need to access those libraries do not want to deal with type restrictions or syntax issues, so they use C++ instead of C#.

    Some people call C# code safe code, and C++ unsafe code, it all relates to how C++ and C# deal with types and how they handle objects and memory management.

    I learned C/C++ and C#. There's  really not that big of a difference between C++ and C#, types are more restricted and better defined in C#, objects creating and destruction is managed better, but other than that the differences are pretty small overall.

    I would learn C++ instead of C#, the survival of C# depends on one thing, it depends 100% on the survival of Microsoft. And we all know they missed the boat a lot lately, they're not very strong in the mobile or tablet space, a huge gaming market, so C#'s survival is pretty bleak atm.

     

    As far as books or online study, I frankly hated online resources, there are so many good cheap C++ books out there that I can't recommend wading through online resources.

    Online resources tend to focus on the programming side only, they don't explain what a compiler does, they don't explain how it interprets syntax, they don't explain what a linker is, they don't explain how you go from what you write to the actual machine code. Those 20 first pages in a good C++ book or book about compilers will teach you more about programming than any online resource ever can.

    A site I loved when I programmed a lot is http://stackoverflow.com It's a huge community of programmers, many excellent people there and you literally will get an answer within a minute on any programming issue. (it's not a site to ask if C++ or C# is better, it's a site for when you start programming and you run into an issue)

Sign In or Register to comment.