Gameinfo.txt

From Valve Developer Community
Revision as of 12:26, 23 October 2005 by Pon (talk | contribs) (Basic GameInfo.txt usage)

Jump to: navigation, search

The GameInfo.txt file describes to the SDK tools and Source Engine which content is needed for a particular MOD or game. It is how the tools and engine know to load Half-Life 2, Counter-Strike, or Half-Life 2: Deathmatch content when they are running in the MOD's game directory. It also is a marker that the tools use to find your game directory.

Note: Only a programmer setting up a MOD project right at the very beginning ever needs to edit this file. In most cases, you won't need to edit it, but if you want your game to be based on content other than Half-Life 2, then you'll need to modify it. Once this file is setup for your MOD, it should be shipped with the MOD's content. The same gameinfo.txt file should sit in the game directory of all developers working on the mod.

UI Settings

Many UI settings, including your game's title, are handled by gameinfo.txt. Keys include:

 game          "Game Title"      // This is what displays in Steam's game menu.
 title         "Game Title"      // This is what is actually displayed in the game menu.
 title2        "..."             //Omittable
 title3        "..."             //Omittable (Never actually tested with more than 2 titles)
 title#        "..."             //Omittable (Never actually tested with more than 2 titles)
 type          singleplayer_only //Can also be multiplayer_only, or absent. Defines various UI elements and game rules.
 nocrosshair   1/0               //Hides the crosshair selection menu in Options' Multiplayer tab.
 nohimodel     1/0               //Unknown
 nomodels      1/0               //Unknown
 developer     "Team name"       //Your team's name (or just yours!)
 developer_url "Web address"     //Your team's home page. Must start with http://.
 icon          "path/to/icon"    //The icon must be an uncompressed TGA 16x16 pixels in size.
                                 //The path is relative to the mod's installation directory
                                 //(i.e where GameInfo.txt is) and should not include the TGA file extension
 hidden_maps                     //Maps between the parathenses do not appear in the interface, but are still accessible.
   {
       "test_speakers" 1
       "test_hardware" 1
       "..." 1
   }

When you first make a new mod, the gameinfo.txt is missing the title and type keys, so make sure to add these.

Note: It's likely your title won't display right until you edit the resource/clientscheme.res file, to change the title's font. Half-Life 2 uses a specially made font that only has a specific set of characters, so it won't display most text properly.

Basic GameInfo.txt usage

The main relevant thing in the GameInfo.txt file is the SteamAppId variable. If you look inside GameInfo.txt, you'll see a section that looks something like this:

SteamAppId    220        // This will mount all the GCFs we need (240=CS:S, 220=HL2).

The SteamAppId value specifies which game content (Steam .GCF files) is accessible to the game for this GameInfo.txt.

The SteamAppId values for the core Source games can be found here.

You can also add information to allow your developer name and URL to be visible in the Steam UI. See Steam 3rd Party Mod Support.

Advanced GameInfo.txt topics

This section describes various components of GameInfo.txt in greater detail

ToolsAppId

All GameInfo.txt files should contain a line like this:

ToolsAppId    211

This is a special case that tools use so they can load special content that is used by the tools, but is not used by the games.

SearchPaths

The SearchPaths section of the GameInfo.txt file describes where the content is to be found, either on your hard drive or inside Steam cache files. To understand this part, we must take a detour into how programmers using the Source engine access the game's files. All files that a programmer accesses in code must exist under a path ID. A path ID describes one or more locations on your hard drive or inside virtual Steam file systems.

As an example, most of your game's resources like scripts, sounds, model files, and materials are accessed under the "Game" path ID. A programmer might say, "open a file called scripts\weapon_m4a1.txt inside the 'Game' path ID". If you were running a mod in C:\MyMod\Blasters, and you used SteamAppId 240 which would load in the Counter-Strike: Source content, then it would look for the file in these locations:

  • C:\MyMod\Blasters\scripts\weapon_m4a1.txt
  • <Steam install directory>\Steam\SteamApps\username\Counter-Strike Source\cstrike\scripts\weapon_m4a1.txt
  • <inside the virtual Steam file system>\cstrike\scripts\weapon_m4a1.txt

Using path IDs to describe where the files are saves the programmer and artist from having to worry about all these different directories. They can use names relative to the game directory (like scripts\weapon_m4a1.txt or materials\brick\brickwall001a.vmt) and the engine and tools will find the full path to the file wherever it exists, as long as GameInfo.txt describes what the "Game" path ID means.

Inside the GameInfo.txt file, there is a section called "SearchPaths", which describes the path IDs. Most mods will never need to modify the way these are setup from the way they are created when you run Create a Mod from the SDK launcher.

The first part of each line is the name of the path ID, and the second part is where to look for files when this path ID is used. A simple example, which is illustrative, but you would never use (because it uses absolute paths including drive letters, which you can never assume exist on a user's machine) is this:

TestPathID C:\TestMod1
TestPathID C:\TestMod2
TestPathID C:\TestMod3

If a programmer were to write code that asked for scripts\weapon_m4a1.txt and specify "TestPathID" as the path ID in code, then the engine would look for the file in these locations:

  • C:\TestMod1\scripts\weapon_m4a1.txt
  • C:\TestMod2\scripts\weapon_m4a1.txt
  • C:\TestMod3\scripts\weapon_m4a1.txt

Since the Source games access most of their content in the "Game" path ID, they do some things for you automatically if you have a path ID called "Game". For each entry with a path ID of "Game":

  1. It adds a "GameBin" path ID, in <dir>\bin
  2. It adds another "Game" path in front of it with _<language> at the end. For example: c:\hl2\cstrike would get a c:\hl2\cstrike_french path added to it if you were running on a French-localized machine.

For the first "Game" search path:

  1. It adds a search path called "MOD" under the same folder.
  2. It adds a search path called "DEFAULT_WRITE_PATH".

The default SearchPaths that would be used in most MODs are like this:

Game        |gameinfo_path|.
Game        hl2

Normally, a path specifier (the part on the right side) is relative to the base directory --The directory where hl2.exe is found. If |gameinfo_path| precedes the path, then it is relative to the directory where GameInfo.txt file instead. For example, if the GameInfo.txt file were in C:\MyMod\Blasters, and it had a path like |gameinfo_path|SomeTestDirectory, then the path ID you were creating would refer to:

C:\MyMod\Blasters\SomeTestDirectory

For Counter-Strike: Source, the GameInfo.txt file has a SearchPaths section that looks like the one above. If your Counter-Strike directory were:

C:\Program Files\Valve\Steam\SteamApps\username\Counter-Strike Source

then it would be saying to look in these two directories:

  • C:\Program Files\Valve\Steam\SteamApps\username\Counter-Strike Source\cstrike

because GameInfo.txt exists here.

  • C:\Program Files\Valve\Steam\SteamApps\username\Counter-Strike Source\hl2

which only exists inside a virtual Steam file system.Template:Otherlang:en Template:Otherlang:en:pl