Metamod:Source is a C++ plugin environment for Half-Life 2. It acts as a "metamod" which sits in between the Game and the Engine, and allows plugins to intercept calls that flow between. It provides a mechanism called SourceHook, a very powerful library for intercepting, overridding, and superseding virtual function calls.
Although Valve provides their own C++ plugin environment, we found two major reasons to develop Metamod:Source:
- If separate plugins use their own hooking mechanisms, conflicts will arise. The centralized SourceHook environment solves that by providing a unified gateway.
- Valve's layer has idiosyncracies, such as not fully unloading from memory and poor console and programmatic control. Metamod:Source is explicit, flexible, and open source.
It is important to note that Metamod:Source is not the same as "Mani Admin Plugin," "SourceMod," or "EventScripts." It is a very small library wrapper designed to load and pass a few pointers to C++ plugins. It provides almost no unneeded functionality (such as gameplay mods or MySQL support) and incurs no overhead on its own.
Metamod:Source is licensed under a very liberal, open-source license. You are not required to release any source code to your plugins, as the license allows commercial/proprietary use. (Note that you might have to follow the license agreements of third-party software, such as Valve SDKs or other libraries.)