Doomsday Engine Change Log ========================== Legend: + added, - fixed, * improved/changed Version 1.7.13 -------------- ! Maintenance Release * model offset and scale are interpolated (Model -> Offset XYZ, Model -> Scale XYZ) * overridden model defs are no longer loaded at all (bug 760099) * number of screenshots is not limited to 100 * screenshot file names are selected according to game mode - fixed: semicolon in bindings (key name "smcln") - fixed: music volume = zero prevents songs from changing - fixed: halos flicker sometimes through doors - a shadow is not rendered if it would be above the object - fixed: crash when loading external resources of color-mapped sprites Network: - fixed: player gets stuck in enemies - fixed: player gets stuck in a moving plane (elevator, door) - fixed: crash in clmobj handling - fixed: recording demos with multiple local players - fixed: clientside jumping power, jumping enabled - fixed: player start spot selection (especially TNT/Plutonia) - fixed: mobj Z coordinates were sometimes incorrect on clientside - fixed: server didn't increase client's bandwidth rating, ever - fixed: WAD warning box in Client Setup screen was in the wrong place - fixed: halos weren't always displayed correctly on clientside drD3D: + option -triple: enable triple buffering in fullscreen mode XG: - XG should always be disabled on clientside jDoom: + cvar 'map-door-colors': show colors of locked doors in automap + cvar 'map-door-glow': locked doors have a glow around them (1=normal) * Plutonia/TNT will automatically set rend-sky-full - fixed: bullet puffs in face (bug 740767) - fixed: main menu item spacing too tight - fixed: STARMS was used in the status bar when in deathmatch jHeretic: + cvar 'player-jump-power' jHexen: + cvar 'player-jump-power' Version 1.7.12 -------------- + option -leaveramp: don't reset color settings back to previous values at shutdown + JWADs: IWAD supplements (uses normal WAD loading order) + Data\Graphics directory: Doomsday's graphics resources (UI textures) + cvars 'ui-cursor-width', 'ui-cursor-height': UI mouse cursor size + added new cvar controls to the Control Panel (e.g. multitex, HUD mirror) * the first incarnation of the Doomsday UI theme, "Gradient", was replaced with a much more polished theme, "Plastic" * UI mouse cursor size and movement depend on display resolution * music data will not be cached into the memory zone while loading (large MP3s wasted a lot of space) * paths that contain the base path are normally printed without the base - removed obsolete settings from Control Panel - removed detail texture maximum distance cvar and Control Panel slider - removed cvars 'rend-light-clip', 'rend-light-shrink' - fixed: possible crash in Con_Error() Definitions: + DED version 6: semicolons are optional (the default is 6) + added Defs/Doomsday.ded: include definitions shared by all games + 'Top map', 'Bottom map', 'Side map' added to Light defs and Decoration:Light defs (name of lightmap to use; empty means default, "-" is none) + particle types pt_modelNN: use 3D model ID = "ParticleNN" + particle flags ptf_zeroyaw, ptf_zeropitch, ptf_rndyaw, ptf_rndpitch + 'Frame', 'End frame', 'Spin' added to Generator:Stage + up to 32 sky models can be defined in a Map Info definition + added an ID key to the Model definition * flags can be defined using this syntax: Flags = flag1 | flag2 | flag3; (flag prefixes must be omitted) * Defs/Doomsday.ded is always read first * Flag definitions moved to Defs/Flags.ded * XG definitions moved to Defs/XG.ded * maximum number of submodels is now 8 * Map Info definitions can be copied * 'InFine' is an alternative name for the 'Finale' definition Network: - fixed: server increased a client's bandwidth rating too rapidly Sound: * sounds from PWADs are not replaced with automatic external resources Refresh: + named Model definitions (Model:ID), not assigned to any state + lightmap resources are read from the Data\x\LightMaps directory + texture/flat animation sequences defined using Group defs (Anim.ded) + "tgf_smooth": interpolate between steps in texture/flat animation + particle generator flag "gnf_group": triggered by all in the flat's animation group + particle generator flags "gnf_blendsub", "gnf_blendrsub": subtractive blending for particles + particle generator flags "gnf_blendmul", "gnf_blendimul": normal and inverse multiplicative blending for particles + option -nohighpat: disable high-resolution patches * weapon model skins are precached * texture/flat groups can be used purely for precaching * detail texture contrast is preprocessed: there will be multiple instances of the same texture with different contrast levels (needs a bit more memory but allows faster rendering) * 8-bit particle textures are interpreted as pure alpha data * PCX images aren't loaded redundantly from virtual files - fixed: PWAD test when loading highres flats and patches (-pwadtex) - fixed: particles sliding over ledges - fixed: Generator Center angle (Y) offset was ignored with mobj sources Renderer: + sky models + particle models + blending modes: subtract, reverse subtract, multiply, inverse multiply + cvar 'rend-glow-fog-bright': wall glow brightness in fog + cvar 'rend-model-shiny-multitex': render shiny skins using multitexturing + cvar 'rend-model-mirror-hud': mirror HUD weapon models + cvar 'rend-model-spin-speed': rotation speed for models with "df_spin" + cvar 'rend-dev-wireframe': render player view in wireframe mode + cvar 'rend-dev-freeze': stop updating rendering lists (for debugging) * renderer uses multitexturing for detail textures, dynamic lights, interpolated texture animation and model shiny skins * shiny skins are correctly masked by alpha in main skin * plane glow on models is stronger than before * if multitexturing is available, masked walls will get one dynamic light (previously masked walls were not lit by dynlights) * dynamic light polygons are no longer clipped * calculations to determine surfaces affected by a dynamic light are more accurate (light has a better chance to be visible) * light decoration brightness decreases as surface/view angle grows - removed option -maxor: clipper has now unlimited nodes - fixed: leaking lights (impossible route detection) - fixed: stray pixels along polygon edges in dynamically lit areas - fixed: detail texture blending when fog is enabled - fixed: object shadows weren't affected by fog - fixed: skymask holes in skyfixed sectors - fixed: shiny skins on HUD models - fixed: console text gibberish on the first time the console is drawn - fixed: cvar 'rend-tex' (render with textures) - fixed: shadows fade away smoothly at maximum distance drOpenGL: + support for multitexturing + NV_texture_env_combine4 or ATI_texture_env_combine3 required when rendering dynamic lights with multitexturing + support for SGIS_generate_mipmap + support for EXT_blend_subtract + support for EXT_texture_compression_s3tc + option -notexcomp: disable texture compression + option -novtxar: disable vertex arrays + option -nosgm: disable SGIS_generate_mipmap * vertex arrays are disabled by default if driver's OpenGL version is older than 1.3 (otherwise enabled) * texture compression disabled by default (use -texcomp to enable) drD3D: + support for multitexturing Games: + cvar 'server-game-cheat': allow cheat commands "god", "noclip", "give" in netgames jDoom: + "Patch Replacement" strings (see Defs\jDoom\Values.ded) + cvar 'menu-patch-replacement': enable or disable replacement strings + cvar 'menu-glitter': letters glow as they are typed in + fonts precached during startup + crosshair alpha slider added to the HUD menu + some light decorations (Doom1Lights.ded + BSTONE3, BRICKLIT) * titlescreen sequence defined as an InFine script (ID = "title") * menu text has properly sized capital letters - fixed: intermissions/finales in Plut/TNT jHeretic: + some light decorations (based on Isegrim's defs) * player mobj selector is set to match currently used weapon * titlescreen sequence defined as an InFine script (ID = "title") jHexen: + some light decorations (based on Isegrim's defs) * player mobj selector is set to match currently used weapon * titlescreen sequence defined as an InFine script (ID = "title") InFine: + cmd 'startinf (scriptid)' (and 'stopinf') + gradient rectangles + object rotation (pics, text objects, rectangles) + command "ScaleXY (handle) (x) (y)" + command "Rect (handle) (x) (y) (w) (h)" + command "FillColor (h) (TOP/BOTTOM/BOTH) (r) (g) (b) (a)" + command "EdgeColor (h) (TOP/BOTTOM/BOTH) (r) (g) (b) (a)" + condition "MODE:(game-mode)" + command "ELSE" + command "DO" ... ";" (nestable blocks) + command "PlayDemo (filename)" + command "Cmd (console command)" + command "OnKey (key-ident) (marker)": jump to marker when key pressed + command "UnsetKey (key-ident)" + commands "Events", "NoEvents": enable/disable interactive mode + commands "Trigger", "NoTrigger": enable/disable menu triggering mode * generic object commands: "Del", "X", "Y", "Sx", "Sy", "Scale", "Angle" "ScaleXY", "RGB", "Alpha" * old pic/text commands that should no longer be used: "DelPic", "DelText", "TextRGB", "TextAlpha", "Tx", "Ty", "TSx", "TSy", "TextScale" * InFine can run in overlay mode (e.g. during GS_LEVEL) * InFine states are nested (script -> demo -> script -> demo -> etc.) - fixed: "WaitText" timing with \w, \W, \p, \P - fixed: "SoundAt" volume XG: + line class "ltc_mimic_sector" + new sprefs + cvar 'xg-dev': print XG event messages to the console - fixed: sector floor/ceiling chain touch test Version 1.7.11 -------------- ! Bugfixes Only * revised server delta generation: fixed-size frames, prioritized contents, sounds are stored inside frames (not separate packets), redundant missile coordinates not sent * server refuses connection if new client's ID already in use * revised clientside handling of frames: collision detection for movement prediction, missiles hidden on impact * revised low-level networking: implement confirmed/ordered packets manually, detect duplicates, Huffman encoding (60%-70% compression) + cmd 'huffman': print Huffman efficiency and number of bytes sent * mobj translucency 0-255 (selector still overrides) * mobj floatbobbing is done by engine (clientside), DDMF_BOB added * client is allowed some movement while airborne (easier jumping) * by default, external resources are no longer loaded for textures from PWADs; use the -pwadtex option to change this (cvar 'rend-tex-external-always') * console command line cursor can be moved left and right * default key repeat interval is now 3 tics (was 4) * braces { and } are equivalent to quotes, e.g.: "alias init-map03 {after 1 {warp 5}}" * cmd 'listcmds' prints a description for each command + cmd 'toggle': toggle a cvar's value between zero and nonzero + cmd 'if': execute a command if the condition is true (tests cvar values) * max number of light decorations increased to 16 per texture - fixed: occlusion for planes exactly at eye-Z - fixed: client was sending too much data (now it's about 0.3 KB/s) - included DED files are read immediately after the Include directive has been encountered - fixed: pausing the game also stops spinning models, floatbob - external music was not loaded correctly from virtual files - fixed: clientside mobjs and players on moving planes - fixed: external sound resources reloaded every time the sound starts - fixed: tracking of currently playing sounds - fixed: floorclip values were restricted to 64 in mobj deltas - fixed: client stepup limit is now exactly 24 units - fixed: coord/offset problems if same sprite used in game and HUD - missing upper texture in a skyceiling sector replaced with the backsector's ceiling (was just blank white) - fixed: base path validation (could be missing a slash) - fixed: path of CPHelp.txt was sometimes not translated - fixed: mobj translucency didn't affect the shadow - fixed: incoming message queue protected by a mutex - music is not restarted if it's already playing - fixed: finding model files/skins with base-relative paths jDoom: * savegames stored in game mode specific subdirs (mixups now avoided) + cvar 'view-bob-weapon-switch-lower': if zero, HUD weapon is not lowered during a weapon switch + value 'Weapon Info|*|Static': if nonzero, HUD weapon is not lowered during a weapon switch * game-corpse-time: corpses fade smoothly - fixed: button deactivation sound - fixed: crash when "kill" used when not in a map jHeretic: * savegames stored in game mode specific subdirs (mixups now avoided) * game-corpse-time: corpses fade smoothly - fixed: button deactivation sound - fixed: Speed + Use Artifact made the player jump - fixed: on clientside, wind didn't affect player (e.g. E1M1) jHexen: * savegames stored in game mode specific subdirs (mixups now avoided) + option -savedir: set savegame directory - fixed: polyobj destination/speed for sliding doors (e.g. map05) - fixed: restoring polyobjs and hidden mobjs from saved map - fixed: problem with excessive sound sequence repeat (e.g. map12) - fixed: torch light for remote players - fixed: no mobjs spawned when dedicated server starts - clientside powers were not correctly set to zero at death, map change - clientside Wings of Wrath icon didn't rotate when flying - fixed: dedicated server deadlock when monsters don't find any players - fixed: crash when minotaur vanishes and master is dead - fixed: 'use artifact' sounds not audible on clientside - fixed: crash when "kill" used when not in a map - fixed: screen border flicker in fullscreen mode (again) - fixed: floatbobbing objects go through the floor - Deathkings map36: playerstart group >4 accepted InFine: * server sends condition truth values to clients (secret, leavehub) XG: - when loading a savegame, line activators were not correctly restored drD3D: - fixed a problem with mode selection (refresh rates) Installer: - fixed: pressing Enter after typing a path closed the installer dialog - glBSP run with the -fresh option to avoid bad BSP data Version 1.7.10 -------------- + support for ZIP/PK3 files (no compression!), can be loaded like WAD files (-file, load; no unload, though), contents added to the virtual file hierarchy (package root dir => Doomsday base dir) + after runtime directory has been searched, data files are also searched from the default data directory (e.g. Data\jDoom\): "-file Test.wad" will load Data\jDoom\Test.wad + WAD, LMP, PK3 and ZIP files from the Data\Game\Auto directory are always loaded automatically + WAD/PK3 files can be loaded from virtual files (inside PK3s) + IncludeIf and SkipIf directives can also test for game modes, e.g. "SkipIf Not doom1-ultimate" + light decorations (dynlights on textures/flats), "Decoration" defs + cvar group 'rend-light-decor' + sprite frames can be replaced with external resources (Patches) + raw screens can be replaced with external resources (Patches) + -maxtex option: set maximum texture size ("-maxtex 128") + sound flag 'sf_dontstop' (0x20): sound does not stop even if emitter is destroyed (sound cannot be stopped until it finishes normally) * faster 3D model loading during startup * rend-camera-smooth: Z-movement of planes is also smoothed * default dynlight brightness increased to 0.75 (rend-light-bright) * default halo brightness decreased to 35 (rend-halo-bright) - halo distance measured in 3D: no excess brightness when viewed from above/below - fixed: sprites were sometimes clipped by a sky ceiling - fixed: problems with rend-light-num jDoom: + light decorations for all switches, many textures and some flats of Doom 1 * barrel/rocket explosions continue even after barrel/rocket is gone (barexp uses sf_dontstop) * Pause key is now the default binding for pause (was P) jHeretic: - fixed: interlude screen wouldn't show seconds if they're zero jHexen: * Pause key is now the default binding for pause (was P) - fixed: weapon pieces bob only partially - fixed: screen border flicker in fullscreen mode Version 1.7.9 ------------- + external resource locator (in Data\Game\: Textures\, Patches\, Music\ and Sfx\) with game mode subdirs (see readme) + high-resolution patches (e.g. menu graphics, game fonts, background pictures) + netgame server info includes: game mode (e.g. doom1-ultimate, doom2-plut, hexen), game config, IWAD, PWADs, player names + info about network setup added to cphelp.txt, shows up during setup + cvar 'server-player-limit': maximum number of clients + cvar 'rend-light-wall-angle': intensity of angle-based wall lighting + cvar 'input-mouse-filter': average mouse X/Y axis values + model flag 'df_dim' (0x1000000): model is never rendered fullbright + cmds 'movefloor', 'moveceil', 'movesec': move a sector's plane(s) * low-level networking updated to DirectX 8 * improved network setup GUI * client can only connect to servers in the same game mode * cmd 'net' prints usage info * cvar 'net-ip-port' is the local TCP/IP port * "Filter mouse movement" added to Control Panel's Input page * -nohightex now only affects wall textures and flats * crosshair color alpha (cmd "crosshair color", var "view-cross-a") - fixed: client was able to connect to a server running a different game - fixed: aborted client connection crashed the server - potential problem handling client connections fixed - fixed: fullbrightness didn't affect particles - DirectSound 8: fixed a problem with buffer loading; using -csd should no longer be necessary - Sound definition patching fixed (Ext/Group keys were ignored) - fixed bug 712332: when server pauses a netgame, all clients will pause KickStart: * Cheb's KickStart v2.09 replaces the ancient v1.6 jDoom: + game modes: doom1-share, doom1, doom1-ultimate, doom2, doom2-plut, doom2-tnt + automap added to Options -> Controls (under Misc.) + cvar game-corpse-sliding: corpses slide down stairs and ledges (defaults to zero due to some bad behaviour; e.g. exit room of D2/22) * cvar game-corpsetime renamed to game-corpse-time - fixed bug 734892: sides with bogus sectors - A_Tracer() used to spawn puffs that were identical to bullet puffs, this caused complications with particle generators jHeretic: + game modes: heretic-share, heretic (normal registered), heretic-ext (has episodes 4, 5) jHexen: + game modes: hexen, hexen-dk (Death Kings of Dark Citadel) - fixed: sound sequence delays with repeating sounds (sequence updater didn't get correct information about currently playing sound effects) drOpenGL/drD3D: + -refresh option * closest available refresh rate selected Version 1.7.8 ------------- + new master server mechanism (uses HTTP) + cvar net-master-path (default: "/master.php"): location of the master server at 'net-master-address' (default: "www.doomsdayhq.com") + cmd "net announce": send a server announcement to the master (if server-public is nonzero, announcements are made automatically at two minute intervals) * cvar net-master-port (default: 0): usually zero or 80 * clientside player coords override serverside coords under normal circumstances (maxdif checks removed) * if one part of a psprite is fullbright, the whole psprite will be - fixed: psprites were rendered with depth testing enabled; Doom plasma rifle fire anim was broken - fixed: clientside player animation didn't finish anim sequence - fixed: line flags weren't updated on clientside (e.g. in Hexen map13) - fixed: minor edge artifact with multipart psprites (e.g. in jDoom) jDoom: * lineattack weapons hit planes (pistol, shotguns, chaingun) - fixed: lineattack check for hitting sky planes, skyhack walls - map31 and map32 no longer assumed to exist: Doom2.wad "00f6d407" should work - weapon psprite timings (in Objects.ded) adjusted for super shotgun, rocket launcher: muzzle flash was out-of-sync by 1-2 tics jHexen: - fixed: dedicated server tried to draw teleport gfx and crashed - fixed: scripted + yellow messages not shown on clientside - fixed: client crashes when changing level - fixed: status bar flicker jtNet2: - old master server stuff removed Version 1.7.7 ------------- + switch texture pairs (SW1/SW2) are precached at the same time + "Generator:Stage:Radius rnd": Randomness of particle radius + sound-info shows sound names as well as ID numbers + support for textured particles * flat particles stick to planes - high-resolution flats with 4 channels (alpha) were loaded incorrectly - sector lightlevel overflow in sectordelta (e.g. on jHexen map 26) - alternative texture path must be tried first when loading hires images (-texdir2) jDoom: * cvar player-air-movement: player movement speed while airborne (0-32); use only small values in netgames jHeretic: - blinking statbar borders fixed