This page is still a Work In Progress and thus contributions are welcome.
Note to contributors: before "blindly copying/pasting" what other websites/pages says (like this one), please validate through testing that it works!
Preamble (terminology)
This page will use specific terminology to refer to some things. Here's a list of them:
- Boolean: a value that can be either "0" for "false" or "1" for true.
- "Key/Value pair": a pair that consist of a "key" describing something and it's corresponding "value". You will often see it's shortcut here: "K/V".
- "Self-published" on Steam: those are games/mods that does not rely on Half-Life itself but are recognized as their own in Steam, examples are "Cry of Fear", "Half-Rats: Parasomnia", "Sven Co-Op".
Purpose
The main purpose of
liblist.gam
is to "describe" to GoldSrc (and eventually Steam) a game or mod. This is a text file that can be opened and edited with a text editor like Windows's Notepad. It's content might be scary at first, but this page is here to describe it's content and such.
First, any line that starts with
//
is a "comment" on said line. This means that the engine will ignore and skip straight away to the next one until everything has been read. Comments are useful to humans (modders) as they work like "taking notes during a school lesson". Programmers should already be familiar with this notation. Before you ask, multi-line comments
/* */
are NOT working.
Second, aside from these "comments", the contents must be K/V pairs or an empty line. Anything else might crash the engine or cause unexpected behavior.
Finally, this file is always located inside a "game/mod folder" (
bshift
,
cstrike
,
czero
,
czeror
,
dmc
,
dod
,
ricochet
,
tfc
,
valve
,
mymod
...) Said "game/mod folder" is located inside the Half-Life installation (or "self-published" game/mod's copy of it).
For the sake of simplicity, this page will assume that no command-line "overrides" are used (example: -dll
).
This is the list of key/value pairs that are working everywhere.
Key | Type of value | Description |
---|
clientcrccheck | Boolean | For multiplayer mods, if this is enabled, clients with a different client game/mod binary than the server's will not be able to connect. |
edicts | Number | Override the engine's default amount of "edicts" (entity dictionaries) to use. Useful for mods with extremely complex geometry, entity setups that would not work with the default value. |
fallback_dir | Game/mod folder name | If present, add the specified mod/game as "default" when seeking content. The most common use case are mods that want to use Opposing Force as a base without additional programming and shipping its assets with the mod (in liblist.gam , this example would be: "fallback_dir" "gearbox" ). |
fallback_maps | Boolean | This only works if fallback_dir is set. For multiplayer mods, if true, this will hide the maps from the "default" game/mod in the "Create Server" dialog. Example: a mod that uses Opposing Force as base and has this enabled will not show op4ctf_crash in the "Create Server" dialog. |
game | Text | The name of the game/mod as it will appear in the window's title bar and "Custom Game". For games/mods not "self-published" on Steam, this will also be shown in Steam's library (the opposite being the name of the application in Steamworks itself). |
gamedll | Relative path to a file from mod/game folder | Which server binary to use for Windows. If file is missing from the game/mod's folder, then the filesystem will fallback to the "default" game/mod (either fallback_dir if set or valve if not). |
gamedll_linux | Relative path to a file from mod/game folder | Which server binary to use for Linux. If file is missing from the game/mod's folder, then the filesystem will fallback to the "default" game/mod (either fallback_dir if set or valve if not). |
startmap | Filename in maps folder | Name of the first map to launch in singleplayer after choosing the difficulty (skill) level. |
trainmap | Filename in maps folder | Name of the map to launch in singleplayer after choosing "Hazard/Training Course" option. |
type | Specific text | Possible values are singleplayer_only or multiplayer_only . On Steam GoldSrc, the only change that this K/V pair impacts it the presence and position of the "Multiplayer" tab in the "Options" dialog. If singleplayer_only , the tab is hidden, if multiplayer_only , the tab is first (on the left) and if the K/V is omitted, the tab is last (on the right). |
In the next table, the K/V pairs exists in the engine. Although these will only make a difference for multiplayer mods as they are part of the "network messages" between the clients and the server. Do notice that "games" is not part of the previous sentence because these K/V will do nothing on actual games/mods by Valve like Half-Life, Opposing Force, Counter-Strike and so on.
For the sake of simplicity, it is recommended to not put them in your liblist.gam
as those are purely for the sake of "verbosity" with a network packet tracer or special program like HLSW. The reason they are in this page in the first place is purely for education/informational purposes.
Key | Type of value | Description |
---|
cldll | Boolean | Indicates the engine that the mod has a client binary. |
size | Boolean | Size of the mod. |
svonly | Boolean | Indicates the engine that the mod/game has only a server binary (no client counterpart). |
url_dl | URL | URL to the download page of the mod. Probably used by WON's "Custom Game" as well. |
url_info | URL | URL to the website of the mod. Probably used by WON's "Custom Game" as well. |
version | Boolean | Version of the mod. |
Key/value pairs that works on Steam GoldSrc only
This is the list of key/value pairs that are working only on the Steam platform/engine.
Key | Type of value | Description |
---|
detailed_textures | Boolean | If true, show the "Detailed Textures" checkbox (a feature added to GoldSrc since Counter-Strike: Condition Zero) in the "Video" options tab. If false or missing from liblist.gam , the checkbox is hidden (although details textures can still be set through the r_detailtextures CVAR). Side note: the checkbox will be greyed (can't be ticked/unticked) if the engine r_detailstextures_supported CVAR is set to "false". During the engine's initialization process, that CVAR's value is updated depending if the graphics card/chipset running the engine supports the GL_ARB_multitexture OpenGL extension or not. |
icon | Relative path to a file from mod/game folder | Steam will use this value as the "base filename" for the icon in the library. If you set a value of foo , then Steam will seek for <value>_big.tga . Not setting this K/V pair will not provide an icon (even if you have a game_big.tga file). This is NOT to be confused with the icon for the window's title bar (which uses game.tga ). |
mpfilter | Text | For multiplayer mods, this is a "pattern" to tell the "Create Server" dialog which maps should be filtered out in the maps list. Example #1: a mod that is both singleplayer and multiplayer has its singleplayer maps names prefixed by sp_ and dm_ for multiplayer deathmatch. Setting a value of sp_ will hide all sp_ maps from the list. Do note that the pattern is case-sensitive (although your filenames should be fully lowercase to prevent issues on Linux). For people who have C programming language knowledge, this is the equivalent of the result of strstr(mapName, pattern) == false . Unrelated note: GameUI does "internal special treatments" for key game with values Half-Life and Opposing Force . |
nohimodels | Boolean | For multiplayer mods, if true, this will render player models using their "lower definition body". For a more in-depth example of how it works, open models/player/gordon/gordon.mdl with any model viewer and look at the different bodies on the first body group. |
nomodels | Boolean | For multiplayer mods, if true, this will hide the ability for players to choose their model in multiplayer games in the "Multiplayer" tab in the options. Useful for mods where the model is enforced through game code (like Counter-Strike). |
secure | Boolean | For multiplayer mods, indicates if server operators can use VAC (Valve Anti-Cheat) to protect their servers against cheating. |
Key/value pairs that works only on WON
In the next table, K/V pairs marked with (*)
indicates that an equivalent to said pair exists but somewhere in Steamworks's back-end rather than inside of liblist.gam
.
Key | Type of value | Description |
---|
developer | Text | (*) The name of the developers that created this game/mod. |
developer_url | URL | (*) Link to the developers website or something else. |
hlversion | Text | The required Half-Life version to run this game/mod. Trying to activate a game/mod with an obsolete Half-Life version would have caused a popup showing up asking the player to download and update his Half-Life installation. |
manual | URL | (*) Link to the manual of the game/mod on the Internet. |
mpentity | Entity classname | Classname of the entity used to detect multiplayer maps. |
Obsolete key/value pairs
This is the list of key/value pairs that are working but they are no longer needed as of 2022.
Key | Type of value | Description | Why it's obsolete? |
---|
gamedll_osx | Relative path from mod/game folder | Which server binary to use for old Mac running on Intel platform. | GoldSrc has not been ported for modern Mac running on ARM platform. |