• Advertisement
Sign in to follow this  

ETA for a from scratch 3d GFX engine?

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

How many man hours do you think it would take to write a 3d graphics engine from scratch that could be used in good looking commercial products?

Share this post


Link to post
Share on other sites
Advertisement
Not to sound harsh, but this is a loaded question with to many variables. There are many types of engines and many different components that could or might not be included. You would mostly be looking at a few weeks for a simple [b]GRAPHICS[/b] engine that could have ships flying through space firing bullets, etc but there would be only basic collision detection with that.

Share this post


Link to post
Share on other sites
Thanks for your reply. You didn't sound harsh to me.

I'll try to be a bit more specific: it would just be a graphics engine with no collision detection. It would not be simple though imo, we're talking relative to current comercial games a good looking graphics engine. And we're talking getting it to an at least semi-professional state where people could use it in their commercial products. Just trying to get a ball park figure.

If I'm being too vague still I apologise.

Interpreting your estimate of a few weeks: is that 24 man hours each day or more like normal full time working hours (~9) each day?

Share this post


Link to post
Share on other sites
It's equivalent to asking "[i]How many man-seconds does it take to sprint 100m?[/i]". One man can do it in 9 and a half, another can do it in 30.

It could take a month or a year, depending on the person. The quality of the product would vary greatly too - even after 2 years one person's work might be inferior to another persons 1-weekend marathon...

Share this post


Link to post
Share on other sites
It really depends on too many factors. But as an example consider [url="http://www.ogre3d.org/"]Ogre[/url]. This popular 3D graphics engine has been used in numerous commercial applications and took the (exceptionally talented) lead programmer about 10 years to get to it's current state. Tha's working part time though, so perhaps 3 years is more reasonable.

Ogre is a large engine - a smaller engine such as [url="http://www.horde3d.org/"]Horde[/url] probably represents maybe one year of full time work. But in both these cases it's just the engine - if you want tools for importing assets etc this will cost you extra.

If you have more specific requirements then you can possibly get it down to months, but at this point your trading off features and possibly flexibility.

Share this post


Link to post
Share on other sites

Anything from 2 weeks to 2 years, depending on skill, experience and procrastination level ;-) Pablo

Edited by jbadams
Restored post contents from history.

Share this post


Link to post
Share on other sites
If you have to ask, you're probably out of date by the time you're finished.

Considering that every graphics engine I've worked on had multiple people working on it ;)

But, of course, it all depends on the scope and your experience with 3D api's.

Multiply by three if you want to use it on more than one title (keep things generic, etc...).

Share this post


Link to post
Share on other sites
To expand on what I said earlier - If someone asked me to make them a graphics engine, I would take as long as I could ([i]no, not out of self-profit :P[/i])

If they only gave me a weekend, I'd download Horde3D and wrap the API to fit the client's needs.
If they gave me a month, I'd get something done, but it would have a very bare-bones tool-chain.
If they gave me a year, it would come with the needed infrastructure, like Maya exporters, shader-assemblers, etc...

Often in a project, the time that it's allowed to take is a constant - the deadlines have already been decided and will not change. In these kinds of projects, you've got to scale back the niceties and work with rougher systems to get things done in that time-frame.
So the answer to how long it will take is: as long as you give me ;)

Share this post


Link to post
Share on other sites
[quote]You would mostly be looking at a few weeks for a simple [b]GRAPHICS[/b] engine that could have ships flying through space firing bullets [/quote]
Few weeks!
try less than a day :)

Share this post


Link to post
Share on other sites
[quote name='zedz' timestamp='1300428563' post='4787348']
[quote]You would mostly be looking at a few weeks for a simple [b]GRAPHICS[/b] engine that could have ships flying through space firing bullets [/quote]
Few weeks!
try less than a day :)
[/quote]
If you're saying it should take someone less than a day to write a graphics engine of the complexity described above, I think that's a little optimistic ;)

First of all, as mentioned previously, the time it will take depends on what you already know. For someone starting from scratch with little or no knowledge of programming, math, and/or graphics, a simple rendering engine could take weeks, months, or even a year or more to get up and running.

But, even for someone who already knows all the material, 'less than a day' might still be a little optimistic, assuming you're really starting from scratch. Depending on scope (e.g. whether it's 2-d or 3-d, whether texture loading is supported, whether model loading is supported, etc.), it could easily take a day just to gather all the necessary libraries, get them built and integrated in whatever development environment you're using, type all the code, etc. And, even the simplest project will still have a code-build-debug cycle, and it's often (if not usually) the case that unexpected obstacles will arise as part of this cycle.

Share this post


Link to post
Share on other sites
[quote name='jyk' timestamp='1300451443' post='4787441']
And, even the simplest project will still have a code-build-debug cycle, and it's often (if not usually) the case that unexpected obstacles will arise as part of this cycle.[/quote]Yep, that's completing 98% of your work, and then having to complete the [i]other [/i]98%, which is why I always double my first estimates =D

Share this post


Link to post
Share on other sites
[quote]And, even the simplest project will still have a code-build-debug cycle, and it's often (if not usually) the case that unexpected obstacles will arise as part of this cycle [/quote]
Of course this is based on your experience.
Sure sometimes unexpected things crop up but for me (Ive completed 100s of apps, mainly flash) & no doubt others to do this
[i]You would mostly be looking at a few weeks for a simple [b]GRAPHICS[/b] engine that could have ships flying through space firing bullets[/i]
would take less than a day cause you know from experience what to do.
At the other end of the spectrum a person may know nothing about coding,maths,design,logic,GFX etc in which case to achieve the above would take months

Share this post


