Doom3 engine in a week?
Hi!
I want to start a little discussion about the time you need to
code a great engine like the Quake3-engine. In several posts
I could always read that ''coding a Quake3-engine takes several
years for a large team working 40 hours a week''. I think that''s
definately not correct. I think it should be possible to code
the complete graphics-engine in some weeks. I''ve written a simple q3a-map-viewer (was my first C-program) and it didn''t take me much time. Actually, rendering a quake3 map is a piece of cake. You have your BSP-tree, apply frustum-culling, backface-culling and you already can walk through a level with
a decent framerate. Ok, then you still have curved surfaces...but this also isn''t too difficult with a good tutorial. Of course there are still the compiling-tools you need
to write: the lightmap generator isn''t difficult at all; just
trace some rays and check for intersection with other polygons;
might be the only hard thing is to code the pvs-generator; I have no experience concerning this.
So this isn''t all too much; why should it take several years?
I also think that John Carmack doesn''t need much time for his engine. I''ve read somewhere that he sometimes sits one week in front of his computer and after that - he''s got his next-geneartion engine.
Still some thoughts concerning the Doom3-engine. Yes of course it''s looking damn great, but I think that it''s even much easier to write than the quake-engine. You don''t need any compiling
tools; doing the realtime lighting-effects is just a matter of
some lines of code. And shadows - you''ve seen them in one of
NeHe''s tutorials. I''m currently trying to code some sort of a Doom3 engine and lights and shadows are already working fine.
Every polgon casts a shadow on all the other polygons, like in real life; it really wasn''t too difficult to code.
So that were my ideas concerning engine development. Please write what you think.
Thanks
cu
It''d take more than a few weeks to get it fully working as they want it, but most likely all the features would be complete within a year, and bug fixing would be taking place, as well as the actual game being produced with it.
I wouldnt mind taking a look-see at your Q3A bsp renderer, or your shadow code
I wouldnt mind taking a look-see at your Q3A bsp renderer, or your shadow code
-----------------------"When I have a problem on an Nvidia, I assume that it is my fault. With anyone else's drivers, I assume it is their fault" - John Carmack
..hum..Well, implementing all wanted features might take a week or two..but accually getting them to work 100% for the final product...that takes time..
______________________________Only dead fish go with the main-stream.
Yo, have you ever hoid of this concept called "optimization"? Well, ya, the Quake 3 code is DAMN optimized (take a peek at it sometime). So that takes a lot of time. And besides, most of the code is not graphics code. The AI is hard to do as well (at least if you want good AI).
BTW, id Software is NOT a large team of programmers. It''s mostly Carmack with Michael Abrash helping (at least it was last time I checked
I''m trying to do an engine too, though I''m optimizing it for outside terrain rendering. How the hell do you do shadows like that? I''m using D3D. Perhaps it''s easier in OpenGL?
Dusik
------------------------
CRAZY_DUSIK* pCrazyDuSiK;
pCrazyDuSiK->EatMicroshaft(MS_MUNCH_BILL_GATES | MS_CHEW_BILL_GATES);
BTW, id Software is NOT a large team of programmers. It''s mostly Carmack with Michael Abrash helping (at least it was last time I checked
I''m trying to do an engine too, though I''m optimizing it for outside terrain rendering. How the hell do you do shadows like that? I''m using D3D. Perhaps it''s easier in OpenGL?
Dusik
------------------------
CRAZY_DUSIK* pCrazyDuSiK;
pCrazyDuSiK->EatMicroshaft(MS_MUNCH_BILL_GATES | MS_CHEW_BILL_GATES);
------------------------CRAZY_DUSIK* pCrazyDuSiK = new CRAZY_DUSIK;pCrazyDuSiK->EatMicroshaft(MS_MUNCH_BILL_GATES | MS_CHEW_BILL_GATES);pCrazyDuSiK->WebSiteURL = "http://www.geocities.com/dusik2000";
Don''t forget that a game engine is more than graphics. There is networking, sound, input handling, AI, etc... and all of these things have to be tested on a variety of hardware from the latest and greatest to a P200 running win95.
Carmack will probably still be using lightmaps in Doom3 just to support low end hardware (Quake3 has support for vertex lighting) and speed freaks so he would still be writing the lightmap generator, pvs generator, etc...
Overall, I think it would take a LOT longer than a week to code something like Doom3.
Jason A.
---
I write code.
DelphiGL (http://delphigl.cfxweb.net)
Carmack will probably still be using lightmaps in Doom3 just to support low end hardware (Quake3 has support for vertex lighting) and speed freaks so he would still be writing the lightmap generator, pvs generator, etc...
Overall, I think it would take a LOT longer than a week to code something like Doom3.
Jason A.
---
I write code.
DelphiGL (http://delphigl.cfxweb.net)
---I write code.DelphiGL (http://delphigl.cfxweb.net)
There''s a couple more things I think you''re missing too.
When you say you built a Q3A map renderer in about a week thats completely different than creating the Q3A graphics engine. You have the advantage of:
1) having plenty of source test data
2) knowing what it should look like
3) insights on how Carmack did some stuff (if you read his .plans at all)
4) knowing what type of architecture to use.
When John Carmack write''s an engine he is often pushing new ground, and so research takes a lot of his time. In his .plan file he mentions many failed ideas, and different things he''s tried. Alot of time spent developing an engine comes from research into various ideas/methods/algorithms to find the best approach for what he wants to accomplish.
And again for Doom 3, since no one has yet done what he is doing (in game graphics at least) he again has to research different ideas and find the best looking and fastest way to accomplish that great lighting.
I bet if Caramack were to re-write (meaning complete and full compatibility will all data and UI stuff from the original version) one of his engines from scratch he could do it completely in less than a month, and it would probably sport some imporovements over the previous round.
When you say you built a Q3A map renderer in about a week thats completely different than creating the Q3A graphics engine. You have the advantage of:
1) having plenty of source test data
2) knowing what it should look like
3) insights on how Carmack did some stuff (if you read his .plans at all)
4) knowing what type of architecture to use.
When John Carmack write''s an engine he is often pushing new ground, and so research takes a lot of his time. In his .plan file he mentions many failed ideas, and different things he''s tried. Alot of time spent developing an engine comes from research into various ideas/methods/algorithms to find the best approach for what he wants to accomplish.
And again for Doom 3, since no one has yet done what he is doing (in game graphics at least) he again has to research different ideas and find the best looking and fastest way to accomplish that great lighting.
I bet if Caramack were to re-write (meaning complete and full compatibility will all data and UI stuff from the original version) one of his engines from scratch he could do it completely in less than a month, and it would probably sport some imporovements over the previous round.
--------------------------I guess this is where most people put a famous quote..."Everything is funnier with monkey''s" - Unknown
March 01, 2001 12:48 PM
hello,
i would just one thing :
coding a Quake3 engine doesn''t need several years ... mmmh perhaps one or two months 35h by week with 2-3 persons ...
ok.
but ...
carmack''s team must have taken much more time, just because they did all the research to make it fast, efficient, and beautiful !!!
when YOU code such an engine, you just code the techniques you''ve learnt surfing the net ...
when CARMACK codes such an engine, he spends a lot of time studying many different techniques, in order to find the best !!!
it''s just as if you said : "hey i can''t understand why it took so much time to pythagorus to find his famous theorem, whereas i learnt it at school in only one or two hours !!!"
hope now the minds are clearer, and perhaps a bit clever ...
flure
i would just one thing :
coding a Quake3 engine doesn''t need several years ... mmmh perhaps one or two months 35h by week with 2-3 persons ...
ok.
but ...
carmack''s team must have taken much more time, just because they did all the research to make it fast, efficient, and beautiful !!!
when YOU code such an engine, you just code the techniques you''ve learnt surfing the net ...
when CARMACK codes such an engine, he spends a lot of time studying many different techniques, in order to find the best !!!
it''s just as if you said : "hey i can''t understand why it took so much time to pythagorus to find his famous theorem, whereas i learnt it at school in only one or two hours !!!"
hope now the minds are clearer, and perhaps a bit clever ...
flure
--
I''ve written a simple q3a-map-viewer (was my first C-program) and it didn''t take me much time.
--
probably opens the files in binary and prints it out in the console.... =)
just kidding, but it would be nice to see your super-app''s....
I''ve written a simple q3a-map-viewer (was my first C-program) and it didn''t take me much time.
--
probably opens the files in binary and prints it out in the console.... =)
just kidding, but it would be nice to see your super-app''s....
woha
first of all building a 3d game engine involves a lot of things. sure you can code the, let''s say q3 map viewer, in a day or a week but that''s just a part of the 3d game engine, not the whole thing. furthermore, like what dusik said, you have to optimize it and it takes some time.
Forget about that buggy code, let's start all-over - from scratch. Let's go!
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement