I'm writing this because it's really hard to trace back the real roots of the engine, and one would have to run trough various documentation pages.
[B]-DOOM engine (AKA Id Tech 1), 1993[/B]
The first real implementation of BSP seen in an engine is the one in Id Tech 1, also known as the engine which powered DOOM, DOOM II and various other games. A BSP tree structure, where the level was subdivided in "leaves", or areas, was useful to aid the engine in the rendering step, where otherwise the whole level would have to be rendered, and then overdrawn by the nearest faces the player is looking at.
The technology at the time was really bare. There wasn't the possibility to create multiple levels (I.E. levels with multiple floors one over another) or diagonal shapes, and the map was divided in sectors, which weren't real 3-dimensional areas but rather square or triangular areas of the map (which was designed in 2d) with a set floor and ceiling height. The rendering itself was also kind of "clunky". It was not real 3D rendering, with polygons and textures applied to them. This is also the reason why the player could not look up or down. The rendering was divided in 3 steps. First the walls were rendered. A scan-line method was used, meaning that the walls were rendered with 1-pixel-wide vertical lines. Then it was the floor to be rendered, and that was done with a floodfill-like algorythm, which drew the floor (and celing) textures and then cut them along the walls, to avoid drawing over them. This is also the reason why the floors keep getting rendered when a player is out of the map.
The last step in the rendering were the sprites. During the other wall drawing step, track of the order faces were drawn in and their distance was kept in a buffer, which then was used to hide sprites which weren't visible to the player.
Level designers, when creating levels, had a 2D top-down grid on which to draw sectors on, and assign them a floor and ceiling height. When the map was compiled (as we call it today, or preprocessed as it was called at the time), the map was divided in a BSP tree as explained earlier, and per-sector lighting was computed.
[IMG]http://upload.wikimedia.org/wikipedia/commons/thumb/5/53/Doom-map-format-map.svg/600px-Doom-map-format-map.svg.png[/IMG][IMG]http://upload.wikimedia.org/wikipedia/en/thumb/0/08/Doom_mapformat_screen.png/240px-Doom_mapformat_screen.png[/IMG]
[B]-Quake engine (AKA Id Tech 2-0), 1996[/B]
The Quake engine was the very first game engine to feature real 3d rendering. It also introduced lightmap based lighting and the possibility to display 3D models. This let the level designer create a numerous set of new shapes and levels. Floor stacking was also finally allowed. Quake also did have up-down mouse look, but it was disabled in the options by default.
The way the maps were "preprocessed" before becoming playable had also been changed. Since the maps now were fully 3-dimensional, there was now the possibility to create a "leak", or a hole in the map geometry which linked the map with the "void" outside, which made it impossible to the engine to prune the level and subdivide it into areas (the "void" is an infinite space, so processing it would take an infinite amount of time).
If a map was properly sealed, the faces outside it were removed (often 50-80 percent of the invisible faces were removed by this step). To help the engine by removing the most possible load from the rendering step, the BSP leaves were then used to calculate the PVS (potentially visible set), which consisted in the calculation of the leaves visible by every leaf. This step took hours and hours (and it still does in today's maps if heavily unoptimised). The last step was lighting. Instead of per-sector/leaf lighting (leaves could now be of various shapes so it would have been very unpractical to perform it), a different method involving Radiosity and lightmaps was approached. Every face in a map had a lightmap, an image containing the intensity of the lighting on a grid, which then was used to light the face and the objects standing near it (the direction of light could not be found, though). Nearby models (like npcs) were now rendered in 3D, and if far enough away, they were rendered using voxels (3D pixels) elaborated from the texture data.
[IMG]http://upload.wikimedia.org/wikipedia/commons/b/b2/Quake_Vertex_Pruning_Preprocessor.PNG[/IMG]
[B]-GLQuake or Quakeworld (AKA Id Tech 2), 1996[/B]
GLQuake was a renewed version of the Quake engine. Its main feature was the rendering completely changed to make use of OpenGL and hardware acceleration, thus giving far more fluid game interaction and the ability to display newer effects. Another notable feature was the switch to Windows from DOS, which also allowed the use of Dynamic Link Libraries to contain game elements, which was to allow modders to access only selected parts of the engine. The rendering was also switchable from OpenGL to traditional software rendering via the switch between rendering DLLs.
[B]-Half-Life (AKA GoldSrc/GoldSource), 1998[/B]
Valve LLC is known to have acquired a regular license to modification of the Quake 2 (Id Tech 2) engine in 1996.
Part of Half-Life was first developed over an un-modified version of such engine, which was then reworked to use the heavily modified Id Tech 2 engine, also known as GoldSrc. Many things were changed from Id Tech 2 to GoldSrc. One notable feature was the addition of dynamic brushes which would move when pushed, or rotate (the casserole in the microwave), particle effects or energy/laser beams. Another important change introduced in this branch (and then also used in the regular branch, which originated Doom 3) was the shift of the weapon model to the right rather than the center.
[B]-Half-Life 2 (AKA Source), 2004[/B]
The Source engine is a branch of the GoldSrc engine. Months before shipping Half-Life, new features were engineered, but they were risky to be put in the retail version. This is why a new branch of the GoldSrc code, called src, was created. The name then stuck and it became Source.
The new notable features in this engine are the extended support for props (the havok physics engine was implemented to simulate realistic physical interactions), and a shader system which allowed for realistic glass distortion effects, normal mapping and so on.
The basic structure of the engine stuck anyway, and it's very interesting to find common points between Id Tech 1 and Source noewadays. One of the features most noticed is the console, which nowadays uses the same command syntax, if not even the same commands (noclip or god are an example).
Here is a picture of the derivation of the engines:
[IMG]http://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Quake_-_family_tree.svg/724px-Quake_-_family_tree.svg.png[/IMG]
I hope this was an interesting read.
tl;dr: read or gtfo.
Informative.
Informative.
Interesting read.
Very informative.
Hmm thats quite interesting. They basically created the source engine using some untested modifications to goldsrc. I never knew that part.
Only "[img]http://www.facepunch.com/fp/rating/information.png[/img]" can describe my opinion.
Unformative.
Deformative.
This should be renamed "History of most FPS Game engines".
It's not really just the history of the source engine.
Outformative.
Basically nearly all FPS have ID in their genepool
BSP was probably one of the most important creations ever for first person shooters.
I already knew a lot of this, but there were a few parts which I didn't know about. Rated informative.
It's also interesting to see how many games and companies stemmed from ID's original tech. It really shows how much of an influence they made on the realm of computer games.
[QUOTE=TerabyteS;24097162]
[IMG]http://upload.wikimedia.org/wikipedia/commons/b/b2/Quake_Vertex_Pruning_Preprocessor.PNG[/IMG][/QUOTE]
This thing was a bad idea at the beginning, i can't believe how it's still being used today. Unreal engine had subtractive geometry from the beginning and it makes way more sense than building a fully enclosed space inside an empty world.
Just for your information, Half-Life was built on the Quake 1 engine, not the Quake 2 engine.
"It is fundamentally just a heavily modified Quake 1 engine. There are about 50 lines of code from the Quake 2 engine, mostly bugs fixes to hard problems that Carmack found and fixed before we ran into them."
[url]http://web.archive.org/web/20080228162611/http://collective.valve-erc.com/index.php?doc=1028244478-62628500[/url]
By the way, model compiling still uses the old 'Quake C' system/language. That's what the extension .qc stands for.
[editline]05:28PM[/editline]
[url]http://en.wikipedia.org/wiki/Quake_C[/url]
Nice work though you should add history of the versions of source engine,too. Like old Source engine games(HL2, CS:S, DOD:S, HL2:DM etc.) were SE6, then they were ported to SE7(EP1 engine) or HL2:EP2 and Portal had SE13 while TF2 SE14 etc. Basically revisions of Source.
You should definitely add some info about the different stages TF2 went through. I've seen some stuff about it but it's never been quite clear to me
I hardly understood any of it
Thanks, never really understood why Doom was considered fake 3D but now I do.
Actually the Quake 1 engine is ID-Tech 1 and Quake 2 was ID-Tech 2.A bit false information on the OP
[QUOTE=pebkac;24108068]This thing was a bad idea at the beginning, i can't believe how it's still being used today. Unreal engine had subtractive geometry from the beginning and it makes way more sense than building a fully enclosed space inside an empty world.[/QUOTE]
UE3 uses both
[QUOTE=midlet_guy;24111106]Actually the Quake 1 engine is ID-Tech 1 and Quake 2 was ID-Tech 2.A bit false information on the OP[/QUOTE]
Nope, Doom engine is id Tech 1. Quake Engine isn't id Tech 2, though, it's an engine all on its own.
Make one about the changes between 2004 HL2 + 2009 L4D2
Its pretty cool to see game engines that all come from a basic source.
[QUOTE=pebkac;24108068]This thing was a bad idea at the beginning, i can't believe how it's still being used today. Unreal engine had subtractive geometry from the beginning and it makes way more sense than building a fully enclosed space inside an empty world.[/QUOTE]
Unreal came after Quake. The reason additive was picked because A. it is so much quicker to do light calculation and considering Quake was almost completely brushes it sped up the process. Compare what computers were like in 1995 to 1998. B. making sky boxes are easier. C. detail is much easier, Quake 2 easily had more complex environments than Unreal.
Pretty well one with the history of Source, Quake and GoldSrc. But Quake 3 is lacking one game, it's Return to Castle Wolfenstein: Operation Resurrection
Informative
Sorry, you need to Log In to post a reply to this thread.