User:MascaraSnake/UDMF

From SRB2 Wiki
Jump to: navigation, search

Here's where I put all the documentation for UDMF stuff.

Links

Standardized fields

Any valid UDMF implementation must recognize these fields, although it's allowed to just ignore the ones that aren't used.

Linedef

Name Type Description Default Do we need this?
id Integer Tag -1 Yes
v1 Integer Index of first vertex none Yes
v2 Integer Index of second vertex none Yes
blocking Boolean Impassable flag false Yes
blockmonsters Boolean Block Enemies flag false Yes
twosided Boolean Double-Sided flag false Yes
dontpegtop Boolean Upper Unpegged flag false Yes
dontpegbottom Boolean Lower Unpegged flag false Yes
secret Boolean Flag: Drawn as one-sided on automap false No
blocksound Boolean Flag: Blocks sound false No
dontdraw Boolean Flag: Not drawn on automap false No
mapped Boolean Flag: Always drawn on automap false No
passuse Boolean Boom flag: Passes use action false No
translucent Boolean Strife flag: Translucent false No
jumpover Boolean Strife flag: Railing false No
blockfloaters Boolean Strife flag: Blocks floating monsters false No
playercross Boolean ZDoom special activator flag: Activated when crossed by player false No
playeruse Boolean ZDoom special activator flag: Activated when used by player false No
monstercross Boolean ZDoom special activator flag: Activated when crossed by monster false No
monsteruse Boolean ZDoom special activator flag: Activated when used by monster false No
impact Boolean ZDoom special activator flag: Activated when hit by projectile false No
playerpush Boolean ZDoom special activator flag: Activated when pushed by player false No
monsterpush Boolean ZDoom special activator flag: Activated when pushed by monster false No
missilecross Boolean ZDoom special activator flag: Activated when crossed by projectile false No
repeatspecial Boolean ZDoom special activator flag: Can be activated repeatedly false No
special Integer Linedef action aka linedef type 0 Yes
arg0 Integer Action argument 0 0 Yes
arg1 Integer Action argument 1 0 Yes
arg2 Integer Action argument 2 0 Yes
arg3 Integer Action argument 3 0 Yes
arg4 Integer Action argument 4 0 Yes
sidefront Integer Front sidedef index none Yes
sideback Integer Back sidedef index -1 Yes
comment String Comment field for mappers empty Yes

Sidedef

Name Type Description Default Do we need this?
offsetx Integer Texture X offset 0 Yes
offsety Integer Texture Y offset 0 Yes
texturetop String Upper texture - Yes
texturebottom String Lower texture - Yes
texturemiddle String Middle texture - Yes
sector String Sector index none Yes
comment String Comment field for mappers empty Yes

Vertex

Name Type Description Default Do we need this?
x Float X coordinate none Yes
y Float Y coordinate none Yes

Sector

Name Type Description Default Do we need this?
heightfloor Integer Floor height 0 Yes
heightceiling Integer Ceiling height 0 Yes
texturefloor String Floor flat none Yes
textureceiling String Ceiling flat none Yes
lightlevel Integer Light level 160 Yes
special Integer Sector special aka sector type 0 Probably not
id Integer Tag 0 Yes
comment String Comment field for mappers empty Yes

Thing

