====== DED syntax ====== This page describes the common syntax elements of the [[ded]] (Doomsday Engine Definition) language. ===== Directives ===== Directives instruct the DED [[http://en.wikipedia.org/w/index.php?title=Parser|parser]] to perform special actions when encountered. ^ Keyword^ Description | | [[include|Include]]| Include the specified //.DED// file. | | [[include|IncludeIf]]| Include the specified //.DED// file if the conditional statement is **true**. | | [[skip|SkipIf]]| Skip the rest of the current file if the conditional statement is **true**. | | [[model_path|ModelPath]]| Append a new path to the list of model search paths. | ===== Comments ===== There are two kinds of comment in DED; single-line and multi-line. Single line comments begin with **#** and continue until the end of line. # A single line comment stops here Multi line comments begin with **#>** and continue until **<#** is found. #> A multi-line comment begins... And continues ...and ends here <# ===== Assignment statements ===== ==== Flag values ==== Property = flaga | flagb | flagc; # Version 6 syntax Property = "flaga flagb flagc"; # Version 5 syntax (still supported). The special case of 'no flags' is defined as follows: Property = 0; # Supported from Doomsday 1.9.9 onwards Property = ""; # Version 5 syntax The following is a syntax error: Property = ; ==== String values ==== Strings begin and end with **"** (double quotation mark). If newline (''\n'') characters are found inside a string (the string has been divided into multiple lines) the newline and all following whitespace are skipped, and the actual string continues from the first non-whitespace character that follows. Property = "Some text string"; To include a double quotation mark in the string itself, [[http://en.wikipedia.org/wiki/Escape_sequence|escape]] it with **\** (backward slash). Property = "Some \"quoted text\""; To include a backward slash in the string itself, it must appear twice (to escape the escape sequence). Property = "path\\to\\something"; For this reason it is generally better to use forward slashes in paths. Doomsday uses forward slashes on all platforms, internally. ==== URI values ==== Resource [[uri]]s are used throughout Doomsday and use the following form: Property = ":"; ===== Definition scopes ===== A scope describes the extent of zero or more definition statements which apply to a named [[ded#Definition_types|definition type]]. Syntax example: definitiontype { //... Definition statements ...// } ==== Attributes ==== Attributes are optional keywords that either precede or follow a scope. These "derivation" attributes change the behavior of the parser when interpreting definition statements within the scope. ^ Keyword ^ Description | | [[altering_and_copying_definitions|Copy]]| Use the previous definition of the same type as a base. | | [[altering_and_copying_definitions|Mods]]| Modify an existing definition. | Clever use of attributes in conjunction with [[#Directives|directives]] allows the add-on author to construct multi-part, combinatorial add-ons. ===== Example ===== The following snippet (taken from //libdoom.pk3:defs/doom1/materials.ded//) serves as good example of what a //.DED// file typically looks like: Header { Version = 6; } # Allow disabling from the command line. SkipIf -nodefaultfx; # Add an animated light glow effect to the NUKAGE1 material. Material Mods "flats:NUKAGE1" { Layer { Stage { Glow = .5; Tics = 24; Rnd = .5; } Stage { Glow = .44; Tics = 24; Rnd = .5; } } } ===== See also ===== * [[:ded|DED language overview]] * [[Flags reference]]