# Game Configuration - Map Format Settings

formatinterface (string)
Interface class name in Doom Builder that is used to read and write the map data.

- For Doom map format, use "DoomMapSetIO". This is a map format that uses numeric flags.
- For Hexen map format, use "HexenMapSetIO". This is a map format that uses numeric flags.
- For UDMF map format, use "UniversalMapSetIO". This is a map format that uses named flags.

maplumpnames (structure)
This structure describes the lumps that make up the complete map, including scripts and nodes. It must also indicate what Doom Builder is supposed to do with these lumps and/or where the lumps come from. These lumps are normally written by the map format interface class, but some could be generated by the nodebuilder compiler or stored by Doom Builder directly. In this structure, there should be a structure for every map lump. The name of the structure should be the lump name, in uppercase. For the map header (which name differs) you can use the name ~MAP. The following settings should be in the lump structure (unless the default value applies):

- required (boolean)
  True to indicate that this lump is a required lump for the map. Default is false.
- forbidden (boolean) - GZDB only.
  True to indicate that this lump must not present in the map's namespace. Default is false.
- blindcopy (boolean)
  Set this to true when Doom Builder should copy this lump along with the map without using it. Default is false.
- nodebuild (boolean)
  When set to true, this indicates that the nodebuilder compiler generates or modifies this lump. Default is false.
- allowempty (boolean)
  Set to true to allow the nodebuilder to leave this lump empty. Default is false.
- script (string)
  When this is set, it indicates that this lump can be edited with the script editor. The contents of this lump will be loaded in the script editor automatically. Set the value to the .cfg filename (without path) of a Script Configuration to use.
- scriptbuild (boolean) - GZDB only.
  When this is set, it indicates that this lump can be edited with the script editor. Currently chosen script configuration will be used to build this lump. The contents of this lump will be loaded in the script editor automatically.

Example:

    maplumpnames
    {
    	~MAP
    	{
    		required = true;
    		blindcopy = true;
    		nodebuild = false;
    	}

    	THINGS
    	{
    		required = true;
    		nodebuild = true;
    		allowempty = true;
    	}

    	LINEDEFS
    	{
    		required = true;
    		nodebuild = true;
    		allowempty = false;
    	}

    	SIDEDEFS
    	{
    		required = true;
    		nodebuild = true;
    		allowempty = false;
    	}

    	VERTEXES
    	{
    		required = true;
    		nodebuild = true;
    		allowempty = false;
    	}

    	SEGS
    	{
    		required = false;
    		nodebuild = true;
    		allowempty = false;
    	}

    	SSECTORS
    	{
    		required = false;
    		nodebuild = true;
    		allowempty = false;
    	}

    	NODES
    	{
    		required = false;
    		nodebuild = true;
    		allowempty = false;
    	}

    	SECTORS
    	{
    		required = true;
    		nodebuild = true;
    		allowempty = false;
    	}

    	REJECT
    	{
    		required = false;
    		nodebuild = true;
    		allowempty = false;
    	}

    	BLOCKMAP
    	{
    		required = false;
    		nodebuild = true;
    		allowempty = false;
    	}

    	SCRIPTS
    	{
    		required = false;
    		nodebuild = false;
    		script = "ZDoom_ACS.cfg";
    	}
    }

universalfields (structure) - UDMF only.
Provides additional UDMF field definitions to show in the Custom tab of Edit windows.
Warning: only add fields that Doom Builder does not edit with its own user-interface!
Warning: the "default" field must match the UDMF specifications!
Field data types:

- 0 = Integer
- 1 = Float
- 2 = String
- 3 = Bool
- 4 = Linedef type (integer)
- 5 = Sector effect (integer)
- 6 = Texture (string)
- 7 = Flat (string)
- 8 = Angle in degrees (integer)
- 9 = Angle in radians (float)
- 10 = XXRRGGBB color (integer)
- 11 = Enum option (integer)
- 12 = Enum bits (integer)
- 13 = Sector tag (integer)
- 14 = Thing tag (integer)
- 15 = Linedef tag (integer)
- 16 = Enum option (string)
- 17 = Angle in degrees (float)
- 22 = Byte angle (integer) - GZDB only

Example:

    universalfields
    {
    	linedef
    	{
    		comment
    		{
    			type = 2;
    			default = "";
    		}
    	}

    	sidedef
    	{
    		comment
    		{
    			type = 2;
    			default = "";
    		}
    	}

    	thing
    	{
    		comment
    		{
    			type = 2;
    			default = "";
    		}

    		skill6
    		{
    			type = 3;
    			default = false;
    		}

    		class6
    		{
    			type = 3;
    			default = false;
    		}

    	}

    	sector
    	{
    		comment
    		{
    			type = 2;
    			default = "";
    		}
    	}
    }