Decal is an extremely popular third party utility
for the popular MMORPG Asheron's Call
, published by Turbine Entertainment Software
. The brainchild of programming god
, it also happens to be one of the most active SourceForge
projects, and probably one of the coolest game extensions
Decal is written entirely in C++, but exposes itself via COM and OLE Automation so developers using any language with COM support can develop on the Decal platform. Decal works by injecting itself into the memory space of the client software, and hooking drawing and network functions. This allows Decal to display it's own GUI in-game, and capture packets from the server.
Decal has a rich interface for development that includes a fully-functional graphical interface toolkit with a complete widget set, a powerful XML-based dynamic packet decoder, a stream-based media i/o system, and a huge measure of features that are out of the scope of this node. Not to mention the fact that it is also robust and well-written, thanks to the base of code contributed by the original author. It does have it's flaws, but those are mostly contributed by myself :).
Decal provides a framework for six extension types: Plugins, Network Filters, File Filters, Services, Surrogates, and Input Actions. Plugins are what most users care about, as they provide a graphical interface and real functionality to the user. Network Filters use Decal's packet capture mechanism to read certain kinds of packets and interpret them into data objects, events, or files. File Filters read the media archives (the ".dat" files) and interpret them, similar to the Network Filters. Services are generic extensions that provide access to common functionality. Surrogates extend Decal's native plugin capabilities and act as a proxy between non-native plugin types like backwards compatible (version 1) and Windows Scripting plugins. Finally, Input Actions automate certain functionality related to the mouse and keyboard input to the client.
Decal has literally transformed Asheron's Call. Despite the fact that Decal is constantly surrounded by controversy, the development team is very proud of the benevolent community it has created. Even with certain recent developments (the release of a few "cheating" plugins), we still believe most people use Decal for good, not evil.