Page 1 of 1

3D Engines

Posted: 2004-12-12, 08:54
by 3DProgrammer
Hi,
Im interested in 3D programming and i wish i could make an engine like Ca3D.

Anyone know some good online tutorials related to 3D (other than NeHe's tutorials - they only cover simple OpenGL stuff), and 3D engine development?

Or more importantly what subjects should i study to make an engine in the first place? :wink:

I'm also considering buying "Computer Graphics" by Foley, van Dam, but its just too expensive, so ill have to stick to online stuff for now :x

Posted: 2004-12-12, 16:05
by Kai
Hi and welcome to the forum.
Well im not a coder (how many times did i mentioned this ?? :))) but to become a better coder just read as much as possible and surround yourself with talented people, its sometimes a lot more easier than you think..

One of the best sites i know is the good old http://www.gamedev.net/ , very big and filled with tutorials. Secondary, there is forum with different sections around coding, and many nice and skilled people.

If you want to get closer to professional gamedev than take look on the informative articels on http://www.Gamasutra.com

Oh yeah .. books are always good .. watch out , you can get addicted in collecting books about your favorits XD

Posted: 2004-12-12, 17:10
by Shadow
LIBRARY!!!!!!!!!!!! Do not underestimate the power of it. just dont rack up 30 bucks in late fees like i did with my secrets of the windows game programming gurus book. which was very informative by the way. have a look

Posted: 2004-12-12, 23:54
by 3DProgrammer
Shadow wrote:LIBRARY!!!!!!!!!!!! Do not underestimate the power of it. just dont rack up 30 bucks in late fees like i did with my secrets of the windows game programming gurus book. which was very informative by the way. have a look
It's "Tricks of the windows game programming gurus", and yes i have read it (a pdf version i downloaded :twisted: ). I also have read the Black Art of 3D Game Programming and i own Tricks of the 3D Game Programming Gurus, which are both by Andre Lamothe.

But all the libraries near me only have "Programming for dummies" type books, nothing on games or graphics programming (the Black Art one was a rare exception but only covers dos mode13h programming)...

Kai, while i have been to those links ill check them out again :P

Posted: 2004-12-13, 01:32
by Shadow
does your library have a sharing system where u can check books out from other libraries? mine does. my school also allows me to check books out from other libraries aswell. or else buy used version off amazon.com since its just a book and who cares if its used. lol

Posted: 2004-12-13, 01:40
by 3DProgrammer
Shadow wrote:does your library have a sharing system where u can check books out from other libraries? mine does. my school also allows me to check books out from other libraries aswell. or else buy used version off amazon.com since its just a book and who cares if its used. lol
Yes, but other libraries dont have good books either :roll:

And i dont own a credit card & can't get one, so cant use amazon.com.

Posted: 2004-12-13, 02:31
by RAZOR
I never got any books specifically about game programming, I just have 1 on c++ and another on opengl. Plus a decent connection speed. Once you've got a basic engine going I advise checking out http://www.codesampler.com/ for examples of more complex things. It's not good to learn the basics from, at least in my opinion, but there's samples there on things it's impossible to find a tutorial or anything on. But never just copy&paste, it'll bite you in the bum if you don't understand your own code. If you don't have a basic engine going I don't see why you should be looking for anything more advanced than nehe's tutorials. It takes a while before you even draw any decent graphics anyway, so maybe you should be concentrating on file input :wink:.

But I suppose seeing as you've read more game programming books that I have (like more than none) I suppose there's not much more I can tell you.

Posted: 2004-12-13, 05:27
by 3DProgrammer
RAZOR wrote:If you don't have a basic engine going I don't see why you should be looking for anything more advanced than nehe's tutorials. It takes a while before you even draw any decent graphics anyway, so maybe you should be concentrating on file input :wink:
Ic, but what would a "basic engine" consist of? And when you say 'file input', you mean reading in models from a file?

Posted: 2004-12-13, 06:22
by RAZOR
Carsten is probably more qualified to be telling you about stuff like this really, but I'll tell you what I've done so far.

