# Adding Game/Mod Support

Note that the list of supported mods is now provided separately; see Supported Mods.

If you want to have support for your game/mod added, you'll need to send me (wd@metamod.org) the following information:

### Basic Info

- Game name:
- Homepage URL:
- Game version:
- Game directory:
- Win32 DLL name:
- Linux SO name:

- also, List of game entities (see below)

For instance, Counter-Strike would be:

- Game name: Counter-Strike
- Homepage URL: http://www.counter-strike.net/
- Game version: 1.1
- Game directory: cstrike
- Win32 DLL name: mp.dll
- Linux SO name: cs_i386.so

Many of these can be found in the liblist.gam file in the mod.

### List of game entities

The major information that I'll need is the names of any non-standard entities the game uses, for instance TFC uses things like:

       building_sentrygun
       detpack
       func_nobuild
       ghost
       info_player_teamspawn
       info_tfgoal
       item_artifact_envirosuit
       i_p_t
       item_tfgoal
       i_t_t
       teledeath
       tf_ammo_rpgclip
       tf_gl_grenade

You can see the complete lists of entities for supported mods in the files in the "ents" directory.

The reason these are needed is that the macro `LINK_ENTITY_TO_CLASS` in the HL SDK actually declares/defines a function with the name of the entity, which the engine will `dlsym` and call in the gameDLL. Since Metamod is sitting between the engine and the gameDLL, it needs to pass on the call to the function - but can't do this unless it knows ahead of time (at compile) to declare/define a function for that entity name. Thus, metamod needs a list of any entities that have functions declared/defined for them in the gameDLL via LINK_ENTITY_TO_CLASS.

Now, the simplest way to generate the list is to grep the source files for `LINK_ENTITY_TO_CLASS`. If you're not familiar with grep, it's a tool under linux for searching contents of files. For instance:

       grep LINK_ENTITY_TO_CLASS *.cpp *.c *.h

If you don't have linux available, then you may have to use some other tool under win32 to find a similar list. Or find a copy of grep for win32. :)

Note this all assumes you have access to the sourcecode for the mod. If you don't have access to the code, you'll need to find someone who does and ask them to grep the source for the entities.