User:Jdowland/boom++

= Boom++ Specification =

This is a draft specification for a set of extended features for Boom-compatible source ports.

rationale
Boom has served as a very successful de-facto standard set of features for doom engines, being adopted by the majority of advanced engines in use today. However, it has its limitations and modern day mappers are increasingly hitting up against them.

The intention of this spec is to outline some simple extensions to the Boom feature set that could be easily implemented by source ports and form a newer common standard.

ports planning to support this spec
Insert ports here! (we hope at least: gzdoom, prboom+, eternity; hopefully also 3DGE, doom legacy)

specification development
This specification is edited by ($INSERT_EDITOR(S)_HERE).

Discussion about the specification takes place in this doomworld thread.

sprites/graphics

 * 16 angle rotations (from the looks of it already supported by PrBoom+, definitely supported in ZDoom and I believe also in Eternity)
 * a well defined way to make hires replacement (definitely present in PrBoom+ and ZDoom, haven't checked Eternity for it)

generalised lighting
(https://gist.github.com/haleyjd/aa2220e680389d7dce88410630e73abf)

New projectile types
??

UMAPINFO
??

DECORATE lite
??

new Linedef types

 * more scrollers detail please!
 * simple downwards scroller: use y texture offset for scroll speed (so x remains for x offset alignment)
 * a 242-style effect which doesn't invert the purpose of the sector/control sector floor/ceiling textures, and is visible if the player is outside the sector, too (how Legacy used to incorrectly render it, and how Eternity currently incorrectly renders it, iirc)
 * (static) Apply front sidedef offsets to tagged sector/linedef upper tex
 * (static) Apply front sidedef offsets to tagged sector/linedef lower tex
 * Strife's animated doors. (can be taken from ZDoom.)

insta kill lines

 * WR - instant death on passing through

No damage to player
invincible, showing godmode eyes in hud

Kill anything that touches sector floor
Status: proof-of-concept available, uses interim type value 4096, this is not a final value!

For void deaths etc.

To affect players and monsters.

Deals 999 damage to players or 4*actor's current health per tic to any actor within the tagged sectors.

existing implementations
Strife: sector type 115, deals 999 damage to player on next tic, does not impact monsters.

ZDoom: supports Strife's type 115 for hexen format maps only.

Eternity: ? (couldn't determine from brief scan over eternity wiki)

discussion
What kind of death? normal or violent or gibbed? Fade to black? red? Instant death or on the damaging-sector timetable?

sector grouping
grouped sector for special action (use to make multiple sectors behave the same - ie: multi-sector lift/door or crusher. If one sector of the group is blocked from moving, ll grouped sectors are also blocked). Grouping is done using the tag value.

states
More states! [ ideally: we cargo-cult existing state table extensions from an existing port such as doom retro ]

Out of scope features
The following objectives are out of scope for this effort


 * we are not planning to change the level format
 * we are not planning to define a new scripting language

The following features have been discussed and declared out of scope for this effort. Please do not waste time in the thread discussing them further.


 * a (new) embedded scripting language
 * TRIG-TAG stuff? (editor's note: I haven't kept up on this suggestion.)