Skip to content
Karol Szuster edited this page Apr 26, 2022 · 3 revisions

What is Anubis?

Anubis is a plugin/DLL manager that sits between the Half-Life Engine and an HL Game mod, allowing the mod-like DLL plugins to add functionality to the HL server or game mod. Its goal is to provide modern C++ API to interact with the engine as well as the game library.

Differences between Anubis and Metamod

  • Wraps (Re)HLDS structs around C++ classes, conversion to C types happens under the hood
    • edict_t -> IEdict
    • cvar_t -> ICvar
    • ...
  • Engine & Game funcs are based on the hookchains
    void someFunc(hookchain *hook, int param1, int param2)
    {
       // some pre stuff
       hook->callNext(param1, param2); // calls next hook in chain
       // some post stuff
    }
    void someFunc(hookchain *hook, int param1, int param2)
    {
       // some pre stuff
       hook->callOriginal(param1, param2); // omits next hooks and calls original game or engine func
       // some post stuff
    }
  • Out-of-the-box support for game specific entities
    • Executing member functions of entities
    • Hooking the game entities' virtual functions
      • for Half-Life offsets of the entity virtual functions are used
      • for Counter-Strike and Counter-Strike:Condition Zero ReGameDLL_CS is used
      • for other games there's no support as of now, there's plan to add for Day of Defeat and Team Fortress Classic
    • Hooking non virtual member functions of entities (not ready yet)
  • Exposes ReHLDS funcs
    • not all are currently exposed, more will be added later if neccessary
Clone this wiki locally