Link to post
Share on other sites
[quote name='zedz' timestamp='1300471600' post='4787585']
[quote]And, even the simplest project will still have a code-build-debug cycle, and it's often (if not usually) the case that unexpected obstacles will arise as part of this cycle [/quote]
Of course this is based on your experience.[/quote]
Hm, so you're saying the 'debug' part of the 'code-build-debug' cycle is just my personal experience? All available evidence would seem to contradict that, but ok :)

Share this post


Link to post
Share on other sites
[quote name='zedz' timestamp='1300428563' post='4787348']
[quote]You would mostly be looking at a few weeks for a simple [b]GRAPHICS[/b] engine that could have ships flying through space firing bullets [/quote]
Few weeks!
try less than a day :)
[/quote]

Sure, you can make a modelviewer in less than a day, but I'd hardly call that a "graphics engine".

Designing the API, getting all the boilerplate stuff ready, etc. would take much longer than a single day.

Share this post


Link to post
Share on other sites
[quote]Hm, so you're saying the 'debug' part of the 'code-build-debug' cycle is just my personal experience? All available evidence would seem to contradict that, but ok :) [/quote]
'your' doesnt mean you specifically, its meant as a general term for person or persons X.
Myself I spend less than 10% time debugging, (nowadays 90% of that time I spend debugging is cause of javascripts insane lack of static typing, grrr ), actually now I think about it, it would be a lot less than 10%. My ratio of coding-vs-debugging was far far higher back 20+ years ago or even 10 years ago. I find the more I code the more likely I am to write things that 'just work'(tm) I assume with most ppl is similar.

I actually knocked up a engine in about a day (from scratch in javascript) a few months ago, of course its not complete (even today) but then nothing is complete even the unreal/crytek/id etc engines are continuously being rewritten/tweaked.
but within a day it could do this -> '[i]You would mostly be looking at a few weeks for a simple [b]GRAPHICS[/b] engine that could have ships flying through space firing bullets'
plus a lot more[/i].

Share this post


Link to post
Share on other sites
[quote name='zedz' timestamp='1300648187' post='4788317']
I find the more I code the more likely I am to write things that 'just work'™ I assume with most ppl is similar.[/quote]
Yes, definitely. But even experienced developers still have to spend time debugging. Also, I think how much time one spends debugging can be dependent on a variety of factors, such as language, development environment, number of platforms targeted, maturity of support libraries used, level of support for the technologies being used, targeted feature set of graphics APIs, and so on.

[quote]but within a day it could do this -> '[i]You would mostly be looking at a few weeks for a simple [b]GRAPHICS[/b] engine that could have ships flying through space firing bullets'
plus a lot more[/i].
[/quote]
That simple description is still pretty vague. One could easily get something up and running in a day using existing frameworks and/or rapid development tools (and I certainly don't doubt that you were able to get something running in that time). But the above could also describe a cross-platform renderer targeting Windows (XP, Vista, 7), OS X (PowerPC and Intel), and Linux, with both OpenGL and Direct3D backends (depending on platform), with basic scene-graph support and support for loading textures and models, all written from scratch in C++ (with windowing handled by an API such as SDL). I don't care how experienced you are, just getting the project(s) set up appropriately for each platform and simply typing the code is probably going to take more than a day. And in reality, no matter how experienced you are, you're not going to be able to just type up the whole thing and have it build and run perfectly the first time. (Well, maybe you could, but that'd be pretty extraordinary.) Most likely, there will be multiple iterations of the code-build-debug cycle, and given how the C++ build process works and the fact that you have to build and test on three different platforms, that day is going to go by pretty quickly ;)

Share this post


Link to post
Share on other sites
[quote name='forsandifs' timestamp='1300310927' post='4786755']
How many man hours do you think it would take to write a 3d graphics engine from scratch that could be used in good looking commercial products?
[/quote]
Over 9000.

Share this post


Link to post
Share on other sites
[quote]I don't care how experienced you are, just getting the project(s) set up appropriately for each platform and simply typing the code is probably going to take more than a day. [/quote]
well this was with webgl & html5. I.e. its a webpage/app
Thus it works on win/linux/mac/whatever with little or no difference between the platforms, well I cant see any diferences between say it running on linux as opposed to windows (though you do have differences between browsers eg chrome has 4xAA standard whereas firefox has no AA & the other stuff eg mousewheel,widgets/fonts displaying differently on each browser like most html pages)

Share this post


Link to post
Share on other sites
It depends. If you know from heart all the technologies involved and the engine is already designed, assembling and testing to production an Unreal Engine to a single person could take a year (assuming no heavy redesign is required).

If you go learning the technologies and designing the engine as you code, it could take forever and never be done.

Share this post


Link to post
Share on other sites
Hi,

I have been starting totally from scratch and use only basic library functions like font rendering, lists, hash maps and opengl of course..
I do this as a hobby next to my student job and studies. It took 3 years + and I am at the point, that I have a simple scene graph and can utilize many "modern" functions like glsl, multi pass materials, render to texture, vertex buffers. Many things are missing like collision detection, HDR, environment mapping, deferred lighting. Some of these are likely to be never implemented. I concentrate on characters on the moment as this is part of my diploma thesis: markerless motion capture.

Hardware progress is running forward and I play catch up ;)

I have by no means reached my goal, so prepare for a lot of work, reading and thinking. Maybe its more clever to specialize on a certain aspect and implement that, rather than doing
it "right" and implement an engine with full generic capability.

You need to be patient and put lots of work in it.

Actually I don´t know if i will ever finish a game, but it has taught me so much, I might eventually get a job in the field, at least have some chances.

I continue nevertheless...

Cheers,
Frederik

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement