Sign in to follow this  
k_okie

Approximately how long?

Recommended Posts

k_okie    110
I have been studying C++, using VC .NET, for almost a year now. I worked on simple console applications for the first 2 months then moved on the 3D rendering, which primarily is the reason why i want to be proficient in C++. I have managed to setup an environment that is viewed using a third person camera which has an animated walking model i created using MS3D. I was also able to apply collision detection and response using an ellipsoid - triangle routine. But the problem is i dont purely know all those stuff because i just ripped those off somebody else's work and fit it all together. How complicated is 3D / game programming really? And how long will it take for a typical guy like me who works 8 hours / 5 days a week to learn the essentials of 3D? By the way, i am using: OpenGL and MilkShape. HAPPY THANKSGIVING GUYS!

Share this post


Link to post
Share on other sites
Sr_Guapo    876
3D game programming can be very difficult or pretty easy. If all you want to do is make a simple 3D pong game, it won't be very difficult at all: three renderable objects (plus GUI and such), simple collision detection, and very simple AI. However, if you want to make a hardware pounding, graphics rich FPS, it will be extremely difficult and nearly impossible by yourself.

I would just keep making small 3D apps (rotating cube, simple heightmaped terrain, etc.) until you are comfortable with all the basic initialization, rendering, etc. At that point, it won't be very difficult to move on and learn other, more complicated things.

Share this post


Link to post
Share on other sites
jimywang    100
3D game programming can be exceptionally difficult, if you have got any experience at all. I would say get alone with 2D first. if you think 2D is too simple, then try to do 2 and 1/2 D game(something like ray casting,that is what i did.) and then move on to full 3D. although at that stage, you will still get very confused,but at least it is better than starting with empty hands. Good luck anyway.

Share this post


Link to post
Share on other sites
Washu    7829
Depends on your background really, and what you want to do.
3d programming, as in just blindly copying and pasting someone elses code, is quite easy :P

However, if you really do want to learn it, expect to spend atleast a few years to get decent with it. You should have a pretty good grasp on maths as well. While you can get away with very little knowledge in that area, the more you know, the better you will be.

Finally, you will never stop learning.

Share this post


Link to post
Share on other sites
k_okie    110
Thanks for the opinions guys. About the math thing.. yeah..i am a bit rusty at it. More focus i guess. Do any of you guys know a very well commented 3D engine code that i may study? Collision detection and response caught my attention really and i was overwhelmed with the amount of math stuff that i have to study..
I am really interested to make a Counter Strike like environment with a third person camera...

Share this post


Link to post
Share on other sites
Ainokea    435
Quote:
Original post by k_okie
Do any of you guys know a very well commented 3D engine code that i may study?

I don't think that studying source code is a good idea until after you know a 3d api.

To learn opengl I suggest you read the red book. Availible here then you can learn about how to use opengl for game programming (I.E loading models, rendering terrain, etc..) from places such as game tutorials

Quote:

Collision detection and response caught my attention really and i was overwhelmed with the amount of math stuff that i have to study..

Yes it is suprising isn't it? I learned everything about 3d math from 3D Math Primer for Graphics and Game Development
Quote:

I am really interested to make a Counter Strike like environment with a third person camera...

It will be awhile before you can do that by writing your own code and not using tutorials.

Share this post


Link to post
Share on other sites
jimywang    100
Math is probable the most important stuff you want to know if you want to step into 3D game programming. and I am talking the advanced math here. you can probable get away with pure math for doom or wolfenstein 3D, but if you want to make a kick ass counter strike. then you will have to learn advanced math.

Share this post


Link to post
Share on other sites
Generally speaking, game programming can be very compicated and difficult to learn. I'm a comnputer programmer/analyst for about 15 years, last 3 years I'm doing 3D stuff (mostly in Direct3D/DirectX) and I consider myself as a beginner in 3D game programming.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
Quote:
Original post by Sr_Guapo
I would just keep making small 3D apps (rotating cube, simple heightmaped terrain, etc.) until you are comfortable with all the basic initialization, rendering, etc. At that point, it won't be very difficult to move on and learn other, more complicated things.


I started studying OpenGL and Direct3D at the same time around 3 months ago. Now I am coding a cross API skeletal animation algo.

BTW, I am a hobbyist programmer and I learned C++ as my first programming language a year ago by December this year...

Share this post


Link to post
Share on other sites
davedx    166
The important thing about 3D programming is not to get bogged down in platform-specifics. For example, if you started from scratch it could take you weeks just to get a DirectX framework that did everything it needed to do - before you render a single triangle. For one thing you need to do all the grisly Windows stuff like message handling, and trying to understand some of what goes on in a typical Win32 App as a newcomer can give you a serious headache... then you have the DirectX device itself, which isn't a walk in the park.

The best thing to do is read up on the theory. Grab a nice old computer graphics book from back-in-the-day (most libraries have at least one) and read it cover to cover. Learn about things like viewing frustrums, projection matrices, co-ordinate system transformations, vector math, matrix math, basic trig, equations of lines & planes. Read up on different lighting models - diffuse, ambient & specular, normals, dot products, cross products, interpolation, gouraud shading, phong shading, texture mapping.

