liblist.gam Last edited 3 weeks ago2022-11-01 22:33:34 UTC

Work In Progress
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:

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).
About some command-line arguments
For the sake of simplicity, this page will assume that no command-line "overrides" are used (example: -dll).

Key/value pairs that works regardless of platform/GoldSrc version

This is the list of key/value pairs that are working everywhere.
KeyType of valueDescription
clientcrccheckBooleanFor multiplayer mods, if this is enabled, clients with a different client game/mod binary than the server's will not be able to connect.
edictsNumberOverride 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_dirGame/mod folder nameIf 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_mapsBooleanThis 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.
gameTextThe 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).
gamedllRelative path to a file from mod/game folderWhich 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_linuxRelative path to a file from mod/game folderWhich 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).
startmapFilename in maps folderName of the first map to launch in singleplayer after choosing the difficulty (skill) level.
trainmapFilename in maps folderName of the map to launch in singleplayer after choosing "Hazard/Training Course" option.
typeSpecific textPossible 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).
About the following K/V pairs
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.
KeyType of valueDescription
cldllBooleanIndicates the engine that the mod has a client binary.
sizeBooleanSize of the mod.
svonlyBooleanIndicates the engine that the mod/game has only a server binary (no client counterpart).
url_dlURLURL to the download page of the mod. Probably used by WON's "Custom Game" as well.
url_infoURLURL to the website of the mod. Probably used by WON's "Custom Game" as well.
versionBooleanVersion 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.
KeyType of valueDescription
detailed_texturesBooleanIf 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.
iconRelative path to a file from mod/game folderSteam 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 in TGA format first or PNG format second. Not setting this K/V pair will not provide an icon (even if you have a game_big file). This is NOT to be confused with the icon for the window's title bar (which uses game.tga).
mpfilterTextFor 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.
nohimodelsBooleanFor 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.
nomodelsBooleanFor 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).
secureBooleanFor 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

Notice for "self-published" Steam games/mods
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.
KeyType of valueDescription
developerText(*) The name of the developers that created this game/mod.
developer_urlURL(*) Link to the developers website or something else.
hlversionTextThe 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.
manualURL(*) Link to the manual of the game/mod on the Internet.
mpentityEntity classnameClassname 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.
KeyType of valueDescriptionWhy it's obsolete?
gamedll_osxRelative path from mod/game folderWhich server binary to use for old Mac running on Intel platform.GoldSrc has not been ported for modern Mac running on ARM platform.

Comments

You must log in to post a comment. You can login or register a new account.