||This article contains too many or too-lengthy quotations for an encyclopedic entry. (February 2013)|
|“||Ken Birdwell explains it like this:
"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."
At its core, it's a Quake 1 engine. You can tell this by comparing Half-life's map compiling tools with those shipped with Quake 1. You'll find very minor differences -- none of them are fundamental. The core rendering is architecturally identical to Quake1, the only "significant" change is removing the fixed palette, making map lighting RGB instead of 8 bit, and converting software rendering to be 16 bit color instead of 8 bit color, which was pretty easy and only required minor code changes. Our skeletal animation system is new, though it was heavily influenced by the existing model rendering code, as were a lot of our updated particle effects, though less so with our beam system. Decals are totally new, our audio system has some major additions to what already existed, and at ship time our networking was almost totally Quake1 / QuakeWorld networking but about a year later Yahn rewrote most of all of it to be very different in design. The most highly changed sections are the game logic; ours being written in C++ and Quake's being written in interpreted "Quake C". Our AI system is very very different from anything in Quake, and there's a lot of other significant architectural changes in the whole server and client implementations, though if you look hard enough you can find a few remnants of some nearly unmodified Quake 1 era entities buried in places.
|“||We also took PAS from QW and/or Q2 and a couple of other minor routines I can remember (no more than 100-200 lines of code there). There was some feature overlap (as Ken mentions) like game code DLLs and colored lighting, but we developed our own solutions to those independent of Q2.||”|
|“||We have the source code to the original DOS Quake, Win Quake, GL Quake, Quake World, Quake II, and all of the various patches. We pick and choose from that source base depending on what we are trying to do. However, we've been implementing a lot of our own sub-systems (animation, AI, GL and software renderer), so about 75% of the engine is our own code.||”|
History of the name
The engine had no official name until Valve came to announce its successor:
|“||When we were getting very close to releasing Half-Life (less than a week or so), we found there were already some projects that we needed to start working on, but we couldn't risk checking in code to the shipping version of the game. At that point we forked off the code in VSS to be both $/Goldsrc and /$Src. Over the next few years, we used these terms internally as "Goldsource" and "Source". At least initially, the Goldsrc branch of code referred to the codebase that was currently released, and Src referred to the next set of more risky technology that we were working on. When it came down to show Half-Life 2 for the first time at E3, it was part of our internal communication to refer to the "Source" engine vs. the "Goldsource" engine, and the name stuck.||”|
- Half-Life (Valve Software, 1998)
- Team Fortress Classic (Valve Software, 1999)
- Half-Life: Opposing Force (Gearbox Software, 1999)
- Counter-Strike (Valve Software, 2000)
- Gunman Chronicles (Rewolf Software, 2000)
- Ricochet (Valve Software, 2000)
- Deathmatch Classic (Valve Software, 2001)
- Half-Life: Blue Shift (Gearbox Software, 2001)
- James Bond 007: Nightfire (Electronic Arts, 2002)
- Natural Selection (Unknown Worlds Entertainment, 2002)
- Day of Defeat (Valve Software, 2003)
- Counter-Strike Neo (Valve Software 2003)
- Counter-Strike: Condition Zero (Valve Software, Ritual Entertainment, Gearbox Software, Turtle Rock Studios, 2004)
- Counter-Strike Online (Valve Software, Nexon Corporation, 2008)
- Shaiya (Valve Software, Nexon Corporation, 2004)
- Cry of Fear (Team Psykskallar, 2012)
- Bokitch, Chris (1 Aug 2002). "Half-Life's Code Basis". Valve Software. Archived from the original on 1 March 2007. Retrieved 12 February 2011.
- "Half-Life's Code Basis". TWHL. Retrieved 15 April 2013.
- Newell, Gabe (1999). "Half Life: Interview With Gabe Newell". GameSpot UK. Archived from the original on 23 July 2002. Retrieved 22 March 2011.
- Johnson, Erik (1 September 2005). "Talk:Erik Johnson". Valve Developer Community. Retrieved 12 February 2011.