Archived from the original dev blog and left as it was written, so it reflects the game as it stood in 2008.
And you guessed it folks its time for another exhilarating “The Dam”… well I was going to try carry the game show theme some more but man did it get old after about 2 sentences. Anyway this week is going to be more specifically focused on entirely what a mod is and how it’s implemented within source.
First we need to disassemble the engine, you’ll need some patience, a text editing program, a Hammer (newer than 3.4), and willingness to restart steam (again). The Source engine works on a client/server basis. The server part of the game receives and interprets information and dispatches it to the client to render and process, these are represented by bin/client.dll and bin/server.dll (duh). These contain all the game specific mechanics and functionality, but as some people with computer experience realize a .dll does not a game make. You need a .exe to actually run the game, in source that is hl2.exe and this is the game’s engine. The .dll’s contain all the game specific stuff like weapons/AI and the .exe is the engine itself that knows what to do with the games content. Whenever a new engine like the Orange Box is released there is a new hl2.exe that the game has to be run in, the slight changes to this file means that the .dll’s have to be compiled for that engine otherwise they wont work. When creating a mod for source you gain all the code needed to make the .dll’s, you gain absolutely no control over the .exe’s content, that and the ability to make money form your mod is what source engine licenses are for. What happens is that when steam starts up it reads 2 directories for any gameinfo.txts steamapps and SourceMods. The gameinfo.txt tells the game where to look for the .dll files and tells it what .exe to load it into primarily though the number known as an appid. In essence the gameinfo.txt is the game as far as Steam is concerned, a gameinfo.txt in a folder inside of source mods is a mod at its most base level.
So what does this mean for you? Realistically as far as the average gamer is concerned there’s 3 classes of modifications, any of which require you to have access to the Source SDK Base which we’ll go into detail about later.
- Map Pack
- Mod
- Total Conversion
A map pack simply leverages the existing game like HL2, has some new maps, maybe some new models but apart from new maps only the appearance ever changes. Mod’s take an existing game like HL2 and try to expand upon it while still requiring the original game to play it. A Total Conversion on the other hand takes nothing except what comes with the game, you don’t need anything to install a TC except whatever you’d need to play any mod.
Map Packs come in two brands, the ones where you install it inside your original game and have a huge mess, and the kind I’m talking about that show up like a separate mod. How this is achieved is by two factors. Firstly the Gameinfo.txt (when written properly) can load the existing .dll files of any game like HL2 and simply begin playing the game like another mod, no changes made. The second factor is how steam loads content, the entire retail game is usually packed away in a .gcf so normally if you would replace something you’d have to unpack the .gcf edit it and repack it which we can’t do. With steam the content found in the game’s folder supersedes anything found in the .gcf. So to make a map pack, you simply load the game itself through your GameINfo.txt and simply extract and edit anything you want to be different, that is unless you want to edit the code.
Mods work pretty much like Map Packs, they load another game content and overwrite it with their own, but the biggest distinction is that mod’s have code. In order to make a mod you have to get the source code, compile it and then create the .dll files. As a mod doesn’t fall back on a game for all its content it can have problems being run or started if not everything’s been put in place; however, like Map Packs mods require a game to be installed to be run. Without that game essential parts of the mod will be missing rendering it useless. In order to remove that pre requisite of owning a game you have to move into the realm of Total Conversions.
Total Conversions basically rely on nothing but themselves and the Source SDK Base that I’ll take a moment to explain. Source SDK Base and Source SDK Base – Orange Box are nothing but wrappers. They’re just fluff to surround the EP1 engine and the OB engine respectively, there’s lots of ways to gain access to them but without them you cannot run any type of mod. This allows a mod to load only the engine and non of the existing game’s content to keep a nice clean install and a wider target market as anyone can install it, the easiest way to tell a Total Conversion is it’s appid, in order to load only the SDK Base and nothing else then it uses an appid of 215 or 218 to show the EP1 or OB engine respectively.
Some may try to debate these terms but that’s how I use them and you may find lots of people using them interchangeably, for the record heres a few examples. A few good Map Packs are things like Mistake of Pythagoras, Rock 24, or Minerva; a few good mods are things like Synergy, Source Forts, or HL2:CTF; and a few good total conversion are things like Team Fortress Forever, Project Valkyrie or BallMen (not like that, get your mind out of the gutter and try it out).
