Version 1.9.0-beta6
These are the release notes for version 1.9.0-beta6 of the doomsday_engine. Beta 6 represents almost two years' worth of work toward the 1.9 series. A lot has changed under the hood, and there are quite a few visible changes as well. However, our work is still ongoing, so this release unfortunately has some known issues. The biggest is perhaps multiplayer games, which are not working in this release. The next beta is planned to address network game issues only.
Some highlights:
Redesigned, more powerful control bindings subsystem. Axis controls can be bound to player controls in the same way as keys. There is a stack of binding contexts that allows using the same key/control for multiple things depending on the game and UI state (see
listbcontexts:
ccmd).
UI graphics tune-up. A new “busy” mode was added, replacing the old startup screen and progress bars. In the games, fonts are sharpened with HQ2x scaling.
OpenGL rendering plugin integrated into the engine, and support for Direct3D dropped. This eases future development of the renderer significantly.
BSP and gl node builder plugin integrated into the engine. Existing BSP and gl node data present in maps is now ignored, we opt to always build our own.
New Materials system.
Upgrading
If you are upgrading an existing installation of Doomsday, note the following:
clearbindings; defaultbindings
Windows Vista
Any existing Doomsday installation must be fully uninstalled prior to installing this release. The default runtime folder and location where Snowberry saves user profiles has been changed in this release. Doomsday now stores data separately for each user account.
Known problems
Multiplayer games
Networked games are NOT working in this release. You are able to connect to a server but the client is unable to move.
Audio
The audio plugin system is not fully working in this release. Therefore we recommend that you allow Doomsday to use the default audio driver (SDL_mixer), and NOT an alternative plugin such as dsOpenAL and dsDirectSound.
Reported bugs
Fixes
Support for packed sidedefs. This method of storing sidedefs is used to extend the WAD format sidedef limit and at the same time, reduce the size of maps. Both DOOM2:Plutonia and DOOM2:TNT are once again fully playable.
Fatal error when attempting to build sector line and subsector tables for maps with damaged/invalid data structures (e.g. STARGATE.wad
http://sourceforge.net/tracker/index.php?func=detail&aid=1714610&group_id=74815). Relationships between subsectors/segs/sidedefs/linedefs read from the map data lumps are not assumed to be valid. Instead, determine the relationships at load time and repair where possible else output a warning and abort the map load attempt gracefully.
Infinite loop when attempting to load 2002ado.zip::E3M5 caused by an oversight in the node builder.
Renderer
Numerous lighting inconsistencies between different world surfaces and objects.
Player's in-void status was not reset on map load. This led to HOM in the sky until the player moved, if said player was in the void at the end of the last map.
Algorithm used for determining the position of automatically calculated lights and halos on sprites was broken. This resulted in halos which suggested the light origin was always in the top left quarter of the sprite.
Filters and special filter drawing, affecting the view border in all games.
Emulate AASTINKY/AASHITTY (etc) texture handling used for DOOM.exe renderer effects.
-
-
-
-
Halo offset calculated incorrectly in LO_AddLuminous.
Sky top colour was always determined from the original sky texture regardless whether a texture replacement was in use.
Dynamic lights for palette-translated sprites were coloured according to the original (un-translated) sprites.
High resolution textures/flats/patches/model skins not affected by
rend-tex-gamma.
Drawing Models whose skin is determined by cycling through a range over time, would continue animating with the client paused.
When drawing the console, if a background
material is set, it would also be used on both the border and the shadow.
Memory leak in BlackOutlines().
Audio
MIDI music broken when playback is attempted using the sdl_mixer driver.
Subsector reverb values were calculated incorrectly (always indexed using a base of zero instead of the subsector→firstseg offset).
Environmental audio effects were not affected by changes to the world when in-game.
Definitions
Console
Dedicated console
Misc
Segmentation violation when attempting to use the
add/
sub ccmds without all needed paramaters.
Windows
Unix
Common code library
Automap
Issues with marked points. Now rotated with the map window and not the view frame, are always drawn at a readable scale.
Free panning did not respect the rotation angle and instead used the untransformed X and Y world axes.
-
UI
XG
InFine
jDoom
-
-
-
-
Any mobj flagged with MF_SKULLFLY would stop moving if their trajectory would intercept another mobj flagged with MF_SPECIAL.
Fatal error when attempting to use the console command
give when not in-game.
-
Infinite loop when the player has no ammo of any kind and all player weapons require ammo.
Blood spawned by P_DamageMobj even if no damage actually inflicted.
Voodoo dolls effecting the “real” player's view bobbing.
Able to shoot sky floors with lineattacks.
Gap in the statusbar when icarus.wad is played and statusbar is not opaque (due to the ST_ARMS patch being smaller than the used in the IWADs).
ST_ARMS positioning issues with the statusbar when playing the HACX mod.
Missing skull cursor in the “ReadThis” screens.
Attempts to save the game when a map is not loaded would result in the user being told they can't save because they are dead. Instead, display a more accurate/appropriate message.
-
Attempting to commit suicide while already dead would ask the player to confirm, even though as they were already dead, suicide is not an option.
-
Unix
jHeretic
-
Infinite loop when the player has no ammo of any kind and all player weapons require ammo.
Fatal error when attempting to use the console command
give when not in-game.
Blood spawned by P_DamageMobj even if no damage actually inflicted.
-
The Blaster missile was not stored to saved games.
Able to shoot sky floors with lineattacks.
Attempts to save the game when a map is not loaded would result in the user being told they can't save because they are dead. Instead, display a more accurate/appropriate message.
-
Attempting to commit suicide while already dead would ask the player to confirm, even though as they were already dead, suicide is not an option.
-
Unix
jHexen
Mobj vs polyobject collision detection. In beta5(.1) it is possible to walk right through them once they have moved from their starting position.
-
Clerics could not be damaged by their own throwing bombs.
Infinite loop when the player has no ammo of any kind and all player weapons require ammo.
Fatal error when attempting to use the console command
give when not in-game.
Blood spawned by P_DamageMobj even if no damage actually inflicted.
After map load, the player's ready weapon would lower and then raise again.
The Mage's Wand Missile and the Cleric's Flame Missile not stored to saved games.
Able to shoot sky floors with lineattacks.
Attempts to save the game when a map is not loaded would result in the user being told they can't save because they are dead. Instead, display a more accurate/appropriate message.
-
Attempting to commit suicide while already dead would ask the player to confirm, even though as they were already dead, suicide is not an option.
-
dsDirectSound
Changes
All game object origins, momentums and dimensions are now stored and manipulated with host system, floating point precision.
Aureal 3D audio no longer supported, (via the old a3d plugin).
Revised method for handling animated
textures and
flats to support the original DOOM engine behaviour.
-
DMU
Runtime aliases for DMU properties have been removed as they were an unnecessary complication.
It is now possible to target a property of another DMU object that by inference, can be reached from the DMU object passed without explicitly specifying so. For example, if the referenced object is of type DMU_SUBSECTOR the properties of DMU_SECTOR are available without having to first retrieve either a ptr or index to the sector followed by a second DMU call to set/get the required property.
Polyobjects are no longer accessed through DMU. Polyobjects are now public objects similar to mobjs.
Revised DMU property names.
bsp data is no longer required/used by the map loader. New BSP data will be generated automatically by the engine.
GL node data is now required in order to load a map and will be generated automatically by the engine. The
cvar,
bsp-build has been removed also.
It is now possible to load a map with zero
things. In this instance, a new player thing will be added to the map, located at [0, 0] on the world grid. In addition, the player will be changed to a camera automatically.
Renderer
open_gl renderer moved into the engine.
-
Abstract flat management. Lump indices are no longer used as identifiers anywhere.
-
Now fully dynamic and updates in response to map geometry changes whilst in-game.
Improved shadow edge generation. Now handles complex geometry much better, greatly reducing the frequency of glitches and other visual artifacts.
-
Decoration origins are now plotted using a new three dimensional approach regardless of the surface they are attached to.
Greatly improved performance in large maps by caching plotted decorations and maintaining lists of surfaces with decorations.
Potentially allows for any object to be used as a decoration.
Added lightlevel range limits to
decoration definitions.
Decoration origins for the current renderframe now generated once and used for the viewports of all local players.
Redesigned
lumobj management (dynamic lights).
lumobjs are now projected using a new three dimensional approach regardless of the surface they are attached to.
Revised memory management. Release all memory tied up in unused lumobjs when the current map is left.
Removed fixed limit on the maximum number of visible lumobjs to be depth sorted.
lumobjs for the current renderframe now generated once and used for the viewports of all local players.
Lighting of all world surfaces and objects is now deferred until just before they are sent to the render lists.
-
Changed maximum
decoration distance from viewer to 2048 world units (was 1500).
-
-
Renamed
cvar “rend-glow-fog-bright” to “rend-light-fog-bright”.
-
Revised “torch light” works with any RGB colour rather than just white light.
-
Changed, thing shadows are no longer drawn if the world is being drawn fully bright.
Changed, thing shadows are no longer drawn if the surface they would appear on is glowing.
Changed, it is now possible to enable/disable plane glows and dynamic lights independently.
Changed, the lightgrid debug display is no longer flipped on the X and Y axes.
Changed, always announce missing models in the console (was verbose >= 1).
Misc
User interface
Windows
The separate startup window containing messages printed during engine launch was removed.
Numerous improvements to dedicated console, now behaves similarly to the “normal” Doomsday console (but in a text-mode console).
Mac OS X
Common code library
Automap
Lists introduced for faster rendering.
All automap values are now extrapolated where suitable (view position, view rotation, view scale, window dimensions plus more).
Automap now fades in/out smoothly when activated/deactivated.
-
Removed the
blockmap grid display. The engine now has a built-in blockmap viewer for debugging purposes making the old display redundant.
Chat
UI
-
Changed
menu-fog:
cvar Mode zero (o) now disables the menu fog. Indices for the other modes incremented by one.
XG
jDoom
Greatly improved precaching.
Various problems with
voodoo_dolls not working as expected.
Logic for mobjs to avoid dropoffs incorrect.
If a mobj was damaged by a camera player, every time it entered it's pain state it would rotate towards the player.
Added all
values currently available to values.ded
Armour collectables (not the armour bonus) no longer receive lights and halos by default.
Removed fixed limit on track numbers playable via the IDMUS cheat. Now all music tracks are playable, even ones added by addons.
A dead player can now instigate the “reborn” process by using the “attack” control(s) in addition to “use”.
-
conbg:
ccmd now supports the paramaters “off” and (alias) “none” - remove the current background.
jHeretic
-
Logic for mobjs to avoid dropoffs incorrect.
If a mobj was damaged by a camera player, every time it entered it's pain state it would rotate towards the player.
A dead player can now instigate the “reborn” process by using the “attack” control(s) in addition to “use”.
-
conbg:
ccmd now supports the paramaters “off” and (alias) “none” - remove the current background.
The lump
AUTOPAGE is no longer required.
jHexen
-
Logic for mobjs to avoid dropoffs incorrect.
If a mobj was damaged by a camera player, every time it entered it's pain state it would rotate towards the player.
A dead player can now instigate the “reborn” process by using the “attack” control(s) in addition to “use”.
-
conbg:
ccmd now supports the paramaters “off” and (alias) “none” - remove the current background.
-
New features
Moved
bsp and
glnode generation entirely into the engine. A bsp and glnode dataset will be generated automatically for all maps.
Moved
blockmap management entirely into the engine. A blockmap will be generated automatically for all maps. Redesigned interfaces for the various look up routines (such as “line of sight” and “within range of”) to completely isolate from the games.
Multiple local players.
API
Implemented support for engine-side console command (
ccmd) parameter validation and overloading. This improves robustness, security and simplifies implementation when multiple versions of a command are needed for similar functionality. Currently, the old style of (local) per-ccmd parameter management can be requested by specifying a NULL parameter list when registering (note: use by remote client is disabled with this method). The non-engine-validated method should be considered depreciated.
Abstract
materials system wraps
texture,
flat and
sprite management. All texture types can now be used interchangeably (flats on walls, textures on floors etc). In addition, texture and flat animation sequences (defined via
group definitions) can now be mixed freely, allowing a single sequence to blend between any texture types freely (e.g. flat to texture to sprite to flat).
Map building
API allows
plugins to construct new maps dynamically at runtime.
Audio
DMU
Video
Renderer
-
-
-
Added multiplicative blending mode for “torch light” (brightens surfaces as the viewplayer approaches them).
Added short, two render frame delay to changes to the “torch light”. This avoids the flickering and potential y-shear artefacts when vsync is disabled.
Added interpolated smooth scrolling for moving surface materials.
-
-
-
-
-
-
Definitions
-
Added
sky definitions. Rather than define the sky properties for every map, each time directly in a
map_info_ded_ definition, instead; use a Sky definition, giving it a unique ID which is then used in the Map Info definition to link the two. This allows mod authors to patch just the Sky definitions without needing to touch/create Map Infos.
detail and
reflection definitions can now specify flags governing when the definition should be used.
texture_environment:Flat: Surfaces in a sector using the specified
flat will affect the environmental audio effects heard within that sector.
File system
Misc
-
New
blockmap display for debug purposes:
Windows
Common code library
Save system
A new common save system based on that used previously by
j_doom.
Automap
-
Added a parallax scrolling background like in original
heretic/
hexen.
-
-
-
Added
map-open-timer:
cvar Number of seconds taken to open/close the automap (default is 0.3 seconds).
Added
map-customcolors:
cvar Set behaviour of when to use the custom automap colors; 0=Never, 1=Automatically disable the user's defaults if the mod being played includes a custom
palette, 2=Always.
Added
map-mobj-r/g/b:
cvar Set a custom color for things displayed in automap when the reveal all cheat is used.
Misc
UI
XG
jDoom
Crosshair vitality. Colour the crosshair according to how near the player is to death. Available via the in-game HUD options menu and the
view-cross-vitality:
cvar.
Added
hud-keys-combine:
cvar 1= When drawing the fullscreen HUD, only draw one icon per key colour regardless whether the player has multiple keys/cards of the given colour (e.g. if the player has both a red key card and a red skull key, only one icon will be drawn). 0= Draw all owned keys.
Enhanced
give:
ccmd Can now be used to give individual ammos, keys and weapons (e.g., “give w1k2” will give to the console player weapon 1 and key 2). Health can also be given (e.g., “give h”).
jHeretic
Crosshair vitality. Colour the crosshair according to how near the player is to death. Available via the in-game HUD options menu and the
view-cross-vitality:
cvar.
Enhanced
give:
ccmd Can now be used to give individual ammos, keys and weapons (e.g. “give w1k2” will give to the console player weapon 1 and key 2).
-
-
jHexen