Name Type Description Default Do we need this?
id Integer Tag 0 Yes
x Float X coordinate none Yes
y Float Y coordinate none Yes
height Float Height/Z position relative to the floor (or ceiling if flipped) 0 Yes
angle Integer Angle in degrees 0 Yes
type Integer Thing type none Yes
skill1 Boolean Flag: Appears on skill level 1 false No
skill2 Boolean Flag: Appears on skill level 2 false No
skill3 Boolean Flag: Appears on skill level 3 false No
skill4 Boolean Flag: Appears on skill level 4 false No
skill5 Boolean Flag: Appears on skill level 5 false No
ambush Boolean Ambush flag false Probably not?
single Boolean Flag: Appears in Single Player mode false No
dm Boolean Flag: Appears in Match mode false No
coop Boolean Flag: Appears in Coop mode false No
friend Boolean MBF flag: Friend false No
dormant Boolean Hexen flag: Dormant false No
class1 Boolean Hexen flag: Appears for player class 1 false No
class2 Boolean Hexen flag: Appears for player class 2 false No
class3 Boolean Hexen flag: Appears for player class 3 false No
standing Boolean Strife flag: NPC false No
strifeally Boolean Strife flag: Ally false No
translucent Boolean Strife flag: Translucent false No
invisible Boolean Strife flag: Invisible false No
special Integer Linedef action executed on death/pickup 0 No
arg0 Integer Action argument 0 0 No
arg1 Integer Action argument 1 0 No
arg2 Integer Action argument 2 0 No
arg3 Integer Action argument 3 0 No
arg4 Integer Action argument 4 0 No
comment String Comment field for mappers empty Yes

ZDoom fields

Fields added for ZDoom's UDMF implementation. Some of them are useful for SRB2 as well.

Linedef

Name Type Description Default Do we need this?
alpha Float Translucency 1.0 Yes, replaces linedef type 900–908
renderstyle String Rendering style, "translucent" or "add" translucent Yes, with the options "translucent" and "fog" (possibly "opaque" too?) (replaces linedef type 909)
playeruseback Boolean ZDoom special activator flag: Activated when used by player from back side False No
anycross Boolean ZDoom special activator flag: Activated when crossed by non-projectile False No
monsteractivate Boolean Flag: Can be activated by monsters False No
blockplayers Boolean Flag: Block players False No
blockeverything Boolean Flag: Block all objects False No
firstsideonly Boolean Flag: Can only be activated from the front side False No
zoneboundary Boolean Flag: Boundary for sound reverb zones False No
clipmidtex Boolean Flag: Middle textures are clipped to floor and ceiling False Maybe
wrapmidtex Boolean Repeat Midtexture flag False Yes
midtex3d Boolean Solid Midtexture flag False Yes
midtex3dimpassible Boolean Flag: Used in conjunction with midtex3d to make the middle texture behave like an impassable linedef, i.e., projectiles can pass through False No
checkswitchrange Boolean Flag: Switches can only be activated when vertically reachable False No
blockprojectiles Boolean Flag: Block all projectiles False No
blockuse Boolean Flag: Block all use actions False No
blocksight Boolean Flag: Block line of sight of monster False No
blockhitscan Boolean Flag: Block hitscan attacks False No
locknumber Integer Linedef special must be unlocked by key 0 No
arg0str String Alternate string-based version of arg0, used for ACS scripts empty Yes, but as a standalone parameter separate from arg0
moreids String Additional tags, specified as a space-separated list, e.g. "2 666 1003 4505" empty Maybe?
transparent Boolean Strife: Transparent line (alpha 0.25) False No

Sidedef

Name Type Description Default Do we need this?
scalex_top Float Upper texture X scale 1.0 Maybe
scaley_top Float Upper texture Y scale 1.0 Maybe
scalex_mid Float Middle texture X scale 1.0 Maybe
scaley_mid Float Middle texture Y scale 1.0 Maybe
scalex_bottom Float Lower texture X scale 1.0 Maybe
scaley_bottom Float Lower texture Y scale 1.0 Maybe
offsetx_top Float Upper texture X offset 0.0 Maybe
offsety_top Float Upper texture Y offset 0.0 Maybe
offsetx_mid Float Middle texture X offset 0.0 Maybe
offsety_mid Float Middle texture Y offset 0.0 Maybe
offsetx_bottom Float Lower texture X offset 0.0 Maybe
offsety_bottom Float Lower texture Y offset 0.0 Maybe
light Integer Light level 0 No
lightabsolute Boolean Light level is absolute value instead of relative to sector's light level False No
lightfog Boolean Light level is used even in fog sector False No
nofakecontrast Boolean Disable fake contrast False Maybe
smoothlighting Boolean Smooth fake contrast False Maybe
clipmidtex Boolean Middle textures are clipped to floor and ceiling False No
wrapmidtex Boolean Repeat midtexture False Maybe
nodecals Boolean Disable decals False No

