Jump to content
  • Advertisement

Archived

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

3D engine design concepts

This topic is 6298 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, Having worked for too long in the "traditional" programming business, this has now started to affect my inspiration in my hobby projects... :-( In work, I''m used to have requirements specifications, a budget, a project plan, UML designs, and a project manager breathing down my neck, It''s all there, just write the code and you''re home free (maybe not that easy, but you get the point). Now, in my first attempt to write my own 3D-engine (oh not another engine! Really it''s for learning purposes, I figured that the only way to grasp the vast terminology of 3D-programming is to do it all, hence the engine) along with some sort of reference implementation. I''m currently in some requirements definition phase, but the problem is, I do not know what to functionality include and/or exclude from the engine. The question is, what are the most basic functions that an application framework has to provide to earn the title "3D-engine"? Further, what engines/frameworks are considered to be the best (duh, Quake 3), not only by judging frame rate and cool effects, but also the over-all design? Whoa...hope you didn''t fall asleep there...all answers are VERY welcome, as I cannot over emphasize the fact that I''m stuck...and it sucks. // Mario "Use the force, read the source" - Anonymous

Share this post


Link to post
Share on other sites
Advertisement
Well, in my opinion the best-designed engine currently out there is the Unreal engine. Everything is organized well, very OOP. There are dlls and script interface files for all of the "packages," a package being a group of classes. Everything is run of of a scripting engine except for the base engine code, which leads to your first question

As far as I have heard, the engine includes everything that doesn''t have to do with the story experience. Physics, sound, rendering, input, error output, file filters, all this would be included in the engine. Specific sequences, AI code, weapons code, this would not be included in the engine. The engine might have helpers for systems like AI, like functions to build node graphs for levels and stuff, but it would not include the AI code for specific enemies or groups of enemies.

It''s kind of like.. the engine defines the under-the-hood workings of the world and perhaps the objects in it, but the other code defines everything the player directly experiences in the world. Anything game specific is not part of the engine, but anything heavily reusable between games is.

Hope this helps

Share this post


Link to post
Share on other sites
If you check the web you can get several free 3D engines to play with. Reviewing them might give you some idea of what features you want to add to your own.

I do disagree slightly with the above comment. A 3D engine should contain all things 3D. Physics are not a 3D element. The lean now is towards component design. break the code into logical packages so you can re-use them. Once you start making the engine control everything, you end up building a game on top of your engine, rather than build a game that uses your engine.

Share this post


Link to post
Share on other sites
Thanks guys,

Though my question might have looked a bit newbie-ish, I am an experienced programmer/systems designer. (I''ll have to avoid newbie-ism in the future...those poor guys do get a lot of flames...). You guys still managed to grasp what I was looking for.

Shaft''s comment totally sums up what I''m trying to avoid:

"Once you start making the engine control everything, you end up building a game on top of your engine, rather than build a game that uses your engine."

And yes (Shaft & Qoy), the engine is designed in a pure OO manner in C++, just as you are suggesting.

Qoy: thanks for the tips, but I''m gonna have agree with Shaft. I think that the actual engine should be eaven more isolated, with strictly defined interfaces to it. BTW, Are there any specs out for the Unreal engine??

My question should be asked almost at the philosophical level, what I am looking for are ideas to enable me to create a logical and self-explanatory engine design, highly reusable. When looking at engines like the Titan engine, it all starts out pretty neatly....but eventually the C++/OO breaks up in to C-ish spaghetti code... No offense though, these guys know what they are doing....but the design fails in the overall picture..

Thanks for the pointers, and if you happen to find any good resources on the subject, don''t hesitate to contact me.

// Mario

"Use the force, read the source"
- Anonymous

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!