Ugh... Here I come!
by Eric Schuld · 04/24/2007 (9:26 am) · 12 comments
So I've been a frustrated TGE, TGB, and TGE:A owner. (I know I know... spent a bit of money that I'm not using... (repeats the same conversation I've had with my wife over and over in my head...)) I have been working slowly through the 2 books that hit on TGE - but I repeatedly find myself stuck at a point where I don't know where to begin. The 2 books really work with an assumption of knowing basic computer programming... and since it's been about 12 years since I have done much of any computer programming - I am choosing to file myself into the category of a total and complete noob. :)
My undergrad school WAS - until last night - going to let me take a Java course (They teach Java first - then C++ as 75% of the syntax between the 2 languages is essentially the same.) as I feel I would really benefit from the structured learning environment of a classroom setting. ANYWAY - since it is a summer school course - they are not allowing me to audit... only for the reason that it is summer school. I am a fairly self-motivated learner (completed my masters degree in an online/intensive setting.) SO - not wanting to waste any more time - and let the investment in these game engines (and starter kits and art and fx and L3DT) sit wasting - I come to all of you.
Those of you who have self taught C++, what did you use? What was the most effective? Were there any particular books that you found to be effective for the person who is literally starting again from ground zero in the world of C++? (Many of the books I'm finding on amazon - the reviews say that they are not for the beginner...)
I have spent 12 months or so - toying with the engine and the scripting - and ultimately have come to the conclusion that if I really want to get anywhere in BOTH the use of the engine AND having a strong foothold on the scripting process itself... it's time to learn C++.
Anyhoo - I have 2 game ideas that I just HAVE to make come to reality. I have been observing this community for about a year now - and I look forward to making that transition from observer to participant!
-Eric
My undergrad school WAS - until last night - going to let me take a Java course (They teach Java first - then C++ as 75% of the syntax between the 2 languages is essentially the same.) as I feel I would really benefit from the structured learning environment of a classroom setting. ANYWAY - since it is a summer school course - they are not allowing me to audit... only for the reason that it is summer school. I am a fairly self-motivated learner (completed my masters degree in an online/intensive setting.) SO - not wanting to waste any more time - and let the investment in these game engines (and starter kits and art and fx and L3DT) sit wasting - I come to all of you.
Those of you who have self taught C++, what did you use? What was the most effective? Were there any particular books that you found to be effective for the person who is literally starting again from ground zero in the world of C++? (Many of the books I'm finding on amazon - the reviews say that they are not for the beginner...)
I have spent 12 months or so - toying with the engine and the scripting - and ultimately have come to the conclusion that if I really want to get anywhere in BOTH the use of the engine AND having a strong foothold on the scripting process itself... it's time to learn C++.
Anyhoo - I have 2 game ideas that I just HAVE to make come to reality. I have been observing this community for about a year now - and I look forward to making that transition from observer to participant!
-Eric
#2
With that said, the Game Institute isn't a horrible place to get some game specific training. It has it's problems, but you can learn from there. They have a C++ course designed to get you familiar with the language, and keeps things game focused/oriented. Check it out here:
www.gameinstitute.com/CPP_Programming_for_Game_Developers_Module_1.html
That should get you started, and it's not super expensive, not much more than a couple of good programming books...
04/24/2007 (10:01 am)
I can't remember the book I used to really understand C++, but then by the time I taught myself C++, I had already programmed in many other languages before. The key thing about programming though, is that the language/syntax is pretty much irrelevant. Programming is about breaking down problems and understanding how to see them for their discrete steps and processes. Converting that understanding to the syntax of your choice is easy part. The best way to learn that breaking down skill is simply by doing it. Just write programs. Start simple and work your way up.With that said, the Game Institute isn't a horrible place to get some game specific training. It has it's problems, but you can learn from there. They have a C++ course designed to get you familiar with the language, and keeps things game focused/oriented. Check it out here:
www.gameinstitute.com/CPP_Programming_for_Game_Developers_Module_1.html
That should get you started, and it's not super expensive, not much more than a couple of good programming books...
#3
For instance I got what was supposed to be a begining in game programming with direct x book and it said it was for people who have had no experience with direct x and little to none with graphics. This book started out at a very advanced level making it painfull to try and follow
04/24/2007 (10:32 am)
I've been trying to be a self taught person as well, I find there are plenty of beginner books that show how to do everything that puts out text only. But then there seems to be a lack of in between books because all the next books are with graphics but they don't introduce working with graphics in a basic way they all assume you've already been working with graphics.For instance I got what was supposed to be a begining in game programming with direct x book and it said it was for people who have had no experience with direct x and little to none with graphics. This book started out at a very advanced level making it painfull to try and follow
#4
@Eric - thanks for the link - might be something to consider - as I would have spent more than that on gas to take the actual class. And I understand what you mean about the language/syntax becoming irrelevant - but when you are 12 years removed from programming... I need a new start. :) My brain is wired for math and problem solving - which very much falls inline with programming - of the programming I have done - it has always come very easy too me. (And the more I do it - the more my mind craves it... I find I get lethargic in every area of my life when not pushing my brain.)
@J - that's been part of my frustration as well. :P
04/24/2007 (11:04 am)
@Bobby - I will shoot you an email later today - when work permits. (I work 2 part-time jobs with LOTS of free time - hence why I am pushing hard to get going more and more on this - as I don't actually work Monday, Thursday, or Friday during the day.)@Eric - thanks for the link - might be something to consider - as I would have spent more than that on gas to take the actual class. And I understand what you mean about the language/syntax becoming irrelevant - but when you are 12 years removed from programming... I need a new start. :) My brain is wired for math and problem solving - which very much falls inline with programming - of the programming I have done - it has always come very easy too me. (And the more I do it - the more my mind craves it... I find I get lethargic in every area of my life when not pushing my brain.)
@J - that's been part of my frustration as well. :P
#5
Even long time programmers still need to look up stuff now and again so don't worry about any of that, just use what you know everyday.
I can't stress this enough, USE it as much as you can and it becomes second nature in no time.
good luck
04/24/2007 (12:29 pm)
Regardless of what you use to learn it, the most important thing is to USE it. Write as many simple little apps as you can possibly muster, adding just enough challenge so that you learn new things as you complete them. Even long time programmers still need to look up stuff now and again so don't worry about any of that, just use what you know everyday.
I can't stress this enough, USE it as much as you can and it becomes second nature in no time.
good luck
#6
My method is pretty simple, I pick a technology, in this case, it's C++, and I decide I want to do something, let's say ... write a game (thats what this community is all about, right?). So, what I do, is take everything i know already (we'll assume thats nothing for this scenario) and I build upon it ... knowing nothing, I start simple. I'm not much for reading books, unless they read like dictionaries (C++ The Complete Reference, C++ Bible, etc, etc ... "man fopen", haha), so ... I know what I want to do ... I want to display a 'map' on the screen that I can walk around on ... to do this, I need to accomplish two 'seemingly' simple tasks ... 'draw a map' and 'put a player on the screen to walk around' ... well, putting the player on the screen just seems easier ... so, I jump on google, and I start looking at examples of drawing simple sprites to a DirectX, OpenGL or (this is my preferred case) and SDL Surface. I look at examples, I try them out, I rewrite them from the ground up and mimic them line by line ... I do this once or twice, making small alterations as I go to see the effect it has ... then I scratch everything, start from the ground up again, and do it all from memory (ok -- might be helpful to note, I have a fairly good memory for things like this and can commit most things very fast).
Ok, now i've got a sprite on the screen ... what about moving it around ... ok ... back to google ... I research input ... I try different input examples, and I cycle back around ... repeating the process until I have a player on a map ... moving around.
Now ... I've learned how to do quite a few things I need to know to complete my game ... now, I start looking into doing the more advanced things (or well, what I had thought would be more advanced) and I start writing custom classes to store information about the map and the player, and I start to tie everything together ... and ... what do you know ... eventually, I have a really crappy game thats no fun to play and a slue of knowledge ... NOW ... I start working on trying to make the game I wanted.
I do this for all technologies I want to learn, works almost all the time ... sometimes I've gotta stop and take a step back, ask some questions in forums ... but most times, I can just start with nothing and wind up with a really final result.
And yes, I know ... this is not a 'for everyone' method of self teaching ... and it involves just about no books ... I do have quite a few books at home, but every single one of them has the word 'Reference' in the title ... and no one in my house, including myself, touches them ... they're just there to make people think I read ... :P
04/24/2007 (1:18 pm)
I've been self teaching myself to program since I was 12, and the best thing I came up with for a learning process was "trial and error". I know, it sounds like an odd way to teach yourself programming, but hey ... I'm a professional software developer and consultant now, so ... it's gotta work, eh?My method is pretty simple, I pick a technology, in this case, it's C++, and I decide I want to do something, let's say ... write a game (thats what this community is all about, right?). So, what I do, is take everything i know already (we'll assume thats nothing for this scenario) and I build upon it ... knowing nothing, I start simple. I'm not much for reading books, unless they read like dictionaries (C++ The Complete Reference, C++ Bible, etc, etc ... "man fopen", haha), so ... I know what I want to do ... I want to display a 'map' on the screen that I can walk around on ... to do this, I need to accomplish two 'seemingly' simple tasks ... 'draw a map' and 'put a player on the screen to walk around' ... well, putting the player on the screen just seems easier ... so, I jump on google, and I start looking at examples of drawing simple sprites to a DirectX, OpenGL or (this is my preferred case) and SDL Surface. I look at examples, I try them out, I rewrite them from the ground up and mimic them line by line ... I do this once or twice, making small alterations as I go to see the effect it has ... then I scratch everything, start from the ground up again, and do it all from memory (ok -- might be helpful to note, I have a fairly good memory for things like this and can commit most things very fast).
Ok, now i've got a sprite on the screen ... what about moving it around ... ok ... back to google ... I research input ... I try different input examples, and I cycle back around ... repeating the process until I have a player on a map ... moving around.
Now ... I've learned how to do quite a few things I need to know to complete my game ... now, I start looking into doing the more advanced things (or well, what I had thought would be more advanced) and I start writing custom classes to store information about the map and the player, and I start to tie everything together ... and ... what do you know ... eventually, I have a really crappy game thats no fun to play and a slue of knowledge ... NOW ... I start working on trying to make the game I wanted.
I do this for all technologies I want to learn, works almost all the time ... sometimes I've gotta stop and take a step back, ask some questions in forums ... but most times, I can just start with nothing and wind up with a really final result.
And yes, I know ... this is not a 'for everyone' method of self teaching ... and it involves just about no books ... I do have quite a few books at home, but every single one of them has the word 'Reference' in the title ... and no one in my house, including myself, touches them ... they're just there to make people think I read ... :P
#7
04/24/2007 (1:42 pm)
You can try Steve Hellers book C++ a dialog. It teaches the C++ standard library. It comes in book form, (amazon.com) or online free.
#8
Teach Yourself C++ in 21 days 2nd Edition
Its sam's teach yourself in 21 days second edition. I believe the newest version is 5 but this one is free. I started teaching myself by reading the beginner books and then went to "Beginning Directx" books, but I learn better by reading to myself than a classroom environment.
04/24/2007 (2:06 pm)
Here is just a little helpful link:Teach Yourself C++ in 21 days 2nd Edition
Its sam's teach yourself in 21 days second edition. I believe the newest version is 5 but this one is free. I started teaching myself by reading the beginner books and then went to "Beginning Directx" books, but I learn better by reading to myself than a classroom environment.
#9
@Kenneth - I can learn from books - but I find for myself personally - I learn best by also hearing a voice of sorts - that teacher explaining it too me - and the chance for dialogue when I have questions has always been more effective for my style of learning. :P
I'm looking at that C++ course mentioned earlier through the Game Institute as that would be less expensive than the gas would be for me to drive to my old college - AND - there are lectures included with the speaker actually doing the movements on the screens... you understand what i'm saying. :)
04/24/2007 (2:52 pm)
@Mike - thanks for the book link - I'll check it out.@Kenneth - I can learn from books - but I find for myself personally - I learn best by also hearing a voice of sorts - that teacher explaining it too me - and the chance for dialogue when I have questions has always been more effective for my style of learning. :P
I'm looking at that C++ course mentioned earlier through the Game Institute as that would be less expensive than the gas would be for me to drive to my old college - AND - there are lectures included with the speaker actually doing the movements on the screens... you understand what i'm saying. :)
#10
Learn OOP concepts, get the Design Patterns book by the Gang of Four and learn all the patterns by heart. These fundamentals will be much more useful in the long run than fighting memory leaks.
04/24/2007 (6:43 pm)
Dont bother with C++ at first. Learn torque script or action script or javascript. C++ is not the friendliest language to get your feet wet with. It is an awesome language to master. Learn OOP concepts, get the Design Patterns book by the Gang of Four and learn all the patterns by heart. These fundamentals will be much more useful in the long run than fighting memory leaks.
#11
I think it also helps if you have a simple project (or a project at least) in mind to give the learning (theory) some kind of practicalness. I would also even advise that you get started with TGB if you are somewhat a novice with programming or are finding it hard to learn programming.
So to summarise, get TGB, think of a simple project (snake, pac man, frogger, memory etc, and even these aren't as easy as we first think) to take on that will allow you to stay focused and motivated in learning game dev and torquescript, complete the project, gain confidence, do another more interesting/complex project or move up to 3D, do the same then perhaps move on the engine code programming as necessary (c++). David's methodology (similar of the above) is the extended version of this process.
Nonetheless, if you still insist on learning c++ first instead of torquescript, here's a link to some video tutorials (some people prefer video then reading):
Visual c++:www.pixel2life.com/tutorials/visual_c/
Non video/mixed:
c++: www.pixel2life.com/tutorials/c_general/
Beginner Developer Learning Centre: msdn.microsoft.com/vstudio/express/beginner/learningpath/
Good wishes with whatever method you decide upon :0)
04/25/2007 (1:52 am)
I agree with Neo on using what you learn (use it or lose it). I also agree with Jameson, you don't need to learn c++ to use torque for game development, only for extras and things the engine doesn't include like date/time (and even this has code available to paste into the engine).I think it also helps if you have a simple project (or a project at least) in mind to give the learning (theory) some kind of practicalness. I would also even advise that you get started with TGB if you are somewhat a novice with programming or are finding it hard to learn programming.
So to summarise, get TGB, think of a simple project (snake, pac man, frogger, memory etc, and even these aren't as easy as we first think) to take on that will allow you to stay focused and motivated in learning game dev and torquescript, complete the project, gain confidence, do another more interesting/complex project or move up to 3D, do the same then perhaps move on the engine code programming as necessary (c++). David's methodology (similar of the above) is the extended version of this process.
Nonetheless, if you still insist on learning c++ first instead of torquescript, here's a link to some video tutorials (some people prefer video then reading):
Visual c++:www.pixel2life.com/tutorials/visual_c/
Non video/mixed:
c++: www.pixel2life.com/tutorials/c_general/
Beginner Developer Learning Centre: msdn.microsoft.com/vstudio/express/beginner/learningpath/
Good wishes with whatever method you decide upon :0)
#12
Online tutorials can be a big help, try looking at the resources that come with Torque and tweak them.
04/25/2007 (1:49 pm)
I have taught myself Java, C++, HTML, ect mostly from the use of Sam's Teach Yourself books. These books are great and easy to use. I sugest potentialy starting with Java then working up to C++, but you might be able to jump right in.Online tutorials can be a big help, try looking at the resources that come with Torque and tweak them.
Torque 3D Owner Bobby Leighton