*********************-= Team Eternity Presents =-************************* The Eternity Engine Version: 3.29 Release: Public Beta 3 Coded by: James "Quasar" Haley Based on SMMU - "Smack My Marine Up" by Simon "Fraggle" Howard Special Thanks To: Lee Killough, Matt Denham, Aurikan, DooMWiz, Colin Phipps, Fraggle, Nemesis, Carnevil, Randy Heit, SoM, and all members of Team Eternity This source port makes use of portions of code *inspired* by Raven Software's Heretic and Hexen. ************************************************************************** DISCLAIMER: This software is covered by NO WARRANTY, implicit or otherwise, including the implied warranties of merchantability and fitness for a particular purpose. The authors of this software accept no responsibility for any ill effects caused by its use and will not be held liable for any damages, even if they have been made aware of the possibility of these damages. This version of the Eternity Engine is a *PUBLIC BETA* and, despite our best efforts to ensure it functions properly, may contain some bugs that could cause undesired behavior during game play. If the game should crash or malfunction during operation, it is requested that the user record the nature and circumstances of the crash and attempt to isolate the cause of the crash, and report it to the author at the following email address: haleyjd@hotmail.com Bug reports and feature requests will be appreciated. Please see the end of this document for information on bugs fixed in this version, and in bugs we already know about that haven't been fixed yet. **** FEATURES **** Eternity is the newest source port to inherit the banner of BOOM. Descended from MBF, it attempts to carry on the effort to put editability, reliability, and compatibility FIRST. From SMMU it also gains the momentum to give the player new options rather than dictate DOOM purity. While Eternity lacks certain "snazz" features such as sloping floors, room- over-room, and OpenGL graphics, we feel it more than makes up for them in what it DOES have. Eternity includes FULL BOOM compatibility, as well as most features added in MBF and SMMU (exceptions include MBF's beta emulation support which is not included, and SMMU v3.30's thing script area). In addition, Eternity adds many more, including these: * TerrainTypes Effects that can be triggered by an object hitting the floor. These are editable by the user and can be associated with any flat. The TerrainEd utility can be used to generate a TERTYPES lump which can be inserted into your wad. * New Thing Flags Multiple new effects can be achieved by placing flags in the Bits2 field of things in a DeHackEd or BEX patch. These flags are covered in ETCDEH.TXT. * Helper Specification By using a [HELPER] block in a DeHackEd or BEX file you can easily specify the type of helper creature the player has when using the -dogs command-line parameter. * New Code Pointers, Frames, and Things Eternity adds dozens of code pointers, things, and frames for use in DeHackEd that can make DeHackEd possibilities expand, including the StartScript pointer which allows things to call FraggleScript code, allowing the author to make his own effects from scratch. The possibilities here are endless! * Extensions to FraggleScript Eternity includes a large and growing number of features that extend the FraggleScript scripting language. Up to 256 scripts can now be defined for each level, things have access to scripts via the StartScript pointer, numerous new functions for all types of purposes exist, including the new FraggleScript heads-up pic display inspired by SoM's DOOM Legacy implementation. * Custom Sound Substitution Per Level Through the SMMU map header information, Eternity can specify custom sounds for environmental actions independently for each level. This allows levels of multiple themes to co-exist in the same TC or megawad without need for large clumsy lumps of data. * Double Skies and Lightning Eternity has special features for skies including double skies which allow one sky to be drawn transparently on top of another and allowing both to scroll without use of scrolling linedefs, and lightning, which when enabled, causes flashes of light and appropriate sounds in all sky sectors on a level. * Full Keybinding System Based on but more powerful than SMMU v3.30's keybinding system, Eternity can rebind most keys in the game (those which are not dynamically bindable can still be set through the config file). KEYS.CSC file contains default bindings and can be edited by the user if desired. * Bug Fixes This port has addressed most known issues in SMMU v3.21, as well as many bugs from MBF and even original DOOM. This includes all of the fixes from Colin Phipps' PRBoom port, which enable more robust demo compatibility and better memory usage. I'm certain to have left out some cool things, so check all the editing docs for more information! **** Features New to Version 3.29 Public Beta 3 **** These include some of the major features added in the latest version: * User-specifiable Console Scripts Up to two user console scripts can be specified in the configuration file, and will be auto-executed before the start of the game. This allows you to select key bindings and game variable settings precisely, based on your current configuration. * Lava TerrainType Burn, baby, burn! * Dormant Mapthing Flag Similar to the flag in Hexen, things in Eternity can now be made dormant at map startup. They will remain in their spawn state and will be invincible until a script wakes them up with the new objawaken() function. * More FraggleScript Extensions else and elseif statements are now available, the binary NOT operator (~) has been implemented, and more. **** COMING SOON **** These are features planned to debut in future versions of the Eternity Engine: * Priority * * Sound sequences * Dialog sequences * Extended map format - ExtraData * More TerrainTypes, including a scriptable type for max customizability * Long-Term Goals * * WINDOWS SUPPORT! * Polyobjects * Fully-functioning Hub System (currently disabled due to bugs, sorry) * Special Heretic Edition * Fully-functioning network code (currently broken, see below) **** Revision History **************************************************** 3.29 Public Beta 3 05/10/01 * Fixed a large number of bugs, added several interesting features. See bug list below, and the changelog, for more information. 3.29 Public Beta 2 01/09/01 * Fixed mouse buttons - problem was leftover code in I_GetEvent() that caused the mouse button variables to never be asserted - code was unreachable because of an assignment of the variable buttons to lastbuttons. 3.29 Public Beta 1 01/08/01 * Initial Release **** Bugs Fixed, Known Issues ******************************************** Bugs fixed in 3.29 Public Beta 3: + 640x400 non-pageflipped video mode is now usable + Console checks for null strings before calling standard C functions + Console no longer writes text off the right side of the screen + FraggleScript fixed variables are no longer chopped to 23 bits in conversions + 272 WR Start Script moved to 280 to deconflict with MBF reverse sky transfer line type + Floors will not move in old demos if monsters on them have their heads stuck in the ceiling (demo compatibility fix from prboom) + Heads-up text string widths are now properly calculated, fixing some segv issues in the video code + Playing demos from the console no longer causes a Z_ChangeTag error when the demo is finished playing + Automap coordinate screen corruption and associated crashes fixed + Memory leaks and inefficiency eliminated from global colormap substitution system (now requires colormaps to be between C_START, C_END) + t_dump and t_run console commands repaired to do proper range-checking and to issue more appropriate usage information + Numerous fixes to FraggleScript functions to ensure proper range-checking + V_WriteText restricted to drawing text completely within the screen bounds + FraggleScript functions that return no value no longer propagate the value of the last function that returned (ill-defined behavior) + ++ and -- FraggleScript operators now work properly on fixed type Known Issues in 3.29 Public Beta 3: - Network code is incomplete and totally broken. Needs a complete overhaul. - Demo recording code is broken for unknown reasons, problem inherited from SMMU v3.21 - Cannot currently compile under Linux (files need to be updated, namespace collisions need to be repaired) - Problems have been experienced with the inline assembly in m_fixed.h under GCC 2.95.* Alternative code is available upon request, and it is also possible to change this header file to use C versions of the functions in question, which is currently recommended to those users experiencing trouble. Examination of the generated code has indicated only small potential performance gain from using the assembly code.