Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

Looking for the most logical progression into 3D Programming

This topic is 5643 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Right now, I have a tiny bit of C++ experience. My dream goal is to make a 3D engine. However, I know that you can''t just make a 3D engine easily. So, my question, what is the most logical progression into 3D programming? Keep in mind, I have to game development experience. What books should I start reading? I know I have to get in 2D first. Which books do you reccomend? Should I go DirectX? OpenGL? My ultimate goal is to be able to create a 3D engine by 2005. Thanks in advance for any help. And please don''t discourage me.

Share this post


Link to post
Share on other sites
Advertisement
Put all your efforts in learning the language first. I don't know whether you know any other programming languages. But you need to grasp concepts of programming first. When you know C++ well enough, then you might want to get into Win32 programming. Only after that you could have somewhat solid base to start with OGL or DirectX. Oh, you need to know your math and physics very well and know how to implement it in your engine. Because you will need great deal of trigonometry and physics for a 3D engine.
2D programming is something that you must start with. If you're good with 2D, then the knowledge easily translates into the 3D. If you don't have a good understanding of 2D graphics then you shouldn't even try going into 3D. I can't recommend Qbasic these days, but it's something that really started me with 2D programming. It's got easy graphics functions and easy language syntax overall. If you want some 2D inspiration, check out games on these sites written in QuickBasic.

http://vplanet.cjb.net
http://www.qb45.com
http://www.neozones.com


[edited by - MOVSW on December 7, 2002 11:30:35 AM]

Share this post


Link to post
Share on other sites
I disagree about the 2D thing. It might help, but you could do either one without the other.

Gamedev for learning.
libGDN for putting it all together.

Share this post


Link to post
Share on other sites
The following is just my opinion - and since I have very little experience with actually making a 3D engine, I'm probably not the best person to be getting advice from, still, I'd like to put my 2 pence in.

I personally don't think you really need that much understanding of trigonometry and maths to make a 3D engine - sure, it'll help a lot if you do, but I don't think it's the limiting factor, since there are all kinds of useful functions (and classes in the case of Direct3D) that'll make matrices for you, rotate points, clip geometry etc.
I think the thing that's hardest about writing a 3D engine is actually working out how to organise it so that you get a useful, fast and well designed system at the end.

In terms of steps to take, I'd say:
1) Continue to learn C++ (or another language if you find one that you prefer). Learn it well enough that you don't feel limited by the language any more, but by other things like knowledge of an API, or knowledge of algorithms etc
2) Learn the Win32 API (actually, I think you can learn this while you're learning C++, it'll give you things that you can actually try and write instead of boring text-based gimmicks )
3) Choose your weapon - pick either DirectX or OpenGL, it doesn't matter which. I suggest you try and write a few small things in both of them (really tiny things) to see how you like them, then you can concentrate on really honing your skills with one. Later, you should go back and learn more about the one you left out, but I wouldn't advise trying to learn both really simultaneously, each is fairly easy to pick up after you've learnt the other.
4) Learn as much as you can about algorithm design, design patterns, system design, and anything else you think would be useful - you'll need it so that you can design your engine.
5) Design your engine - leave out all non-essential features, but (if possible) try and design it so you can put those features in later. Write down first of all, everything you want to include in the engine (particle engines, mesh support, animation support, 2D support for GUIs etc), then try and work out a framework that'll let you fit all that in (elegantly if possible). Decide what algorithms you're going to use - for example, if you're going to add support for shadows, are you going to use stencil shadows, shadow volumes or something else - it could affect the design of the system, so you should do it before starting to code. If you really want to code something try testing some algorithms, or writing some general purpose matrix classes (or whatever - just don't start writing the engine code yet or you'll probably end up scrapping what you write)
6) Write the engine
7) Tell me how you managed to finish it

Repeat: I haven't made any major 3D engines, so you should take this advice with a pinch of salt.
I accept no responsibility for any damages caused directly or indirectly by this post. Nor do I accept any responsibility for any wasted time or annoyance. I only accept responsibility if my advice is helpful - it it's unhelpful, it wasn't my fault

