Source (game engine)

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Source engine
Source engine logo
Non-photorealistic rendering in Team Fortress 2. Photorealistic rendering in Half-Life 2: Episode Two.
Developer(s) Valve Corporation
Stable release Build 4335 / 2010
Written in C++
Platform Microsoft Windows
Mac OS X
Xbox
Xbox 360
PlayStation 3
License Proprietary
Website http://source.valvesoftware.com/

Source is a 3D game engine developed by Valve Corporation. It debuted in June 2004 with Counter-Strike: Source and shortly thereafter Half-Life 2. Other notable games using the engine include first-person shooters Left 4 Dead and Team Fortress 2, the physics sandbox Garry's Mod, first-person action RPG games Vampire: The Masquerade - Bloodlines and Dark Messiah of Might and Magic, the first-person puzzle game Portal, first-person beat-em-up Zeno Clash and the MMORPG Vindictus developed by Nexon.

Contents

[hide]

[edit] Notable technology

For a more complete list, see Source Engine Features at the Valve Developer Community.

[edit] Modularity and notable upgrades

Source was created to evolve incrementally as technology moves onwards, as opposed to the backwards compatibility-breaking "version jumps" of its competitors. With Steam, Valve can distribute automatic updates with new versions of the engine among its many users.

In practice however, there have been occasional breaks in this chain of compatibility. The release of Half-Life 2: Episode One and The Orange Box both introduced new versions of the engine that could not be used to run older games or mods without the developers performing upgrades to code and, in some cases, content. But both times the work required to move from the older version to the newer was significantly less than what one might have come to expect from other engines - as was demonstrated in 2010, when Valve updated all of their core Source games to the very latest engine build.[13]

High dynamic range rendering (2005, Day of Defeat: Source)
Simulation of a camera aperture and the ability to fake the effects of brightness values beyond computer monitors' actual range. Required all of the game's shaders to be rewritten.[14]
Soft particles (2007, The Orange Box)
An artist-driven, multiprocessor-optimized particle system. Unlike most such systems, particles are not 'clipped' by 3D geometry.[15]
Hardware facial animation (2007, The Orange Box)
Hardware accelerated on modern video cards for "feature film and broadcast television" quality.[5]
Multiprocessor support (2007, The Orange Box)
A large code refactoring allowed the Source engine to take advantage of multiple CPU cores on the PC, Xbox 360 and Playstation 3.[16] On the PC, support was experimental and unstable[17] until the release of Left 4 Dead.[18] Multiprocessor support was later backported to Team Fortress 2 and Day of Defeat Source.[19]
Xbox 360 support (2007, The Orange Box)
Valve created the Xbox 360 release of The Orange Box in-house, and support for the console, unlike support for the PlayStation 3, is fully integrated into the main engine codeline. It includes asset converters, cross-platform play and Xbox Live integration.[20] Program code can be ported from PC to Xbox 360 simply by recompiling it.[21]
Mac OS X support (2010)
Starting in April 2010, Valve has announced the availability of OpenGL rendered Left 4 Dead, Left 4 Dead 2, Team Fortress 2, Counter-Strike: Source, Portal, Day of Defeat: Source, and the Half-Life series on Mac OS X. All future Valve games will be released simultaneously for Windows and Mac.[22][23] Games will only use Direct3D on Windows, and only OpenGL on the other platforms.

Valve has stated an intent to move Left 4 Dead's AI Director technology into the engine proper,[24] but there is no evidence that this has yet taken place.

In 2009, Left 4 Dead 2 introduced support for Squirrel scripts to be executed in maps.[25] It exists to automate changes to the behavior of existing C++ objects, but cannot extend the game's compiled code.

[edit] Future technology

[edit] Cloth

Dota 2 will introduce cloth simulation.[26]

[edit] Source Filmmaker

The tool used to create Team Fortress 2's "Meet the Team" videos as well as Left 4 Dead's introduction videos is the Source Filmmaker, a video capture and editing application that works from inside the engine.[27] It allows users to record themselves many times over in the same scene, creating the illusion of many participants, as well as supporting a wide range of cinematographic effects and techniques such as motion blur, Tyndall effects, Dynamic Lighting, and depth of field. (Motion blur has now been added to the games themselves, though only when the view is moving at high speeds—not per-object as in the film-maker.) It also allows manual animation of bones and facial features, allowing the user to create scenes that can't happen in-game. This tool is expected to be released to the public upon release of the final "Meet the Team" video.[citation needed] Currently this tool can be found in the very first release of Team Fortress 2, but there is no official support for it.

[edit] Image-Based Rendering

Image-based rendering technology had been in development for Half-Life 2[28] but was cut from the engine before its release. It was mentioned again by Gabe Newell in 2006 as a piece of technology he would like to add to his company's engine in order for them to support far larger scenes than are possible with strictly polygonal objects.[29]

[edit] Origins

Screenshot from Zeno Clash, a third-party Source game.

