Intel17 said:
See, I'm frustrated because I really want to become a professional game engine programmer, but at this moment my future as becoming that looks quite bleak.
So, basically, I have to pick a small project, and see it through to completion? Does the research that you mentioned mean basically reading papers/books and learning how to do the things that my project requires? Or did you mean me actually developing new algorithms?
Hi Intel17,
Like you, I've had aspirations of getting into the gaming industry. I've not yet had a lot of success (I'm probably not going to leave Minnesota, and there are very very few gaming/3D companies here), but I think there are some things I can tell you that may help you along.
1) I've spent 6 years getting my B.S. in computer science, a year and a half working as a software engineer in industry, and am now going back to graduate school. I still have many many things to learn, and get frustrated over how much I don't know. You'll need to get used to this, becuase you will likely be dealing with it throughout your career. People constantly are developing new techniques to deal with problems, and trying to keep up can be exhausting. I'm not trying to disuade you, just be ready because you've got a big mountain to climb, and catching up with the professional mountain climbers is hard work, especially when they move so fast themselves.
2) It's good that you've learned C++ and C# as those are the kinds of tools that you'll need to use to build your software. It sounds to me like you may not have a strong background in algorithms and mathematics (as you don't really know what to do without a book providing some guidance).
You'll need a very strong background in these areas to actually do anything useful as far as game engine programming goes. Study BSP Trees, Kd-Trees, Barycentric coordinates, search algorithms, event loops, execution threads. Familiarity with various sampling and filtering techniques and statistical algoritms will be useful. You'll want a strong familiarity with matrix and vector maths. There's tons of other stuff you'll need to learn as well. Find a topic that interests you, and research what kinds of knowledge you'll need to implement it.
Personally I'm interested in real-time global illumination technqiues, so I studied various raytracing papers, wrote a basic raytracer, and am trying to learn all I can about optimzation. At some point I'd like to start writing a photon mapping (or similar technique) implementation on top of gpgpu.
3) Don't only focus on game programing. Learn to write object oriented code in Java, learn design patterns. Often times you'll want to avoid certain things for the speed tradeoff, but other things may be applicable to your game designs. The important thing is to know when to use these technqiues, and when they are less useful.
4) If you are getting frustrated, take a break for a little while. I've found that as much as I want to cram everything I can into my head at once, my brain just won't allow it. It seems necessary to do some mindless activity like go to the gym, watch TV, or play a video game from time to time.
Anyway, I'm not actually a successful game programmer, so take my advice with a grain of salt. I hope you make it some day.
Nite_Hawk