Vertex

Name Type Description Default Do we need this?
zfloor Float Floor height, used to define slopes in triangular sectors none (use sector's floor height) Yes
zceiling Float Ceiling height, used to define slopes in triangular sectors none (use sector's ceiling height) Yes

Sector

Name Type Description Default Do we need this?
xpanningfloor Float Floor texture X offset 0.0 Yes, replaces linedef type 7
ypanningfloor Float Floor texture Y offset 0.0 Yes, replaces linedef type 7
xpanningceiling Float Ceiling texture X offset 0.0 Yes, replaces linedef type 7
ypanningceiling Float Ceiling texture Y offset 0.0 Yes, replaces linedef type 7
xscalefloor Float Floor texture X scale 1.0 Maybe
yscalefloor Float Floor texture Y scale 1.0 Maybe
xscaleceiling Float Ceiling texture X scale 1.0 Maybe
yscaleceiling Float Ceiling texture Y scale 1.0 Maybe
rotationfloor Float Floor texture rotation in degrees 0.0 Yes, replaces linedef type 7
rotationceiling Float Ceiling texture rotation in degrees 0.0 Yes, replaces linedef type 7
ceilingplane_a Float Used for defining a ceiling slope via equation 0.0 No
ceilingplane_b Float Used for defining a ceiling slope via equation 0.0 No
ceilingplane_c Float Used for defining a ceiling slope via equation 0.0 No
ceilingplane_d Float Used for defining a ceiling slope via equation 0.0 No
floorplane_a Float Used for defining a floor slope via equation 0.0 No
floorplane_b Float Used for defining a floor slope via equation 0.0 No
floorplane_c Float Used for defining a floor slope via equation 0.0 No
floorplane_d Float Used for defining a floor slope via equation 0.0 No
lightfloor Integer Floor's light level, relative to sector's light level 0 Yes, replaces linedef type 600
lightceiling Integer Ceiling's light level, relative to sector's light level 0 Yes, replaces linedef type 601
lightfloorabsolute Boolean Floor's light level is an absolute value False Yes
lightceilingabsolute Boolean Ceiling's light level is an absolute value False Yes
alphafloor Float Floor's translucency, for portals 1.0 No
alphaceiling Float Ceiling's translucency, for portals 1.0 No
renderstylefloor String Floor's rendering style, for portals translucent No
renderstyleceiling String Ceiling's rendering style, for portals translucent No
gravity Float Gravity 1.0 Yes, partially replaces linedef type 1
lightcolor Integer Light colormap 0xFFFFFF Yes, replaces linedef type 606
fadecolor Integer Fog colormap 0x000000 Yes, replaces linedef type 606
desaturation Float Colormap intensity 0 Yes, replaces linedef type 606
silent Boolean Objects in this sector make no sound False No
nofallingdamage Boolean Falling damage is disabled False No
noattack Boolean Monster attacks are blocked in this sector False No
dropactors Boolean Objects drop with instantly moving floors False No
norespawn Boolean Players cannot respawn in this sector False No
soundsequence String Sound sequence to play when the player moves empty No
hidden Boolean Not drawn on textured automap False No
waterzone Boolean Underwater sector False No
moreids String Additional tags, specified as a space-separated list, e.g. "2 666 1003 4505" empty Maybe?
damageamount Integer Amount of damage inflicted by this sector 0 No
damagetype String Type of damage inflicted by this sector None Yes, replaces damage sector types
damageinterval Integer Interval in tics between damage application 32 No
leakiness Integer Probability of damage leaking through radiation suit 0 No
damageterraineffect Boolean Will draw a terrain splash effect when damage is inflicted False No
damagehazard Boolean Use Strife's delayed damage False No
floorterrain String Floor terrain use floor flat's terrain No
ceilingterrain String Floor terrain use ceiling flat's terrain No
floor_reflect Float Reflectiveness of floor 0.0 No
ceiling_reflect Float Reflectiveness of ceiling 0.0 No
fogdensity Integer Fog density 0 No
floorglowcolor Integer Color of floor's glow effect as RRGGBB value use floor flat's glow effect No
floorglowheight Float Height of floor's glow effect 0.0 No
ceilingglowcolor Integer Color of ceiling's glow effect as RRGGBB value use ceiling flat's glow effect No
ceilingglowheight Float Height of ceiling's glow effect 0.0 No
color_floor Integer Floor color 0xFFFFFF No
color_ceiling Integer Ceiling color 0xFFFFFF No
color_walltop Integer Color of upper walls in the sector 0xFFFFFF No
color_wallbottom Integer Color of lower walls in the sector 0xFFFFFF No
color_sprites Integer Color of sprites in the sector 0xFFFFFF No
portal_ceil_blocksound Boolean Ceiling portal blocks sound False No
portal_ceil_disabled Boolean Ceiling portal disabled False No
portal_ceil_nopass Boolean Ceiling portal blocks movement False No
portal_ceil_norender Boolean Ceiling portal not rendered False No
portal_ceil_overlaytype String Ceiling portal translucency translucent No
portal_floor_blocksound Boolean Floor portal blocks sound False No
portal_floor_disabled Boolean Floor portal disabled False No
portal_floor_nopass Boolean Floor portal blocks movement False No
portal_floor_norender Boolean Floor portal not rendered False No
portal_floor_overlaytype String Floor portal translucency translucent No

Thing

Name Type Description Default Do we need this?
skill6–16 Boolean Flags: Appears on skill level 1–16 false No
class4–16 Boolean Flags: Appears for player class 4–16 false No
conversation Integer Conversation ID 0 (none) No
countsecret Boolean Flags: Picking up this Object counts as a secret 0 (none) No
arg0str String Alternate string-based version of arg0, used for ACS scripts empty No
gravity Float Per-object gravity 1.0 No
health Float Per-object health 1 No
renderstyle String Per-object rendering style empty No
fillcolor Integer Fill color for stencil rendering styles 0x000000 No
alpha Float Translucency 1.0 No
score Integer Score value 0 No
pitch Integer Pitch in degrees 0 Yes
roll Integer Roll in degrees 0 Yes
scalex Float Vertical scale 0 (ignored) No
scaley Float Horizontal scale 0 (ignored) No
scale Float Total scale 0 (ignored) Yes
floatbobphase Integer Floatbobphase -1 No

New fields

Fields added for SRB2's UDMF implementation.

Linedef

Name Type Description Default
skewtd Boolean Slope Skew flag False
noclimb Boolean Not Climbable flag False
noskew Boolean No Midtexture Skew flag False
midpeg Boolean Peg Midtexture flag False
netonly Boolean Netgame Only flag (replaces No Sonic/No Knuckles/No Tails) False
nonet Boolean No Netgame flag False
bouncy Boolean Bouncy Wall flag False
transferline Boolean Transfer Line flag False
executordelay Integer Delay for linedef executor (replaces Upper Unpegged + back sector floor, can be set via linedef type 453) 0
midtexrepetitions Integer Number of middle texture repetitions (ignored if Repeat Midtexture is set) 0
arg5 Integer Another linedef action argument 0
arg1str String A second string-based linedef action argument empty
horizoneffect Boolean Flag: Horizon effect (replaces linedef type 41) False

Sector

Name Type Description Default
friction Float Friction (replaces linedef type 540) 1.0
specialeffectplanes Integer Special effects apply to: 0 = floor, 1 = ceiling, 2 = both (Partially replaces linedef type 8) 0
specialontouch Boolean Special effects already apply when the player barely touches the sector (Partially replaces linedef type 8) False
colormapbegin Integer Start of colormap fade range (partially replaces linedef type 606) 0
colormapend Integer End of colormap fade range (partially replaces linedef type 606) 33
foglighting Boolean Use fog-like plane lighting for translucent FOFs and PolyObjects (partially replaces linedef type 606) False
flip Boolean Flag: Vertically flip players if gravity is negative (replaces a setting of linedef type 1) False
heatwave Boolean Flag: Heat wave effect (replaces linedef type 13) False
spacecountdown Boolean Flag: Space Countdown False
doublestepup Boolean Flag: Ramp Sector False
nostepdown Boolean Flag: Non-Ramp Sector False
eggcapsule Boolean Flag: Egg Capsule False
starpostactivator Boolean Flag: Star Post Activator False
exitsector Boolean Flag: Exit Sector False
specialstagepit Boolean Flag: Special Stage Pit False
returnflag Boolean Flag: CTF Return Flag False
supertransform Boolean Flag: Super Sonic Transform False
forcespin Boolean Flag: Force Spin False
finishline Boolean Flag: Circuit Finish Line False
intangibletocamera Boolean Flag: Intangible to the Camera False
ringdrain Integer Number of rings drained per second while the player is in the sector 0
damagearea Integer Area in which the damage specified by damagetype and ringdrain applies (0 = Floor, 1 = Ceiling, 2 = Floor and ceiling, 3 = Entire sector) 0
triggersector Boolean Can sector trigger linedef executors? False
triggerarea Integer Area in which linedef executors can be triggered (0 = Floor, 1 = Ceiling, 2 = Floor and ceiling, 3 = Entire sector) 0
triggerobject Integer Objects that can trigger linedef executors (0 = Any player, 1 = All players, 2 = Any pushable object, 3 = Any object with a thinker) 0
teambase Integer CTF team base (0 = None, 1 = Red, 2 = Blue) 0

Possible values for damagetype:

  • "None"
  • "Generic"
  • "Water"
  • "Fire"
  • "Electrical"
  • "Spikes"
  • "DeathPitTilt"
  • "DeathPitNoTilt"
  • "InstantKill"
  • "SpecialStage"

Thing

Name Type Description Default
param0–param5 Integer Configurable parameters whose semantics depend on the Thing type (similar to linedef arguments), replaces Parameter field in binary format 0
param0str–param1str String String-based parameters empty
flip Boolean Flip flag (the other flags are made obsolete by the param fields) False
spawntrigger Integer Tag of trigger linedef to activate when SpawnTrigger is called 0
seetrigger Integer Tag of trigger linedef to activate when SeeTrigger is called 0
paintrigger Integer Tag of trigger linedef to activate when PainTrigger is called 0
meleetrigger Integer Tag of trigger linedef to activate when MeleeTrigger is called 0
missiletrigger Integer Tag of trigger linedef to activate when MissileTrigger is called 0
deathtrigger Integer Tag of trigger linedef to activate when DeathTrigger is called 0
xdeathtrigger Integer Tag of trigger linedef to activate when XDeathTrigger is called 0
raisetrigger Integer Tag of trigger linedef to activate when RaiseTrigger is called 0

GZDoom Builder field types

Number Type Base type
0 Integer (32-bit unsigned)
1 Float (double precision)
2 String
3 Boolean (true/false)
4 Linedef type Integer
5 Sector type Integer
6 Texture String
7 Flat String
8 Angle in degrees Integer
9 Angle in radians Float
10 Color in XXRRGGBB format Integer
11 Enum choice Integer
12 Enum flags Integer
13 Sector tag Integer
14 Thing tag Integer
15 Linedef tag Integer
16 Enum choice String
17 Angle in degrees (0–359) Float
18 Thing type Integer
19 Thing class String
20 Random integer Integer
21 Random float Float
22 Angle as byte (0–255) Integer
23 Thing radius Integer
24 Thing height Integer
25 PolyObject number Integer
26 Enum choice and flags Integer

Note: UMDF's linedef arguments are all integers, so they can only be set to field types whose base type is integer. Booleans can be represented with a "noyes" or "yesno" enum choice. Since SRB2 uses fixed-point math anyway, I should probably add a field type for fixed-point "pseudo-floats". Strings definitely need their own argument field though.