How did Source 2 come to be? The evolution of Source and Hammer up to Source 2 & the benefits of the new engine explained.
This March, amidst previously unseen levels of hype and speculation, Valve finally unveiled CS:GO’s long-awaited upgrade to their Source 2 engine. It’s an update that has been prophesied for years, yet nobody could put their finger on exactly what it would bring. Now that Counter-Strike 2 is here (and we have access!), it’s finally time to take a look at this much-anticipated update. Because much hay has been made of the gameplay and visual changes, I’m going to focus more on the base engine features that have changed, to hopefully explain how this update improves the game technically.
To understand why Source 2 is such a big deal, we need to take a look at the history of Valve’s Source engine. And to understand that, we need to look at the original Quake. Released in 1996, id Software’s Quake is one of the legends of video game history and the immediate successor to the similarly legendary Doom series. It brought with it proper 3d rendering and multiplayer support, as well as tools to create new maps and mods. It was with these features and tools that dozens of other games were created.
So, when Gabe Newell and Mike Harrington came together, founded Valve, and set ahead with creating a video game, it was a logical choice to build off of the Quake engine. After 2 years of development, Valve released their debut game, Half-Life, built on their own variant of the Quake engine: GoldSrc. Half-Life was a major success (several publications proclaimed it “Game of the Decade” and it sports a 96/100 on Metacritic), a feat buoyed by its engine that allowed for excellent quality rendering, lighting, sound, and animations.
Shortly after Half-Life’s release, Valve set ahead with the bold task of creating a sequel that was better than the original in every way. Gabe Newell later stated, “Why spend four years of your life building something that isn't innovative and is basically pointless?”
The new Source engine, built on a fork of GoldSrc, was developed alongside to help Half-Life 2 meet that goal. This meant an overhaul to large parts of the engine: level geometry, which previously could only be composed of flat planes, could now be sculpted and shaped; surfaces, which were previously given a flat texture and shaded only by the lighting, could now be enhanced with a variety of shader effects including reflections, refractions, and normal maps; NPCs could now realistically animate their faces, allowing the expression of complex emotions and nuanced speech.
Half-Life 2 was an unbridled success, with critics proclaiming the game even better than the original. But it was there that engine development significantly slowed down. While Valve continued to release new games, the engine changes these brought were relatively minor: the Half-Life 2 Episodes brought new NPC interactions and animations along with new shader features, the Left 4 Dead series gave improved bot navigation, and the Portal series improved real-time shadow rendering and water effects. The most recent substantial upgrade to Source came with the 2012 release of Counter-Strike: Global Offensive. This was a larger upgrade than previous engine branches, bringing real-time sun shadows, various compile-time lighting upgrades and map optimizations, and several shader improvements.
These incremental changes primarily served to keep the engine up to date with modern graphic standards and, combined with increased model and texture resolutions, ensured that Source games wouldn’t fall behind the modern standard of graphics.
However, 15 years of incremental upgrades had resulted in an engine built upon a patchwork of different systems and were difficult to upgrade without substantial effort. Some portions of the engine dated back to the original Quake and had remained untouched since. This accumulated technical debt led Valve to work on building an entirely new engine rather than continue to upgrade its older one.
Valve began building Source 2 sometime around 2010, but the first time the public got their hands on it was in 2015 when Dota 2 was ported over from Source. Valve released a handful of smaller games using the engine over the intervening years, but the next major Source 2 release would not be until 2020’s Half-Life: Alyx, a full-length VR game and the first installment in the Half-Life series since 2007. And of course, now we have Counter-Strike 2.
The answer: basically everything. The mapping tools and the systems for geometry, models, lighting, and materials have all been rebuilt essentially from scratch, implementing modern practices. As an example, let's look at a fundamental part of every map: the base geometry - the environment in which all gameplay takes place.
In Source, the world is primarily composed of 3 different kinds of objects. Brushes, the most basic, are extremely simple. They are simple 3d primitive shapes, where every face (side) must be flat, and the whole object must be convex (you cannot draw a straight line that exits the brush and then re-enters it). These are also the only objects that can block visibility for optimization purposes.
The next kind of object is the displacement, a flat, square plane that is subdivided into many smaller triangles and can be shaped, sculpted, and can blend between textures. These are often used for bumpy ground (think dirt and grass) and any surface where texture blending is needed (imagine a plaster wall decaying to the bare brick beneath).
The final object is the static prop, which is a complex model that is created in external modeling software and is placed into the map as a single unit that can be identically duplicated as needed. Most world detail is composed of these (cars, trees, crates, fences, etc).
In Source 2, this distinction between world geometry (brushes and displacements that are created and edited in the level editor) and models is gone. Any surface can be shaped in any way, subdivided at will, and blend textures, any object can block visibility, and models created in external programs can be edited in-editor, and geometry created in-editor can be converted into a model. Also gone are Source 1’s numerical limits, which imposed a strict cap on the number of different objects in a map (you could not have more than 8192 brushes or 16384 static props). This enhanced flexibility greatly increases the speed and quality at which content can be made, by removing restrictions that interrupt a level designer’s workflow.
Another system that has had the same quality upgrade is the game’s lighting. In Source, lighting (with few exceptions) is limited to static lighting that is baked into the map when it is compiled. These lights can be toggled or flicker, but they cannot move and do not cast shadows from dynamic (moving) objects. The only light source that can cast dynamic shadows is the sun. In Source 2, lights now cast shadows from dynamic objects, can move (though the number of moving lights is often kept to a minimum for performance reasons), and are generally higher quality. VRAD (Valve RADiosity), the compile-time program that bakes lighting into the map, has been upgraded to its third iteration, bringing much more realistic and higher-fidelity lighting, at the cost of longer compiles.
The high-fidelity lighting also augments the power of Source 2’s upgraded material system. In Source, there are 2 primary shaders, one for world geometry and one for models. While they share many parameters, others are different, and even using the same settings the two shaders will result in a slightly different look that can be annoying when trying to make a seamless transition between world geometry and a model. Additionally, these shaders lack many modern features that allow for higher-quality rendering, like physically based rendering (PBR) or parallax occlusion maps. This means that textures created in popular material creation tools, like Substance Painter, often need adjustments or need to have their color channels changed to be compatible with Source’s nearly 20-year-old material setup.
Source 2 supports all of these features and more (notably, CS2’s new water rendering). Additionally, the unified geometry system (see above) means that any shader can be applied to any surface with no disparity between different object types. This modern material system generally enhances the look of the game and also makes it easier to produce content for, by allowing direct importing of materials from common texturing tools.
As someone who spends a huge amount of time creating maps for CS:GO, any improvement to the tools and processes I use is hugely beneficial. Thankfully, Source 2 has not disappointed in this aspect. But to understand what a boon they are, we need to look at the current state of Source 1 tools.
The main tool for creating CS:GO levels is Hammer. It’s an old tool, even older than the Source engine. The tool, originally known as WorldCraft, was developed by 1996 by a modder for the Quake engine. It was later acquired by Valve for use with GoldSrc, and continually upgraded since then. However, don’t let its old age scare you. Hammer is genuinely one of the best level editors commonly in use today, sporting many features and workflows that modern level editors, such as those used for Unity and Unreal, do not have.
Despite this, its age does show through at times with a dated interface and many quirks that users have to learn. Source 2’s Hammer has been rebuilt from the ground up with a modern UI and boatloads of new and improved features that hugely speed up map creation. And, of course, it benefits from all of Source 2’s new features that improve the quality of geometry and lighting that can be created in-editor.
Another sticking point when creating CS:GO levels is importing custom models and materials. The engine uses custom formats for both. The provided method for converting textures and models is to write a file detailing how to compile them, and then to use command-line tools to run them. Materials then need to be supplied with a custom text file that defines what textures and shader parameters to use. The community has developed tools to speed this process, but they’re imperfect. Again, this has been massively improved in Source 2 with integrated material and model editors that allow users to drop in textures and adjust parameters with checkboxes and sliders.
All of these features combine to make Source 2 a much more advanced engine than Source, both technically and visually. Source is laden with almost 3 decades of gradual improvements, but combined they expose its age. Doing away with Quake’s basic geometry system and bringing in a new one that allows mappers virtually unlimited flexibility improves visuals and speeds up the creation workflow. On top of this geometry, new, advanced materials lit with an all-new lighting system allow S2’s modern rendering features to shine. And these are all tied together with the new toolset that makes it much easier to import, edit, and view content.
These, and dozens of other smaller new features, do away with Source’s bulk and fuse into one cohesive system that makes Source 2 a truly modern game engine.