Source distantly originates from the GoldSrc engine, itself a heavily modified version of John D. Carmack's Quake engine, as is explained by Valve employee Erik Johnson on the Valve Developer Community:[30]

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.

Source was developed part-by-part from this fork onwards, slowly replacing GoldSrc in Valve's internal projects[31] and explaining in part the reasons behind its unusually modular nature. Valve's development of Source since has been a mixture of licensed middleware (Havok Physics, albeit heavily modified, and MP3 playback) and in-house-developed code.

John Carmack commented on his blog in 2004 that "there are still bits of early Quake code in Half-Life 2".[32]

[edit] Criticism

[edit] Toolset

The Source SDK tools are criticised for being outdated and difficult to use.[33][34] A large number of the tools, including those for texture and model compilation, require varying levels of text-editor scripting from the user before they are executed at the command line with sometimes quite lengthy console commands.[35] This obtuseness was cited by the University of London when they moved their exploration of professional architectural visualisation in computer games to Bethesda Softworks' Gamebryo-based Oblivion engine after a brief period with Source.[36] Third-party tools provide GUIs,[37] but are not supported by Valve.

The interface of Valve's Hammer Editor, the SDK's world-creation tool, has not changed significantly since its initial release for GoldSrc and the original Half-Life in 1998.

[edit] Valve Developer Community

On June 28, 2005, Valve opened the Valve Developer Community Wiki. VDC replaced Valve's static Source SDK documentation with a full MediaWiki-powered community site; within a matter of days Valve reported that "the number of useful articles nearly doubled". These new articles covered the previously undocumented Counter-Strike: Source bot (added by the bot's author, Mike Booth), Valve's NPC AI, advice for mod teams on setting up source control, and more.

[edit] Papers

Valve staff occasionally produce papers for various events and publications, including SIGGRAPH, Game Developer Magazine and Game Developers Conference, explaining various aspects of Source's development. They are aimed at professional audiences and often discuss complex concepts. They are listed on Valve's corporate website.

[edit] See also