I basicly ripped some windows code because I don't know anything about it, but I plan to change it later, so it's very loosly connected to the rest of the engine. I have an engine class that I've mostly used to test other bits. Then I've got a system for reading option files. Half way through that I wrote a simple error function cause I couldn't do without it. Then I added key input, made a viewport and a camera class to set up viewing transformations and tested them by drawing a quad (in fact I hacked in little tests like this the whole time, only to delete them all later). Then after serious consideration I made 2 base classes I called RenderInstance and RenderObject. The thought behind this was that you can have the same geometry rendered in several different places, so you save memory by having the instances share an object. Then I made a particle system, and used the option reading thing to load them from files. Then I made a basic material system I intend to improve/replace. Then I finally made model loading and drawing and bitmap texture loading. Once I had all that (more than 50 source files as it turns out) I felt I had a basic engine. Since then I have added dot3 bump mapping, which caused as a side effect a simple extension loading system.

I'd be interested to know what Carsten did, he's certainly more professional than I am (but what can you expect from a kid?).

By the way, don't be overwhelmed by that long description of a basic engine, it's not that hard really and it's alot of fun. You can work on several bits at once and switch between them to keep it interesting and things. Just be aware, the dreaded segmentation fault will fight you as long and hard as it can, but don't give up and it will tire and flee. Oh and stl is your friend, most of the time.

Posted: 2004-12-13, 08:03
by 3DProgrammer
RAZOR wrote:Carsten is probably more qualified to be telling you about stuff like this really, but I'll tell you what I've done so far.

I basicly ripped some windows code because I don't know anything about it, but I plan to change it later, so it's very loosly connected to the rest of the engine. I have an engine class that I've mostly used to test other bits. Then I've got a system for reading option files. Half way through that I wrote a simple error function cause I couldn't do without it. Then I added key input, made a viewport and a camera class to set up viewing transformations and tested them by drawing a quad (in fact I hacked in little tests like this the whole time, only to delete them all later). Then after serious consideration I made 2 base classes I called RenderInstance and RenderObject. The thought behind this was that you can have the same geometry rendered in several different places, so you save memory by having the instances share an object. Then I made a particle system, and used the option reading thing to load them from files. Then I made a basic material system I intend to improve/replace. Then I finally made model loading and drawing and bitmap texture loading. Once I had all that (more than 50 source files as it turns out) I felt I had a basic engine. Since then I have added dot3 bump mapping, which caused as a side effect a simple extension loading system.

I'd be interested to know what Carsten did, he's certainly more professional than I am (but what can you expect from a kid?).

By the way, don't be overwhelmed by that long description of a basic engine, it's not that hard really and it's alot of fun. You can work on several bits at once and switch between them to keep it interesting and things. Just be aware, the dreaded segmentation fault will fight you as long and hard as it can, but don't give up and it will tire and flee. Oh and stl is your friend, most of the time.
cool! By the sounds of it should be hard at all 8)

BTW, what compiler do you use & do you use Direct3D or OpenGL for rendering?

Im thinking of making my entire engine in DirectX... even though Carsten thinks otherwise :P

Posted: 2004-12-13, 10:49
by RAZOR
I eventually chose dev-cpp http://www.bloodshed.net/devcpp.html and opengl. Didn't really choose opengl though, just thats what I could get a book for. So are you planning on using direct3d 8 or 9?

Oh and you said "By the sounds of it should be hard at all" but I get the impression you meant shouldn't.

Posted: 2004-12-13, 11:17
by Carsten
Well, those who posted above provided very good references. If you haven't already, also have a look into the FAQ: http://www.ca3d-engine.de/phpBB2/viewtopic.php?t=32

Maybe the most important issue is that you cannot learn everything from one book. It takes a LOT of them. And if you gather and learn more and more, it will also happen that you'll only need tiny fractions of otherwise big and expensive books.
http://www.opengl.org is a very good place for OpenGL programming. The extensions specs are sometimes hard to read, but provide you with the latest and most thorough/advanced stuff that you can get in this regard. Everything else (tuts, books, examples) is built on them.
Personally, I still spend a lot of time with Google and book review sites (e.g. at Amazon), and recommend you to do the same.
Oh, and while I'm aware that there are some recent books out there that are about modern 3D engine programming, I don't own a single one of them (except for a very old one), so I cannot really comment on them.

Posted: 2004-12-14, 00:40
by Shadow
i have started my own engine aswell. but it started out as a physics engine and kinda morphed into a basic rendering engine to test the phsyics. but i used directx9b because i liked the shader support and its extensivly documented. the graphics in it are very basic so far but im working on getting some very advanced physics into it. currently i am drawing out a basic CFD function.