IWADINFO

From ZDoom Wiki
Jump to navigation Jump to search

IWADINFO allows the engine to identify data files that serve as stand-alone games (IWAD), rather than mods. Detected games will be listed in the IWAD selection box on startup. The engine comes with its internal IWADINFO lump (in game_support.pk3) to detect the classic games, but games created for GZDoom can now feature their own custom IWADINFO to declare themselves as standalone games. GZDoom will scan files with either the .iwad or .ipk3 extensions for the presence of an IWADINFO lump. IWAD files without this extension (such as doom2.wad for example) are not scanned for presence of an IWADINFO lump and therefore rely on GZDoom's internal list.

Custom IWADINFO lumps and the lump in game_support.pk3 follow a similar syntax, except custom IWADINFOs are expected to only define one IWAD and not include a file list. Note that standalone games will not process GAMEINFO, as this other lump is only scanned for files loaded as mods.

IWad
{
	properties
	etc
	...
}

Properties

Property Description
Name = "<string>" The game's name. This appears in the game selection list, as well as acting as the window title in windowed mode when i_friendlywindowtitle is enabled.
AutoName = "<string>" The name used for your game in the ini files. You can use a completely stand alone name to completely separate your game from pre-existing configurations...
AutoName = "MyCustomGame"

...or you can inherit the autoloads etc. from a pre-existing game while allowing separate configuration specific to your game.

AutoName = "Heretic.MyCustomGame"

Do not use an already existing internal name for your AutoName - you must use a different name. Otherwise, your resources will be overwritten by internal engine assets. "Doom.MyCustomGame" is okay - "Doom.id.Doom1" is not.

Game = "<string>" The core GZDoom game used as a base. Possible values are:
  • Doom
  • Chex
  • Heretic
  • Hexen
  • Strife

If in doubt (or if your game has no ties to any of the original games) just use Doom.

Config = "<string>" Similar to AutoName, but for keybinds etc. You can use a completely stand alone name to completely separate your game from pre-existing configurations...
Config = "MyCustomGame"

...or you can use a pre-existing game's name to use their settings.

Config = "Doom"
IWADName = "<filename>" Only used in the internal lump to identify files that do not have the custom .iwad or .ipk3 extensions. Ignored in custom lumps, which describe the file containing them.
MapInfo = "<lump name>" Specify a base MAPINFO lump to load before your game's MAPINFO lump (if present). If you've defined everything in your MAPINFO's gameinfo block, this is optional. Otherwise, you may wish to inherit from one of the default GZDoom definitions.
Mapinfo = "mapinfo/doom2.txt"
MustContain = "<lump name>", "<lump name>"... Only used in the internal lump to validate external files by verifying they have the expected content, and to resolve ambiguity when different IWADs can use the same name. Ignored in custom lumps, which describe the file containing them.
BannerColors = "<foreground color>", "<background color>" The same as STARTUPCOLORS in GAMEINFO.
StartupType = "<startup type>" Optional and presumably the same as the GAMEINFO implementation.
StartupSong = "<lump name>" Optional and presumably the same as the GAMEINFO implementation.
Compatibility = "<string>", "<string>"... Set certain compatibility flags. These probably aren't very useful for stand-alone games.
Required = "<string>" Specifies that another game is required for this game to work. If that game does not exist, this game will not appear on the IWAD list. Use the game's name string, not its filename!
Required = "Hexen: Beyond Heretic"

Probably not enormously useful for standalone games.

Load = "<string>", "<string>"... Specifies another archive to be auto-loaded alongside the current game. Used by Strife for VOICES.WAD, and by Hacx for GZDoom-specific data.
IgnoreTitlePatches = <integer> Ignores the "(C)WILVxx" graphic lumps used for level names in all of the official Doom IWADs so that they can be properly localized by LANGUAGE. This probably isn't very useful for stand-alone games.


DeleteLumps = "<string>", "<string>"... Effectively ignores the specified IWAD lumps while loading the game. Used to delete certain "placeholder"-style lumps in the BigFont used by Heretic and Hexen. This probably isn't very useful for stand-alone games.
DeleteLumps = "FONTB01", "FONTB02", "FONTB03", "FONTB04", "FONTB06"
NoKeyboardCheats Disables cheat codes. Note that cheat codes are still usable if the allcheats console variable is set to true.
LoadLights = <integer> Controls loading of light.pk3 file. This property is effective only if its GAMEINFO equivalent is set to -1, or is not used entirely. Possible values are:
  • 0: prevents the file from being loaded.
  • 1: loads the file.
  • -1: leaves the option of loading the file to the user (default).
LoadBrightmaps = <integer> Controls loading of brightmaps.pk3 file. This property is effective only if its GAMEINFO equivalent is set to -1, or is not used entirely. Possible values are:
  • 0: prevents the file from being loaded.
  • 1: loads the file.
  • -1: leaves the option of loading the file to the user (default).
LoadWidescreen = <integer> Controls loading of game_widescreen_gfx.pk3 file. This property is effective only if its GAMEINFO equivalent is set to -1, or is not used entirely. Possible values are:
  • 0: prevents the file from being loaded.
  • 1: loads the file.
  • -1: leaves the option of loading the file to the user (default).
DiscordAppId = "<string>" (Need more info)

This property is effective only if its GAMEINFO equivalent is set to "", or is not used entirely.

SteamAppId = "<string>" (Need more info)

This property is effective only if its GAMEINFO equivalent is set to "", or is not used entirely.

Example

IWad
{
	Name = "My Kickass Custom Game"
	AutoName = "MyCustomGame"
	Game = "Doom"
	Config = "Doom"
	StartupType = "Hexen"
	BannerColors = "ff ff ff", "c9 00 00"
}