Actually, I just re-read the original post, and I'm not at all sure that this answered the poster's question - but I'll post it anway, just in case it's helpful to someone.

John B

[edited by - JohnBSmall on December 7, 2002 7:40:08 PM]

Share this post


Link to post
Share on other sites
Do you have general programming experience? Personally, I didn''t want to get bored learning 2D stuff (I don''t want to make 2D games); I didn''t want to get bored learning Win32 stuff (I want to make proper games). Most of all, I didn''t want to spend a lot of time writing games everyone has written before (Tetris, Pong, etc etc).

So I bought the OpenGL Game Programming book, loaded up the engine from the book (quite a basic engine) and started mucking around with it and used the book as a reference so that I could work out what all the bits did. I''ve made a lot of changes and additions but kept the solid structure intact.

Most people recommend learning all the basics before you start, but personally I find that type of learning demoralising because you''re spending so much time creating sample programs that you''re not very interested in and never going to use.

Most people will strongly disagree with what I just said but it worked for me - I have a fully working C++/OpenGL game and this time last year I didn''t know any C++ or OpenGL. I did have programming experience though, which is why I could pick up C++ while I went along.

www.bankie.com

Share this post


Link to post
Share on other sites
quote:
Original post by JohnBSmall
I personally don''t think you really need that much understanding of trigonometry and maths to make a 3D engine


Interesting. If one held a Ph D. in mathematics, that could be accurate.

I don''t think knowing a great-deal of math is required to make a game, iff you use someone else''s 3D engine.

Share this post


Link to post
Share on other sites
quote:
Original post by Bankie
Do you have general programming experience? Personally, I didn''t want to get bored learning 2D stuff (I don''t want to make 2D games); I didn''t want to get bored learning Win32 stuff (I want to make proper games). Most of all, I didn''t want to spend a lot of time writing games everyone has written before (Tetris, Pong, etc etc).



I was in the same boat as you, Bankie. I really didn''t want to bore myself with all the basics, so I did exactly what you did. I got a book on 3D engine development and did it cover to cover and what did I learn in the end? That I had to learn the basics first.

- Rob Loach
OverTech Technologies
__________________________
"I don''t know half of you half as well as I should like; And I like less than half of you half as well as you deserve."
- Bilbo Baggins

Share this post


Link to post
Share on other sites
quote:
Original post by Magmai Kai Holmlor
Interesting. If one held a Ph D. in mathematics, that could be accurate.

I don''t think knowing a great-deal of math is required to make a game, iff[sic] you use someone else''s 3D engine.

Hey - it was just an opinion - practically everyone else disagrees of course.

John B

Share this post


Link to post
Share on other sites
"There is no knowledge that is not power"

"- To begin with, said the Cat, a dog''s not mad. You grant that?
- I suppose so, said Alice.
- Well, then, - the Cat went on - you see, a dog growls when it''s angry, and wags its tail when it''s pleased. Now I growl when I''m pleased, and wag my tail when I''m angry. Therefore I''m mad."

Share this post


Link to post
Share on other sites
quote:
Original post by Rob Loach
I was in the same boat as you, Bankie. I really didn''t want to bore myself with all the basics, so I did exactly what you did. I got a book on 3D engine development and did it cover to cover and what did I learn in the end? That I had to learn the basics first.


What do you mean by "basics"? If you mean general programming practices, then fine - that''s why I asked at the beginning if he had programming experience. However, I don''t see the point in learning stuff you''re not going to use in the long term, and I don''t see what''s wrong in learning what you need as you go along. For example, why learn lots of maths first? By learning the bits you need when you need it you get to put it into practice right away, so you remember it much better and it''s much more interesting. Same goes for physics. And why learn C++ first when you can take a basic engine from a book and experiment with that to see for yourself how it works? When you come against something you don''t understand, you can look it up at that point. Again, you remember it better and it''s more interesting because you''re learning something that you''re using there and then.

I just think some people put newbies off by telling them how many years it''s going to take them to learn C++ then all the maths, then the GDI, then 2D games, then Direct3D/OpenGL. Bollocks. It isn''t that hard as long as you''re willing to get stuck in and get your hands dirty.

Share this post


Link to post
Share on other sites

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!