Reading the book with a full-time job might take you a couple of weeks. Then go back to programming and just screw around. Use someone else's generic DirectX/OpenGL framework (you really don't want to get bogged down in WINAPI calls if you want to learn 3D programming), but write the actual graphics stuff yourself. Learn about vertex buffers, index buffers, the difference between a triangle fan and a triangle strip. Do some tutorials. Try to make something small and simple - don't get bogged down in specifics, just learn your way around the API. Make something that won't require huge art assets like a spaceship simulator. Then switch to a different API and rewrite it!

To cut a long blabbering essay short, as it's about time to take my C++-addled brain off to bed, I believe it's possible to get a pretty good grasp on 3D programming in about a month - if you go about it the right way, don't get lost in details and maintain direction with your learning. I first began to teach myself 3D programming when I was 17 - I knew C, I wrote a really basic T&L 3D engine from scratch that ran in DOS4GW. Thinking back it was a horrible mess of confused hacking - but somehow I did it with a single book, no internet and virtually no knowledge or experience of programming or 3D math, in a month or two of off and on coding.

I then didn't touch anything 3D till the last year when I decided the game industry was where I wanted to be. I had a lot more programming (and some industry) experience, yet was still a pretty intermediate C++ programmer. I learned OpenGL basics in about a week. DirectX took a little longer, but I did what you did - ripped other people's code, then went back and figured out what it did, and gradually I began to learn how everything actually works. I'm currently working on a project at home that uses DirectX, and I'm still learning the API. At work, I'm still learning how much I have yet to even know about in the vast subject matter of 3D graphics programming. I keep learning new stuff from our lead that I never would have stumbled across. He's got 10 year's experience, but I'm sure there's a thing or two he could learn too.

The basics - a few weeks to a few months.

Everything else - a lifetime, but a fun one!

Counterstrike - FPS aren't that complicated. If you want to look at source code, Quake2 is probably a fair bet. Whatever you do though don't look at Duke Nukem 3D source code! LOL.

Share this post


Link to post
Share on other sites
JDUK    100
I started learning to do 3D in managed DirectX and found looking at other peoples work/code only leant it self to programming by numbers.

I was consentrating on enviroment engines an looking at other peoples work i understood some but the bits i didn't i just copied and pasted and put dumb commenting like
// This bit does the maths
or
// This algorythm calculates xyz

wihout ever unde standing what it did.
That was a REALLY bad way to learn.

OK i havent mastered it yet and i've actualy gone back to 2D for a project im working on leaving 3D on the back burner for now.

BUT i did manage to get the foundaions of a triangle strip based height map going on from scratch.
The guys on this web site where kind enough to point me to online sources where the theories of what i was trying to do where explined in detail.

This is a great way to learn if you know the language your programming in. Because it will tell you "You need to perform THIS calculaiton to get THIS result" and its up to work out how to code that in the language you are using, which in turn means you have to get to grips with what the calculation is actualy doing.

For examlpe in my project after reading up on the theories i needed to had to sit down with a sheet of square paper and figure out an algorytm to populate an index buffer from a vertex buffer in a manner that would draw the vertexes in a clockwise direction and in neat triangles.
It was a great learning exersize and after it clued me into what those complicated algorythms where i was copying and pasting and I felt i'd made a big leap forward and actaly understood the nitty gritty of what was going on rather than just applying copied code like a band aid on my program.

Like some one else suggested learn the theories of 3D and apply them to your project and chosen language. Reverse engineering some one elses code will not teach you as well as working it out for your self.

Share this post


Link to post
Share on other sites
k_okie    110
Quote:

I was consentrating on enviroment engines an looking at other peoples work i understood some but the bits i didn't i just copied and pasted and put dumb commenting like
// This bit does the maths
or
// This algorythm calculates xyz

wihout ever unde standing what it did.
That was a REALLY bad way to learn.
-JDUK

Similar to what i have been doing sometimes like with matrix computations... hakhakhakhak. Its darn confusing.

Quote:

but I did what you did - ripped other people's code, then went back and figured out what it did, and gradually I began to learn how everything actually works
-davedx


I had trouble decoding MS3D file formats before luckily i was able to download a library that renders MS3D skeletal animations
and i continue to use that up unitl now in making my own model formats.. i am still trying to understand it though all this time.. all the matrix stuff bugs me. Then I plugged it in using the concepts discussed in lesson10 from the nehe tutorials and somehow managed it to work..

Share this post


Link to post
Share on other sites
JuNC    236
Quote:

Counterstrike - FPS aren't that complicated. If you want to look at source code, Quake2 is probably a fair bet. Whatever you do though don't look at Duke Nukem 3D source code! LOL.


Lol, although mentioning the Build engine is quite good, a 2.5D engine with rasterization done by the hardware could be a very good place to start - levels are easy to make by hand, collision detection is pretty straightforward and the Duke Nukem levels were pretty damn fun, even if they weren't 'true' 3D. Incidentally (and why this piqued my interested) - I've been working on an idea of streaming worlds using a Build-like engine, for some sort of MMO game.

Whatever you do though, don't try to understand the Build engine source, your brain will melt out through your ears.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this