Question

Requirements of a 3D graphics engine

Asked by: priyendra

Hi all!!

I have reasonable experience in 3D programming. In an effort to extend my knowledge, I am trying to build a complete game engine. However, I am unable to decide what should be the API interface for the graphics sub-system of the engine. I intend to build the engine in the following stages

1) Simply treat the world as a collection of objects, render all of them without any optimizations etc
2) Use some elementary culling methods to reduce the number of objects that need to be rendered
3) Use stuff like BSP trees etc for serious optimization on the number of vertices that need to be processed

Now my problem is that I can't think of a satisfactory software design for my project. I am looking for a design that could evolve through the stages I mentioned. If anyone can point me to "good" WWW resources for 3D graphics engine design, I'd be grateful. I know there are a few books available on the topic, but right now I am kinda short on cash and hence am unable to buy those :-(

Also, could someone spell out a few typical API interfaces that graphics engines usually provide. In particular, I am looking for object oriented solutions.

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2003-08-10 at 21:43:39ID20705571
Tags

engine

,

game

,

3d

Topic

3D Game Programming

Participating Experts
3
Points
250
Comments
9

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. Unable to use Spell checker in Internet mail
    When I try to launch spell checker under MS Internet MailI get an error message saying that some components are missing and that this option can not be used. I reinstalled it but it did not help. The spell checking option works smoothly in all other apps. including Microsoft ...
  2. Spell Check with Internet Explorer
    I like using Outlook Express for my e-mail however, there is no "intergrated" spell check. I don't want to cut and paste. I don't want to use "notepad". I don't want to use any other word processing program to spell check my e-mail. I want an intergrated s...
  3. Spell Check Engine...
    I have a content management system written in PHP, and the user wants a Spell Checker built into the HTML forms. i.e., when she enters text into a text area just like this question I'm entering, she wants to perform a spell check to ensure that the info is spelled correctly....

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: mvoelkerPosted on 2003-08-11 at 04:50:31ID: 9121472

Hi - I don't want to discourage you or anything, but you don't want to write a game enginge yourself, even if you only implement the 3D part. There are several reason why you should reconsider your attempt:

1. It's a huge effort that a dedicated and talented team can spend years upon.
2. There is already in indefinite number of engines out there, so what's the need of yet another one?
3. There is no such thing like a universal game engine. Every engine has its strenghts and weaknesses and tends to be optimized for a specific type of game.
4. You need knowledge and/or expertise in many fields like 3D, Audio/Sound, Networking, Compiler theory (parsers, lexers for an embedded script language), Animation, Physics AND large scale software design.

If you still think that developing a good game engine still is for you, I recommend taking a look at the existing engines and tinker with those first, before you dive into creating your own engine. As I said, you'll need a really good reason for a task like this. By learning the other engines and their limitations, you'll get a feeling for what would make *your* engine *better* than the rest. Maybe they lack support for your unique game-genre, or do not support technical feature X which you desperately need. As you see, having a strong idea of the kind of game you want to develop is very important.

The problem you have mentioned is maybe *the* key problem in developing a game engine. You'll want a modular approach, so you can start simple and make the engine grow as your needs grow. Unfortunately there is no 'recipe' for creating a good engine design beyond those of software engineering in larger projects: Divide your large project into smaller modules applying information hiding and abstraction. During the development, keep interaction (APIs) between modules as simple as possible, extending them only when absolutely necessary.

The Core

For starters, a reasonable approach might be to divide your project into functional modules, tied together by a 'core' engine. The core would handle timing, events, memory management, (asynchronous) i/o, maybe a script engine and would generally be responsible for 'driving' the game. The core engine would then make use of several modules to render the gameplay (video, audio), communicate (if it's a network game) and user input.

The Modules

Modules would include a 2D/3D engine for display including importers/exporters for your 3D data. There may be sub-engines like animation, FX (particles, explosions, water), physics (collision detection, vehicle physics, rigid body dynamics,...), a gui-library for in-game guis, a landscape engine to generate landscapes and maybe a vegetation engine. You will also need an audio module for rendering effects (including EAX and 3D effects, ambient sounds) and music, a network module to communicate with other players/clients/servers.

The Tools

You will also need some tools to create game content and get it into your game so your engine can use it. The tools should make direct use of the game API, so you avoid extra steps and compatibility issues in content creation.

You might want to take a look at

http://www.nevrax.org             a complete open source engine for 3D MMOGs
http://crystal.sourceforge.net   also open source, but focused on 3D
http://www.qubesoft.com         free, but without source, fairly complete, but single-player focus
http://www.garagegames.com provides torque game engine, not free, but source available. 100$/developer

Hope that helps, feel free to ask for clarification.

 - michael

 

by: priyendraPosted on 2003-08-11 at 06:48:27ID: 9122163

Thanks for your detailed comment.

I am not trying to create a specific "game focussed" engine. I am a student ... I shall be joining for my master's in Computer Science shortly. The only reason I want to delve into this huge effort is that a) it'll provide me a glimpse of how professional games are made & b) give me experience of working on a medium sized software project. So the engine I had in mind was not one that would blow Unreal away :-) Rather, I was thinking along the lines of something small .. something that would perform all the "key" jobs - yet leave out the frills like GUI libs, 3D content importers/exporters etc. In fact, since the engine is not meant for commercial titles, I am initially not even planning to include n/w support - just sound, graphics and input. So don't get me wrong here ... I know that making an industrial quality engine by yourself is suicide and I am not trying to do that :-)

