First of all, hello people! I'm new to the GD.net forums but I've read many of the articles here in the past and they've been really helpful. In this first post, I'd like to ask some questions so as to clear the fog that surrounds game development for me.
I was interested in developing my own game since I first came in contact with the concept of programming in High School, when I was around 16 years old. Of course, back then, I was thinking complex 3D games like Crysis (which had just come out) and I thought that if I could gather a few of my friends, we could easily top that. I've always been a fanatic gamer and was lucky enough to grow up in what I believe was a 'golden age' for gaming; the era when games like Metal Gear Solid and Resident Evil came out, so the idea simply fascinated me. After many starts and bitter ends of me trying to get down and serious with gaming (thank you, procrastination), I think that only now that I'm in my 20s am I mature enough to pull it off, because I kind of understand the limitations of what a person can achieve. While I know I'm very far from that, my ultimate goal would be to work on games similar to the ones I grew up with, or even older style games with some contemporary additions.
Now, back to reality. My experience with programming is mixed. In school, we started out with Turbo Pascal, where we got to write fairly simple code, like 'Calculate the area of the rectangle given X and Y'.Then, we moved on to algorithms like the bubblesort and the quicksort algorithm. After the first year (I forgot to mention that all of these classes were extracurricular and offered by a really great IT teacher) I got interested in C++ and this teacher mentored me on that; we even got to the point where we worked seperately from others and developed some simple shape animations with a graphics library (moving a circle around, moving waveform etc.). In pure theory, I have a good grasp of principles like variables, basics of functions, loops, math operations, and I've only barely touched OOP. Nothing more, nothing less.
On to the questions:
1) Now that I plan on starting again, I don't know if I should either expand on my base or start all over again. Meaning, should I stick with C++ as hard as it is, or give in to the people who suggest Java? I'm asking this mostly because I have to buy a book, but my budget is limited so I can buy only one book at a time.
2) Talking about books, some suggestions about either language (or any other language you suggest) would be great.
3) As I see things now, my first step in creating a game would be a text adventure where I would apply all of the principles I'm going to learn. Then, I could maybe move into 2D. Another area of game development that interests me, though, is modding an existing game. I've tried that many times, but the most I could do was create a simple map; nothing to do with programming. For example, I was reading code from the Half-Life 2 modding source, and I simply got lost. I don't understand how people think to write such complex code, let alone how I could edit that code to make something on my own. So, what knowledge is needed to mod a game? Will this knowledge be included in the regular path (learning how to program in general, making simple games, then moving into modding) or is it a separate route to follow?
4) Any other suggestions for a beginner are more than welcome!
Bear with me for such a long text! I know that many of the things here are asked everyday, I just had many different questions. I would like to start correctly this time, and not ditch any projects that I start - I have a whole folder from the past, full of unfinished .cpp files. I like games so much, that I think I should pass the bridge from playing them to making them, but I feel so overwhelmed, and I'll admit I'm a bit scared of losing something along the road and not being able to move on.
Thanks for taking the time to read this!