Metamod:Source ist eine C++ Plugin-Umgebung für Half-Life 2. Es agiert als ein "Metamod" (ein Ausdruck geprägt durch Will Day) welches zwischen dem Spiel und der Engine sitzt und erlaubt Plugins aufrufe abzufangen, welche zwischen ihnen Ablaufen. Es unterstützt einen Mechanismus genannt SourceHook, eine sehr mächtige Bibliothek zum Abfangen, Übergehen und Ersetzen von
virtuellen Funktions-Aufrufen.
Auch wenn Valve ihre eigene C++ Plugin-Umgebung unterstützt, fanden wir 2 Hauptgründe um Metamod: Source zu vertreiben:
1. Wenn separate Plugins ihre eigenen bekannten Mechanismen für
Hooks nutzen, werden Konflikte heraufbeschwört. Die zentralisierte "SourceHook engine" löst das durch Unterstützen eines einheitlichen Gaytways fürs Eingreifen.
2. Valves Ebene hat ihre Eigenarten, wie nicht komplettes entladen aus dem Speicher, eine schlechte Konsolen- und programmatische Kontrolle.
Es ist wichtig festzustellen, dass Metamod:Source nicht das gleiche ist wie "Mani Admin Plugin", "SourceMod" oder
"EventScripts" ist. Es eine sehr kleiner
Programmbibliotheks-
Adapter entwickelt um ein paar
Zeiger für C++ Plugins zu laden und zu durchlaufen. Es unterstützt so gut wie keine unnötigen Funktionalitäten (wie Modifikation vom Spielhergang oder MySQL-Unterstützung) und verursacht keinen
Overhead durch sich selbst.
Metamod:Source is a C++ plugin environment for Half-Life 2. It acts as a "Metamod" (a term coined by Will Day) 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:
1. If separate plugins use their own hooking mechanisms, conflicts will arise. The centralized SourceHook engine solves that by providing a unified gateway for hooking.
2. Valve's layer has idiosyncracies, such as not fully unloading from memory and poor console and programmatic control.
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.