Anyways, about the list of engines that you provided ... I checked up the weblinks ... is there some engine that also provides a design document .. something that I could read apart from the code to understand the design philosophies behind it?

Regards.

 

by: mvoelkerPosted on 2003-08-11 at 07:21:01ID: 9122408

Nevrax has that to some degree (see their documentation section, there's also lots of readmes in the sources), but they're mostly french people, so be prepared for some - well - interesting english... The best documentation you can probably get for free is for the unreal engine, see http://unreal.epicgames.com or http://udn.epicgames.com - you can learn a lot about the basic design of a game engine there, especially from the unrealscript documentation.

On the garagegames website there are lots of forums that discuss not only the design of the torque engine, but also other engines as well.

Also try http://qdn.qubesoft.com/docs/latest/QSDK/doc/contents.html for some online design and api docs. Probably closest to what you are looking for is http://www.auran.com/jet/pageitems.php?NavID=11 .

I have not found a nice "how to code a great game engine in 21 days" yet. Maybe I'll write that one myself some day ;-)

Cheers,

 - michael

 

by: SturmNachtPosted on 2003-08-12 at 06:44:50ID: 9129974

Other from searching for a full completed Engine, you could try out this web site:

http://www.gamedev.net

This site features everything from Game/Graphics Engine creation to writing your own Graphics Libary. Altough you won't find any "great" free Graphics Engine, you'll certainly learn how to create one relativly fast.

Hope this helped in any way. Good Luck

 

by: priyendraPosted on 2003-08-12 at 09:21:10ID: 9131355

I am a regular visitor at gamedev.net since around 6-7 months. In fact, currently an excellent article series named Enginuity is being put up there regarding engine design. However, the author for that series is using SDL for all the graphics related tasks. What I wanted was to provide my own graphics API to get a 100% understanding of the internals of graphics engines. Any resources in this connection?? I did not find any articles relating to "Write your own graphics library" on gamedev.net. Kindly provide pointers to them if I Missed something.

Thanks.

 

by: SturmNachtPosted on 2003-08-13 at 05:18:08ID: 9137998

i kinda took a shot at that years ago. Its kinda bad tough. Written during a time i was new to this myself:
 http://www.Sturmnacht.de.vu

Furthermore you could check out the German Engine Site, from the "Technische Universitaet-Berlin", which includes ALOT of open source Graphics Libaries in almost any language. But this site is rather old and many links are broken:
http://cg.cs.tu-berlin.de/~ki/engines.html

And your right. Game Dev doesnt show any articles about this topic, but a hosted site by gamedev does:
http://www.gamedev.net/hosted/3dgraphics/index.html <--- (just click on Software Engine, and your in)

 

by: fl0ydPosted on 2003-08-16 at 01:32:48ID: 9164919

I know, you already said that you are a student and as such are short on cash. I'd still like to recommend a book that appears to be the perfect fit for your situation: "3D Game Engine Design - A Practical Approach" by David H. Eberly. http://www.amazon.com/exec/obidos/tg/detail/-/1558605932/ref=ase_magicsoftwinc/102-9118833-1866524?v=glance&s=books Maybe you can find it at your university's library.

It covers pretty much all of the subjects you are looking for in varying levels of detail. The theory behind 3D graphics is pretty compact, and should be just about the right pace for you, while the other sections provide a good amount of insight and depth. If you are interested, here is the link to the author's homepage: http://www.magic-software.com/

.f

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...