mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
273 lines
13 KiB
Text
273 lines
13 KiB
Text
===============================================================================
|
|
Universal Doom Map Format - Ring Racers extensions v1.0 - 20.09.2024
|
|
|
|
Copyright (c) 2024 Sally Cochenour.
|
|
Copyright (c) 2024 Kart Krew Dev.
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under the terms of the GNU Free Documentation License, Version 1.2
|
|
or any later version published by the Free Software Foundation;
|
|
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
|
|
|
|
===============================================================================
|
|
|
|
This document serves to only specify changes that "Dr. Robotnik's Ring Racers"
|
|
makes to the base UDMF specification.
|
|
|
|
=======================================
|
|
I. Grammar / Syntax
|
|
=======================================
|
|
|
|
No changes were made.
|
|
|
|
=======================================
|
|
II. Implementation Semantics
|
|
=======================================
|
|
|
|
------------------------------------
|
|
II.A : Storage and Retrieval of Data
|
|
------------------------------------
|
|
|
|
No changes were made.
|
|
|
|
-----------------------------------
|
|
II.B : Storage Within Archive Files
|
|
-----------------------------------
|
|
|
|
Between the TEXTMAP and ENDMAP lumps, Ring Racers supports the following
|
|
additional lumps:
|
|
|
|
BEHAVIOR = Compiled ACS code.
|
|
ZNODES = Compiled extended / GL friendly nodes. These are required.
|
|
PICTURE = A Doom graphic lump, expected to be 320x200. Intended to be a
|
|
screenshot of the map itself. This is used by the game for level
|
|
select menus.
|
|
MINIMAP = A Doom graphic lump, expected to be 100x100. Intended to be a
|
|
an overview of the map. This is used by the game for the minimap
|
|
on-screen HUD.
|
|
ENCORE = A Doom flat lump, expected to be 16x16. Describes a color remap
|
|
palette to use in Encore Mode.
|
|
TWEAKMAP = A Doom flat lump, expected to be 16x16. Describes a color remap
|
|
palette to use outside of Encore Mode.
|
|
|
|
Any lumps not listed or specified in the original document will be ignored by
|
|
the game. In particular, the "SCRIPTS" lump is considered to be ACS source
|
|
code, and is garantueed to be ignored by the engine.
|
|
|
|
--------------------------------
|
|
II.C : Implementation Dependence
|
|
--------------------------------
|
|
|
|
Ring Racers does not aspire for Doom backwards compatibility, thus it does not
|
|
support any of the namespaces in the original document, and only implements
|
|
its own: "ringracers". Any maps not using the "ringracers" namespace is
|
|
considered unsupported.
|
|
|
|
=======================================
|
|
III. Standardized Fields
|
|
=======================================
|
|
|
|
Ring Racers' namespace implements the following additional fields:
|
|
|
|
version = <integer>; // Specifies the map format version.
|
|
// This is used for resolving backwards compatibility issues.
|
|
|
|
// Note that this doesn't map directly to specification version;
|
|
// it means behavior of an already existing field or action special
|
|
// was changed.
|
|
|
|
// 0 / default - RR indev
|
|
// 1 - RR v2.0, spec v1.0
|
|
// 2 - RR v2.4, spec v1.0
|
|
|
|
linedef
|
|
{
|
|
moreids = <string>; // Additional IDs, specified as a space separated list of numbers (e.g. "2 666 1003 4505")
|
|
|
|
arg5 = <integer>; // Argument 5. Default = 0.
|
|
arg6 = <integer>; // Argument 6. Default = 0.
|
|
arg7 = <integer>; // Argument 7. Default = 0.
|
|
arg8 = <integer>; // Argument 8. Default = 0.
|
|
arg9 = <integer>; // Argument 9. Default = 0.
|
|
|
|
stringarg0 = <string>; // String argument 0. This replaces usage of 'arg0' when specified.
|
|
stringarg1 = <string>; // String argument 1. This replaces usage of 'arg1' when specified.
|
|
|
|
alpha = <float>; // Transparency value of the mid-textures. Default = 1.0.
|
|
renderstyle = <string>; // The rendering mode to use for the mid-textures.
|
|
// Can be "translucent", "add", "subtract", "reversesubtract", "modulate", or "fog".
|
|
// Default = "translucent".
|
|
|
|
// The following flags default to false.
|
|
blockplayers = <bool>; // true = line blocks players.
|
|
skewtd = <bool>; // true = upper and lower textures are skewed to match slopes.
|
|
noskew = <bool>; // true = mid-textures are not skewed to match slopes.
|
|
midpeg = <bool>; // true = invert mid-texture unpegged behavior.
|
|
midsolid = <bool>; // true = mid-texture has collision.
|
|
wrapmidtex = <bool>; // true = mid-textures are wrapped.
|
|
nonet = <bool>; // true = special is disabled in networked multiplayer games.
|
|
netonly = <bool>; // true = special is only enabled in networked multiplayer games.
|
|
notbouncy = <bool>; // true = disable bouncing collision.
|
|
transfer = <bool>; // true = use FOF transfer properties effect.
|
|
}
|
|
|
|
sidedef
|
|
{
|
|
repeatcnt = <integer>; // Number of times to mid-texture wrap. Default = 0.
|
|
}
|
|
|
|
vertex
|
|
{
|
|
zfloor = <float>; // The floor height at this vertex, for vertex slopes.
|
|
zceiling = <float>; // The ceiling height at this vertex, for vertex slopes
|
|
}
|
|
|
|
sector
|
|
{
|
|
lightfloor = <integer>; // The floor's light level. Default is 0.
|
|
lightceiling = <integer>; // The ceiling's light level. Default is 0.
|
|
|
|
lightfloorabsolute = <bool>; // true = 'lightfloor' is an absolute value. Default is
|
|
// relative to the owning sector's light level.
|
|
lightceilingabsolute = <bool>; // true = 'lightceiling' is an absolute value. Default is
|
|
// relative to the owning sector's light level.
|
|
|
|
moreids = <string>; // Additional IDs, specified as a space separated list of numbers (e.g. "2 666 1003 4505")
|
|
|
|
xpanningfloor = <float>; // X texture offset of floor texture, Default = 0.0.
|
|
ypanningfloor = <float>; // Y texture offset of floor texture, Default = 0.0.
|
|
|
|
xpanningceiling = <float>; // X texture offset of ceiling texture, Default = 0.0.
|
|
ypanningceiling = <float>; // Y texture offset of ceiling texture, Default = 0.0.
|
|
|
|
rotationfloor = <float>; // Rotation of floor texture in degrees, Default = 0.0.
|
|
rotationceiling = <float>; // Rotation of ceiling texture in degrees, Default = 0.0.
|
|
|
|
floorplane_a = <float>; // Define the plane equation for the sector's floor. Default is a horizontal plane at 'heightfloor'.
|
|
floorplane_b = <float>; // 'heightfloor' will still be used to calculate texture alignment.
|
|
floorplane_c = <float>; // The plane equation will only be used if all 4 values are given.
|
|
floorplane_d = <float>;
|
|
|
|
ceilingplane_a = <float>; // Define the plane equation for the sector's ceiling. Default is a horizontal plane at 'heightceiling'.
|
|
ceilingplane_b = <float>; // 'heightceiling' will still be used to calculate texture alignment.
|
|
ceilingplane_c = <float>; // The plane equation will only be used if all 4 values are given.
|
|
ceilingplane_d = <float>;
|
|
|
|
friction = <float>; // Sector's friction. Default = 0.90625.
|
|
gravity = <float>; // Sector's gravity multiplier. Default = 1.0.
|
|
damagetype = <string>; // Damage inflicted by the sector.
|
|
// Can be "None", "Generic", "Lava", "DeathPit", "Instakill", or "Stumble".
|
|
// Default = "None".
|
|
|
|
action = <integer>; // Sector action, same as line special. Default = 0.
|
|
arg0 = <integer>; // Argument 0. Default = 0.
|
|
arg1 = <integer>; // Argument 1. Default = 0.
|
|
arg2 = <integer>; // Argument 2. Default = 0.
|
|
arg3 = <integer>; // Argument 3. Default = 0.
|
|
arg4 = <integer>; // Argument 4. Default = 0.
|
|
arg5 = <integer>; // Argument 5. Default = 0.
|
|
arg6 = <integer>; // Argument 6. Default = 0.
|
|
arg7 = <integer>; // Argument 7. Default = 0.
|
|
arg8 = <integer>; // Argument 8. Default = 0.
|
|
arg9 = <integer>; // Argument 9. Default = 0.
|
|
stringarg0 = <integer>; // String argument 0. This replaces usage of 'arg0' when specified.
|
|
stringarg1 = <integer>; // String argument 1. This replaces usage of 'arg1' when specified.
|
|
|
|
lightcolor = <integer>; // Sector's light color as RRGGBB value. Default = 0x000000.
|
|
lightalpha = <integer>; // Sector's light color alpha value. Default = 25.
|
|
fadecolor = <integer>; // Sector's fog color as RRGGBB value. Default = 0x000000.
|
|
fadealpha = <integer>; // Sector's fog color alpha value. Default = 25.
|
|
fadestart = <integer>; // Sector's fog start distance. Default = 0.
|
|
fadeend = <integer>; // Sector's fog end distance. Default = 31.
|
|
|
|
// The following flags default to false.
|
|
colormapfog = <bool>; // true = render transparent planes at light level instead of fullbright
|
|
colormapfadesprites = <bool>; // true = fog color affects fullbright sprites
|
|
colormapprotected = <bool>; // true = colormap cannot be changed at run-time
|
|
|
|
flipspecial_nofloor = <bool>; // true = plane touch specials aren't ran when on the floor
|
|
flipspecial_ceiling = <bool>; // true = plane touch specials are ran when on the ceiling
|
|
triggerspecial_touch = <bool>; // true = specials are ran when touching edges of sector
|
|
triggerspecial_headbump = <bool>; // true = plane touch specials are ran when touching the opposite plane than gravity
|
|
invertprecip = <bool>; // true = precipitation spawning rules are inverted
|
|
gravityflip = <bool>; // true = flip gravity of objects in this sector
|
|
heatwave = <bool>; // true = add heat wave screen effect
|
|
noclipcamera = <bool>; // true = camera is not blocked by this sector
|
|
ripple_floor = <bool>; // true = add ripple effect to floor
|
|
ripple_ceiling = <bool>; // true = add ripple effect to ceiling
|
|
invertencore = <bool>; // true = encore remap rules are inverted
|
|
flatlighting = <bool>; // true = directional lighting is forced off
|
|
forcedirectionallighting = <bool>; // true = directional lighting is forced on
|
|
nostepup = <bool>; // true = objects can't step up
|
|
doublestepup = <bool>; // true = objects have increased step up
|
|
nostepdown = <bool>; // true = objects can't step down
|
|
cheatcheckactivator = <bool>; // true = players activate cheat checks when in this sector
|
|
exit = <bool>; // true = players finish match when entering sector
|
|
deleteitems = <bool>; // true = items instantly explode when entering sector
|
|
fan = <bool>; // true = players are propelled upwards in this sector
|
|
zoomtubestart = <bool>; // true = sector is start of a zoom tube
|
|
zoomtubeend = <bool>; // true = sector is end of a zoom tube
|
|
|
|
repeatspecial = <bool>; // true = repeatable action
|
|
continuousspecial = <bool>; // true = action is executed every game tick
|
|
playerenter = <bool>; // true = player activates when entering
|
|
playerfloor = <bool>; // true = player activates when touching floor
|
|
playerceiling = <bool>; // true = player activates when touching ceiling
|
|
monsterenter = <bool>; // true = enemy activates when entering
|
|
monsterfloor = <bool>; // true = enemy activates when touching floor
|
|
monsterceiling = <bool>; // true = enemy activates when touching ceiling
|
|
missileenter = <bool>; // true = items / projectiles activate when entering
|
|
missilefloor = <bool>; // true = items / projectiles activate when touching floor
|
|
missileceiling = <bool>; // true = items / projectiles activate when touching ceiling
|
|
}
|
|
|
|
thing
|
|
{
|
|
pitch = <integer>; // Pitch of thing in degrees. Default = 0 (horizontal).
|
|
roll = <integer>; // Pitch of thing in degrees. Default = 0 (horizontal).
|
|
|
|
scalex = <float>; // Vertical visual scale on thing. Default = 1.0.
|
|
scaley = <float>; // Horizontal visual scale on thing. Default = 1.0.
|
|
scale = <float>; // Vertical and horizontal visual scale on thing. Default = 1.0.
|
|
|
|
mobjscale = <float>; // Physical scale on thing. Default = 1.0.
|
|
|
|
foflayer = <integer>; // Which FOF is treated as the base floor/ceiling.
|
|
// This changes what 'height' is relative to.
|
|
// Default = 0, for no FOF.
|
|
|
|
// Action special arguments
|
|
arg5 = <integer>; // Argument 5. Default = 0.
|
|
arg6 = <integer>; // Argument 6. Default = 0.
|
|
arg7 = <integer>; // Argument 7. Default = 0.
|
|
arg8 = <integer>; // Argument 8. Default = 0.
|
|
arg9 = <integer>; // Argument 9. Default = 0.
|
|
|
|
stringarg0 = <string>; // String argument 0. This replaces usage of 'arg0' when specified.
|
|
stringarg1 = <string>; // String argument 1. This replaces usage of 'arg1' when specified.
|
|
|
|
// These arguments modify object behavior on a per-type basis.
|
|
// Not to be confused with action special arguments.
|
|
thingarg0 = <integer>; // Argument 0. Default = 0.
|
|
thingarg1 = <integer>; // Argument 1. Default = 0.
|
|
thingarg2 = <integer>; // Argument 2. Default = 0.
|
|
thingarg3 = <integer>; // Argument 3. Default = 0.
|
|
thingarg4 = <integer>; // Argument 4. Default = 0.
|
|
thingarg5 = <integer>; // Argument 5. Default = 0.
|
|
thingarg6 = <integer>; // Argument 6. Default = 0.
|
|
thingarg7 = <integer>; // Argument 7. Default = 0.
|
|
thingarg8 = <integer>; // Argument 8. Default = 0.
|
|
thingarg9 = <integer>; // Argument 9. Default = 0.
|
|
thingstringarg0 = <integer>; // String argument 0. This replaces usage of 'thingarg0' when specified.
|
|
thingstringarg1 = <integer>; // String argument 1. This replaces usage of 'thingarg1' when specified.
|
|
|
|
// Following flags default to false.
|
|
flip = <bool>; // true = object has reversed gravity
|
|
}
|
|
|
|
=======================================
|
|
Changelog
|
|
=======================================
|
|
|
|
1.0: 20.09.2024
|
|
- Initial document created.
|