[edit] References

  1. ^ "Source Multiplayer Networking". Valve Developer Community. 2005-06-30. http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking. Retrieved 2008-07-20. 
  2. ^ "VPhysics". Valve Developer Community. 2006-10-15. Archived from the original on 2006-06-01. http://web.archive.org/web/20060601162447/http://developer.valvesoftware.com/wiki/Vphysics. Retrieved 2008-07-20. 
  3. ^ "Source: Belly of the Beast". hlfallout.net. 2004-06-21. http://www.hlfallout.net/articles.php/article_2/4/. Retrieved 2008-12-06. "Since they licensed and integrated it into Source, Valve have been tweaking and adding to Havok to the point it's virtually a new animal. Almost every aspect of the Source engine follows on from the physics — including the sound, graphics, AI and animation. When asked whether or not they would be upgrading to Havok 2, Valve seemed to suggest they probably wouldn't, in part because H2 wouldn't be much of a step forward from what they currently have." 
  4. ^ "Multi-Core in the Source Engine Core". Bit-tech. 2006-11-02. http://www.bit-tech.net/gaming/2006/11/02/Multi_core_in_the_Source_Engin/1.html. Retrieved 2006-11-02. 
  5. ^ a b "Face-to-Face with TF2's Heavy". Steam news. 2007-05-14. http://store.steampowered.com/news/1039/. Retrieved 2010-04-25. 
  6. ^ "$sequence". Valve Developer Community. 2007-09-08. http://developer.valvesoftware.com/wiki/$sequence. Retrieved 2008-07-20. 
  7. ^ "$ikchain". Valve Developer Community. 2007-09-08. http://developer.valvesoftware.com/wiki/$ikchain. Retrieved 2008-07-20. 
  8. ^ Vlachos, Alex (March 9, 2010). "Rendering Wounds in Left 4 Dead 2". Valve Corporation. http://www.valvesoftware.com/publications/2010/gdc2010_vlachos_l4d2wounds.pdf. 
  9. ^ "$distancealpha". http://developer.valvesoftware.com/wiki/%24distancealpha. Retrieved 2009-07-05. 
  10. ^ "Improved Alpha-Tested Magnification for Vector Textures and Special Effects". SIGGRAPH 2007. 2007-08-05. http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf. Retrieved 2008-05-20. 
  11. ^ "Mod wizard complete". Valve Developer Community. 2008-02-24. http://developer.valvesoftware.com/wiki/Mod_wizard_complete. Retrieved 2008-07-20. 
  12. ^ "VMPI". Valve Developer Community. http://developer.valvesoftware.com/wiki/VMPI. Retrieved December 5, 2008. 
  13. ^ "Source 2009". Valve Developer Community. http://developer.valvesoftware.com/wiki/Source_2009#Availability. Retrieved 17 September 2010. 
  14. ^ Valve Corporation. Half-Life 2: Lost Coast. PC. (2005) "Chris Green: The Source engine supports a wide variety of shaders. The refraction shader on the window here requires us to copy the scene to a texture, refract it, and then apply it the window surface. To fully support HDR, every shader in the engine needed to be updated, so this refraction shader was improved to the support the full range of contrast."
  15. ^ "Source - Rendering System". Valve. http://source.valvesoftware.com/rendering.php. Retrieved August 8, 2009. 
  16. ^ "Interview: Gabe Newell". PC Zone. 2006-09-11. http://www.computerandvideogames.com/article.php?id=145846. Retrieved 2006-09-20. 
  17. ^ "Dual Core Performance". 2008-10-11. http://forums.steampowered.com/forums/showpost.php?p=8413873&postcount=92. Retrieved 2008-12-23. 
  18. ^ Lombardi, Doug (2008-05-13). "PCGH interview about Left 4 Dead, part 2". http://www.pcgameshardware.de/aid,643448/Interview/PCGH_interview_about_Left_4_Dead_part_2/?page=2. Retrieved 2008-12-23. 
  19. ^ Nick, Breckon (2008-03-18). "Team Fortress 2 Update Adds Multicore Rendering". http://www.shacknews.com/onearticle.x/57728. Retrieved 2009-08-19. 
  20. ^ "Source - Console Support". Valve. http://source.valvesoftware.com/console.php. Retrieved August 8, 2009. 
  21. ^ "Joystiq interviews Doug Lombardi about Xbox 360 Source". Joystiq. October 17, 2006. http://www.joystiq.com/2006/10/17/joystiq-interviews-doug-lombardi-about-xbox-360-source/. Retrieved August 8, 2009. 
  22. ^ "Valve to Deliver Steam & Source on the Mac". Valve. 2010-03-08. http://store.steampowered.com/news/3569/. Retrieved 2010-03-08. 
  23. ^ "Left 4 Dead 2, Team Fortress 2, Portal and Steam Coming to Mac in April". Kotaku. 2010-03-08. http://kotaku.com/5488375/left-4-dead-2-team-fortress-2-portal-and-steam-coming-to-mac-in-april. Retrieved 2010-03-08. 
  24. ^ "VGChartz Interviews Valve's Doug Lombardi on Left 4 Dead". vgchartz. September 30, 2008. http://news.vgchartz.com/news.php?id=2167. Retrieved August 8, 2009. 
  25. ^ "L4D2 VScripts". Valve Developer Community. http://developer.valvesoftware.com/wiki/L4D2_Vscripts. Retrieved February 12, 2010. 
  26. ^ "Valve's New Game Announced, Detailed: Dota 2". GameInformer. 13 October 2010. http://www.gameinformer.com/b/features/archive/2010/10/13/dota-2-announced-details.aspx. Retrieved 14 December 2010. 
  27. ^ "Source Filmmaker". Valve Developer Community. http://developer.valvesoftware.com/wiki/Source_Filmmaker. Retrieved August 4, 2009. 
  28. ^ "Interview with Gabe Newell". DriverHeaven.net. http://www.driverheaven.net/dhinterviews/gabenewell/. Retrieved 2009-11-21. 
  29. ^ "Valve Week". 1UP.com. http://valve.1up.com/. Retrieved 2006-07-14. 
  30. ^ Erik Johnson (2005-09-01). "Talk:Erik Johnson". Valve Developer Community. http://developer.valvesoftware.com/w/index.php?title=User_talk:Erik_Johnson&oldid=10088#GoldSource. Retrieved 2007-08-15. 
  31. ^ Hodgson, David (2004). Half-Life 2: Raising the Bar. Prima Games. ISBN 0-7615-4364-3. 
  32. ^ "Welcome, Q3 source, Graphics". John Carmack's Blog. 2004-12-31. http://www.armadilloaerospace.com/n.x/johnc/recent%20updates/archive?news_id=290. 
  33. ^ Neale Roberts (November 15, 2006). "Stuck Valve". Dirigible Development Diary. Archived from the original on 2007-12-27. http://web.archive.org/web/20071227044928/http://www.dirigible-games.com/diary/?p=15. Retrieved December 20, 2007. 
  34. ^ Neil Jedrzejewski (July 23, 2009). "Re: whats happening with this engine". hlcoders (official Valve mailing list). http://www.mail-archive.com/hlcoders@list.valvesoftware.com/msg28135.html. Retrieved July 29, 2009. 
  35. ^ "Vtex CLI use". Valve Developer Community. August 28, 2007. http://developer.valvesoftware.com/wiki/Vtex_CLI_use. Retrieved July 21, 2008. 
  36. ^ "Half Life 0 Oblivion 1 - Half Life Update". Digital Urban. September 28, 2006. http://digitalurban.blogspot.com/2006/09/half-life-0-oblivion-1-half-life-update.html. Retrieved December 20, 2007. 
  37. ^ "Category:Third Party Tools". Valve Developer Community. http://developer.valvesoftware.com/wiki/Category:Third_Party_Tools. Retrieved October 20, 2007. 

[edit] External links

Personal tools
Namespaces
Variants
Actions
Navigation
Interaction
Languages