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

wake up monsters
Status: proof of concept available, uses temporary number 479 for a SR linedef, this is not a final type number choice!

When triggered, actors in tagged sectors are woken up, equivalent to if they heard a sound. Their target is set to the thing which activated the trigger.

Existing implementations
Strife: alarm types

ZDoom: implements strife's alarm types (150:WR Raise Alarm), see NoiseAlert etc.

discussion
what happens if a monsters triggers this, are they targetted by the monsters in the tagged sectors? is this desired?


 * Only players are allowed to trigger alarm lines in Strife. -Quasar (talk) 14:10, 24 November 2017 (CST)

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.)