Beginner seeking for Advice

hello,
am gonna tell you "what am i" so maybe you can help me to find the right path to start cause i really don't know what to do now.

First of all i want to say that am not a complete beginner in programming , i was in computer science section at high school where we did programming and algorithm for 3 years, and now am at the 1st year in college, also in the Computer Science department, we are learning "C" but the process is very slow and they are
"re-teaching" us everything from the beginning which i really hated .

I have a great patient for games and actually i made a couple of flash games, I've been working with flash for more than 2 years and i really enjoyed it, i even made website and games and get payed for them, but i don't want to make flash games anymore, not because i don't like flash, but i don't want to be "restricted" by flash, i don't know if you are following me here, but the thing is that i want to be a real programmer not just a flash developer, i want to create my own tools to make my own games and applications, in other therm i want to create a game from A to Z , so am sure that i don't need a book or a Tutorial that told me how an if statement or a for loop works.
I looked in many forums such iDevGames and many others to get a good starting point and mostly all of them said :
"know what you are doing->pick a language->start making your game"
well, i know what am doing and i already picked the language, C++, or maybe C# is more recommended for game development but i have a "feeling" who tell me that it is better to start with C++,
now the "start making game" step, here am completely blocked, i don't even know how to write a "Hello world" C++ program, yes i know that i had to learn c++ statements and keywords, but i dunno, i just can't found where to start.

i hope that you can found me a good book or DVD to start with cause am really lost here, and please don't forget that my main focus is gonna be for game developing but also i may want to do some application and utility someday.

If it were me and I were to do it all over again, I would pay close attention to the teachings about algorithms and data structures. There probably isn't anything more important that you could learn in college if you want to develop software for a living (except for some math, of course). I know it is hard to appreciate them right now, and it is boring as can be, but those algorithms and data structures will be your most valuable tools some day. Game development is technically demanding and uses all of them at one point or another. I got by without knowing how to implement a hash table for fifteen years, so it's not like you *have* to know them, but I feel foolish for not having learned it fifteen years earlier! Do you know how to do Huffman coding? Do you know where you might use it? Some day you will be going over someone else's game engine source code, and you will stumble across Huffman coding being used for network messaging and you will wish you knew exactly what was going on.

If you are already familiar with C then you are already good to begin developing games "from scratch", "from A to Z", as you say. There are tons of resources for doing so. If you are "blocked", you simply aren't looking hard enough. You can try the Nehe tutorials to get started, but I suspect they are getting out of date (I haven't looked at them in years).

A few words about the languages when programming a game "from scratch":

None of the programming languages are "ideal". Basically, as you have probably already read, there are two main high performance languages, C and C++, and a couple of popular spin-offs.

C++ is what is used in the game industry, so if you intend to seek a job in it, you'd be well advised to learn it. Two nice features of C++ are inheritance and polymorphism. You can mimic those to some extent with C, but it's not the same. Pretty much every other feature of C++ is there to make life miserable in some way, eventually. C++ is an extremely complicated language which encourages developers to write gibberish which few others will easily comprehend. Formalized coding practices are a must when using C++.

C is used by "lone wolf" game developers. I would guess that maybe up to half of them use C, and the other half use C++ or Objective-C or C#. There is nothing wrong with using C for game development. John Carmack developed most of their game engines up to Quake3 in C. I seem to recall him mentioning that the main reason they adopted C++ after that was because it was requested by most of their customers. Bungie wrote their stuff in C up to Halo. There are many detractors of the language, but don't pay attention to them if you don't feel like it -- C is the language of rebels!

Spinoffs:

One excellent alternative to C++ is C#, which is mostly a Microsoft language. Unfortunately, .NET is only available on Windows, and Mono costs $1000 per seat to deploy outside of the desktop. So it isn't fundamentally as portable as C/C++. However, Unity, which is a highly popular game engine, supports C#. XNA also uses C#. C# is a reasonable language to learn for game development, in my opinion.

On the Mac and iOS side of things, there is Objective-C, which is an excellent language, but suffers from the same portability problem as C#, which is that it is mostly only usable on Apple products from a practical standpoint. Objective-C is just C with some built-in object orientation tacked on top of it. It is easy to learn if you already know C. This is a "from scratch" language if you develop on Apple platforms.

