Archived

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

Where do I start when creating my first 3D engine?

This topic is 5501 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

Hi All, I am a recent graduate student from computer science. I have a lot of experience programming in C++ and using the MFC and the Win32 API. I also have been studying DirectX a lot in my spare time. I have become fairly familiar with DirectX mainly D3D and am able to do a lot of small little effects with the API. I want to now start creating my own 3d engine but I am unsure on where to begin. My question is where does one start from in creating his or her own 3d engine? The type of engine I was hoping to attempt to create is a FPS engine and make it easy enough to keep adding features. Any suggestions or comments on how to approach this would be nice. Thanks, Omnipotent

Share this post


Link to post
Share on other sites
start thinking about making a game..but just thinking about making it. you will think "ok, i need this..i need that."
those "this" and "that" will be the first thing to do in writing your engine.


My compiler generates one error message: "does not compile."

Share this post


Link to post
Share on other sites
"Learn OpenGL first! Then think about anything else. "

Stupidity included. He already knows Direct3d - what would OpenGL give him?

OK, you are in for a bad surprise: you dont have any architectural experience. You may THINK that you ahve a lot of programming experience - just from our HR guidelines I can tell you that you basically qualify for a one year trainee position now, in order to learn PROPER programming - students graduating normally have NO larger project experience at all :-) Not to take your qualifications down, just to put them into the right context.

Lets see - I would suggest dont try. Not "seriously". Start smaller - make a complete game (something like tetris), THEN go back and think about making an engine. Get some books - there are some that have sample engines. The most important part is now to get the "basic model" right.

I can give you an example. I am playing around with a C# written engine right now. I made some basic objects (camera, scene), decided on extensible rendering modules and started with ONE thing - terrain (and MS just told me I can publish the compiled file - now that the Dx9 runtime is public - great). From there I took "straws" into direct input (need to move around), and am slowly making some progress. Thats a hobby - this is a VERY complicated manner to do right :-)


Regards

Thomas Tomiczek
THONA Consulting Ltd.
(Microsoft MVP C#/.NET)

Share this post


Link to post
Share on other sites
I have already made a couple small type games, which include an Asteroids clone, Tetris clone, and a Puzzle fighter clone. What I am working on right now is a terrain engine which just simply takes a raw image file which provides the height map information. I now want to take the next step and program a full 3d engine with a level editor if it is feasible. I just was wondering what sources are available off the internet that would help me come up with a good design. Also any pass experience people may have had for getting started would be helpful.

Thanks for all the response so far!!

Share this post


Link to post
Share on other sites
heh, here''s a tutorial on Portal Engines
http://www.flipcode.com/portal/

but I think the best way to start is to create a MD2 loader, and a BSP loader :-P, after you can figure out that, the rest is easy


Share this post


Link to post
Share on other sites
Guest Anonymous Poster
quote:
Original post by thona
He already knows Direct3d - what would OpenGL give him?



All I can say is...

WHAT???!!!


OpenGL is FAR better than D3D. Ever heard of the Serious Engine or the Quake III engine...only 2 of the best engines ever made? Both of them are OGL based. OGL is lightyears ahead of D3D as far as speed and reliability. You just don''t see it much anymore b/c microsoft is trying to take over the world.

"What would OpenGL give him?" -- puhh! You make me sick.

-Q

Share this post


Link to post
Share on other sites
OpenGL is a great API, don''t get me wrong. Its what got me interested and started in 3d games programming, but to say that it is better than Direct3D is something. Yes, I used to be naive enough to think that OpenGL could do just about anything, but the truth is it just isn''t so. The Serious Engine, and the Quake III engine are both awesome feats of programming using OpenGL, but do I dare direct your attention to Unreal? One look at Unreal Tournament 2003, and the upcoming Unreal 2 - The Awakening will show you that anything is possible with Direct3D. Microsoft might be trying to take over the world, but at least they''re not doing it with crap!

I say if you''ve started with Direct3D, stay with Direct3D and maybe one day you can look into making your engine API independant.

Cheers Sledge

Share this post


Link to post
Share on other sites
As far as differences between OGL and D3D are concerned the only real difference is D3D''s shader language. There may be slight performance differences, but I''d imagine that''s just got to do with driver quality. Article.

sledge: UT2003 also supports OGL (UT2003/System/OpenGLDrv.dll - this file seem similar?), as does Warcraft III, both games look good.

Omnipotent: I''d start with designing the architecture first then when it comes time for coding, I would start with the renderer - so it could display debug info, and so I could see results - how am I supposed to know my terrain engine works if I can''t see how it looks?

Henrym
My Site

Share this post


Link to post
Share on other sites
Hey I''m not bashing DX at all...i love DX. I was just suprised that someone would say "why would someone need OpenGL". No one ''needs'' it, but the API is a great tool to have under your belt when you are out there in the gaming industry.

BTW, the unreal engine is decent, I''ll give you that. But I still see problems in both UT and UT2k3 that are just recurring D3D problems that I see in other games that use the same graphics API. Let''s not forget though that DX is still the heart and sole of most all games. Graphics is only a fraction of it. DX input, sound, and network methods are great.

I have just noticed in the past that OGL graphics always seem to perform better than D3D. I''m not saying that D3D is crap...it just needs some more work. And it never hurts to learn OGL.

-Q

Share this post


Link to post
Share on other sites
Sorry guys, I wasn''t trying to start another bout of OpenGL vs. Direct3D related bickering. I was just trying to say that Mr. Anonymous'' post that OpenGL was the far superior API was unfounded. Both APIs have their advantages and disadvantages and game developers have managed to produce remarkable things with both of them. Now just to be picky:

quote:
Quoted from ut2003 ReadMe.txt
The OpenGL renderer is not officially supported on Windows but might be
a good choice on certain hardware / driver combinations as it might
trigger fewer bugs in drivers. Unless you are experiencing serious visual
flaws there is no reason to change to the OpenGL renderer though. Unlike
Unreal Tournament, Unreal Tournament 2003 was designed around D3D and
offers the best performance and visual quality with the D3D renderer.



So that goes to show you that either API can be made to look good, it just depends on which one you''re targetting. Take it easy guys and no hard feelings!

Happy programming, Sledge

Share this post


Link to post
Share on other sites
Dang omni, it sounds like you''ve already got D3D programming down. I think it''s time for you to leave tutorial land and strike out on you own! You should start designing your own stuff.

Alexander "DmGoober" Jhin
alexjh@online.microsoft.com
[Warning! This email account is not attended. All comments are the opinions of an individual employee and are not representative of Microsoft Corporation.]

Share this post


Link to post
Share on other sites