thank you,
all what you said was convincing and helpful.
Am gonna take your advice and be a good student at college ^_^ and in the main time am gonna start learning C++ then try to follow some game source or tutorial to get on the way, am gonna start with This Book

one last thing (consider it this as a "personnel" request)
am living in a country (Tunisia) where game development is not something that you can live with , in other word, there is absolutely ZERO opportunity to find a job as a game programmer here,
i know that it is too early for me to talk about that and this is very off-topic but am really dreaming to be a game programmer (for real, i dreamed about it )
i always wanted to study in a special school for games or any college where they provide some game programs (like DigiPen institute, ISART digital and many others) but the thing is that am only living with my mother, and her salary as a nurse doesn't surpass 350$ which is largely insufficient to pay my needs in a foreign country...

Am sure that you get the main idea here and i wish that you could put some comments or give me an advice about it, i will be very grateful, and please don't consider this as rule breaking or something, all what i want is advice (am afraid to wake up someday and found that all what i learned is useless {yes am talking about job} and then i will lost all my motivation, hate the world, close my door, and hang myself... just kidding )

No need to worry about the money or where you live. What you need is time and determination and hard work. It often takes a few years, but learning how to do game development is entirely possible on your own. You do not need to work for someone or attend a special school to become a game developer and earn money with it. Countless successful game developers are self-taught. I never studied anything directly related to programming in college, except some lower level math. If you are studying C in college then you are already far better off than I was. Many folks here at iDevGames work by themselves and publish their own games. You can do it too. Be your own boss!

Personally, I think the specialized game development institutes are a sham. A general computer science degree would be far more valuable in my humble opinion. But like I said, you don't actually need either of them if you are working for yourself.

i agree with you in many points but the thing is that i really want to work in the game industry, i would love to make my own games but i badly want to work in a big game studio (i had that dream since i played "Prince Of Persia : The Sand Of Time" before that game i was just a gamer, but since i saw the time rewinds thing i was really impressed and i started to wonder how they do it and then i played Portal and i was " + + " that game was really EPIC !! and since that day i dream to make or participate in a big project like that ) sorry am talking to much here
the point is that i will be very very disappointed if i will not find a job as a game programmer...

about specialized game development institutes and normal college,
the thing is here (i don't know if it is the same thing in US,Europe or Canadians college) i am in computer science, class, i want to be a programmer, a game programmer, why on earth did i had to learn electricity ? and bunch of other absolute no necessary programs but the main problem still that am not in country that "allow" you to work as game programmer .
And why Specialized institutes are a sham ? the are teaching student to work in a specific domain that they want to work in, so it's gonna be kind of fun and a great environment to study in plus it doesn't oblige you to study other course that you will never need in your game career.

Game institutes prepare you with skills that are only relevant to that specific industry, and they do not give you any "backup" knowledge to pursue other career paths. The game industry cannot support the number of job applicants.

(Nov 13, 2012 03:54 PM)alaslipknot Wrote: the are teaching student to work in a specific domain that they want to work in, so it's gonna be kind of fun and a great environment to study in plus it doesn't oblige you to study other course that you will never need in your game career.

There are three ways this game institute idea can work out:

1) You go to a game institute and spend lots of time and money there. Then you apply for a job at a big game house where they only hire a small percentage of the applicants. Your skills do not work in any other field, so you work as a janitor to pay the bills for a few years while you keep re-applying.

2) You go to a game institute, then you amazingly land one of the few precious jobs there are available as you compete against thousands of other wannabe's. They only need a few dozen programmers and the fun slots are already filled by highly experienced veterans. You discover that game development as a rookie in a big game house means very long hours for little pay. You realize that you do not enjoy the job because they give you the boring stuff, and they constantly pressure you with deadlines. They can replace you on a whim (remember those thousands of other applicants waiting outside). Be careful what you wish for.

3) You give up and go back to college to do something else with your life.

The bottom line is that big game houses want someone with a Computer Science degree from college more than they want a degree from a game institute. Barring that, they want someone who is "amazing" -- at least that is according to John Carmack at one of his keynotes.

i was shocked a little bit, but it seems like all what you said is logic and true.
Am gonna complete those three years at my college then see what i will do, meanwhile am gonna continue my game development learning path (maybe i'll be the first one who create a success game development studio in my country )
anyway...
thank you very much sir for your advice, am very glad to join iDevGames community,
have a nice day .