From jon at radscan.com Sun Aug 10 00:56:29 2008 From: jon at radscan.com (Jon Trulson) Date: Sun, 10 Aug 2008 00:56:29 -0600 (MDT) Subject: [conquest] Conquest 8.4 (stable) is available Message-ID: Source tarball: http://downloads.sourceforge.net/conq/conquest-8.4.src.tar.gz Optional musicpak (unpack in ~/.conquest/): http://downloads.sourceforge.net/conq/conquest-musicpak-8.3.tar.gz SVN tagged release: http://conq.svn.sourceforge.net/svnroot/conq/tags/conquest-8.4 SVN current (possibly unstable) development: http://conq.svn.sourceforge.net/svnroot/conq/trunk Conquest 8.4, in all of it's glory is now availabe. There turned out to be quite a few more changes than anticipated, but alot of bugs were fixed, some new enhancements added, and a great deal of code reorginaization and cleanup occurred. There is the HISTORY snippet for this release. =-= 8.4 (stable) 08/09/2008 - 8.4 stable release. Here are the main highlights of this release. Due to the server and client changes, I would recommend an update to this release, but then, that's just me. - server changes: - correct some nasty off-by-one's (NUMPLANETS) in serverpkt.c:spktPlanetLoc() and spktPlanetLoc2(). Depending on your environment (OS, compiler, etc) your results could vary. The typical symptoms would be reports of invalid packet types or sizes in the logs (client and/or server), and usually a rapid ship death with a killed-by of "Nothing in particular". - dead rework. Now when you die in the GL client, you still get to watch the activity going on around your exploded ship. When you die, you can now press [ESC] to return to the main menu, or [TAB] to re-enter a new ship. - conquestgl changes: - new star textures - add support for mipmapping of textures. Textures can specify the boolean 'mipmap' in their texture definition to specify that mipmaps should be generated for the texture. This is now done for stars, planets, ships, and the doomsday machine. This improves the quality of these textures significantly when viewed at different sizes (scaling and magfactor). - nCP.c (cockpit): Fix case where when bombing or beaming, and a mouse macro is used, the relevant sound effects might not stop and proper state restored. - bombing graphics, phasers, and moons are now displayed in LR scan. - reworked the 'alt_hud' stuff. When enabled, this would allow certain information (distance, direction) about a ship or planet that was last (i)nfo'd to be displayed. This option is now called hud_info, and is enabled by default. For the GL client, this data is displayed below the ship's status icon in the hud. For the curses client, this information is displayed just below the viewer. The alt_hud config option is still present but does nothing. In the future it will be used to enable an experimental cockpit (hud/viewer), if one is ever written. - fix bug that prevented you from seeing your own torps on LR scan if you were at war with your team. - clients now compute orbital position directly rather than using the server's idea of your ship's position in orbit around a planet. This provides for much smoother movement when you see ships (including your own) that are in orbit around fast moving objects. - rework the handling of the hud and it's associated data. - CQI: - fixup the CQI parser so that sections can be nested up to a depth of 15. Get rid of the subsection crap^Wstuff - no longer needed. - add ability to inline animdefs directly into an animation. - fix a reduce conflict in 'stmt' grammer - improve error handling/recovery during parsing of certain sections. - General: - massive code cleanup - fixups for newer, stricter compilers. Rename/standardize variables/functions and relocate in appropriate source files and headers. Clean up some of the internal API's. Probably every src file was touched in some way :) - tcpwrap.c: only log successful connections if verbose/debug is specified. Only 'access denied' events are always logged. - add a '-v' verbose option to the clients. More '-v's increase verbosity. - fix some stupidness in sem.c. - sparc/solaris porting. conquestgl works with OpenGL and sound if the appropriate requirements are met. - rework the way the playback speed and time is displayed in both the curses and GL clients. Now show the percentage into the recording you are currently viewing, and instead of displaying the internal framedelay, show the 'speed' (1x, 2x, -3x, etc). - fix UDP error on Solaris (possibly others). Use write() rather than sendto() when a UDP connection has already been properly established (EISCONN). - fix doomsday motion. Instead of simply stopping when within range of a locked-on planet or ship, continue to stay in range when possible (ie: should the planet/ship move out of range). - New SourceForge project page (Conq): https://sourceforge.net/projects/conq/ SVN URL's - current (possibly unstable) development https://conq.svn.sourceforge.net/svnroot/conq/trunk - tagged (official) releases https://conq.svn.sourceforge.net/svnroot/conq/tags/ Here are the details of the changes since 8.3 stable: 8.3c (devel) 07/22/2008 - okay, another huge code cleanup, function/variable renaming, API cleaning, crap removing load of good fun. - can now see moons on LR scan 8.3b (devel) 07/21/2008 - rework 'dead' handling. - Now, at least in the GL client, when you die you will actually see it. - The 'dead' node has been converted to an overlay node. After you've died, you will still see what is going on around you. - in the dead node, hitting ESC will take you back to the main menu, hitting [TAB] will re-enter your ship directly without having to go through the menu. - clients now compute orbital position directly rather than using the server's idea of your ship's position in orbit around a planet. This provides for much smoother movement when you see ships (including your own) that are in orbit around fast moving objects. - fix doomsday motion. Instead of simply stopping when within range of a locked-on planet or ship, continue to stay in range when possible (ie: should the planet/ship move out of range). - conquestd (server) changes - dead rework. No longer sleep for 2 seconds after a ship is killed. - in the menu state, no longer wait for 1 second before updating the client. Now we update at full speed. - got rid of the driver countdown timer. There is really no need to kill the driver (if your client driver started it) just because your ship has been dead for more than 15 seconds. This is the 21st century after all. - Older clients playing on newer servers will notice that you go immediately to the 'dead' screen when you die, since the server no longer sleeps for 2 seconds on ship death. - Newer clients playing on older servers will notice that when they die, ship and planet updates will decrease to one per second. After 15 seconds, and if you are the only player, updates will stop entirely. Other than these changes in behavior, client/servers are still compatible. As usual, use the latest client on the latest server for the best results :) - fix bug that prevented you from seeing your own torps on LR scan if you were at war with your team. - redo how data data is cached and stored in the GL client. New hud.c and hud.h files handle the setting of hud information (alert level, warp, damage, etc). Move this stuff out of GL.c. Move hud caching out of gldisplay and into the hud data structs where it belongs. This should speed up hud endering somewhat by avoiding unneccessary computations and string generation. - reworked the 'alt_hud' stuff. When enabled, this would allow certain information (distance, direction) about a ship or planet that was last (i)nfo'd to be displayed. This option is now called hud_info, and is enabled by default. For the GL client, this data is displayed below the ship's status icon in the hud. For the curses client, this information is displayed just below the viewer. The alt_hud config option is still present but does nothing. In the future it will be used to enable an experimental cockpit (hud/viewer), if one is ever written. - re-implemented the 'REPAIR' and 'CLOAKED' icon ship indicators to just render the text directly rather than use textures. got rid of the icon cloak and repair textures since their services are no longer required. There were 8 of them, though only two were even being used. - got rid of the 'BETTER_ETA' defines. This code has been in use forever, I think it works, so no need to conditionally compile it :) - initGLShips() - don't go all fatal on us just because some textures couldn't be found... - When pausing during playback of a recording, use the framedelay rather than spinning as fast as possible. - rework the way the playback speed and time is displayed in both the curses and GL clients. Now show the percentage into the recording you are currently viewing, and instead of displaying the internal framedelay, show the 'speed' (1x, 2x, -3x, etc). - fix UDP error on Solaris (possibly others). Use write() rather than sendto() when a UDP connection has already been properly established (EISCONN). - standardize how some buttons are referenced in the game's text for consistancy: RETURN -> [ENTER] TAB -> [TAB] ESCAPE -> [ESC] - rename clPutShip() -> clbPutShip(), like most everything else in conqlb. - minor code cleanups 8.3a (devel) 05/10/2008 - correct some nasty off-by-one's (NUMPLANETS) in serverpkt.c:spktPlanetLoc() and spktPlanetLoc2(). Depending on your environment (OS, compiler, etc) your results could vary. The typical symptoms would be reports of invalid packet types or sizes in the logs (client and/or server), and usually a rapid ship death with a killed-by of "Nothing in particular". This is a server-only bug, and all servers should be upgraded, whether or not your clients have seen this problem, since it's pretty certain that something important in memory will get corrupted :). - bombing graphics and phasers are now displayed in LR scan. - enable alpha testing in glfRender so that font glyph backgrounds aren't rendered (obvious in the text overlay nodes like ship list, planet list, etc). - nCP.c (cockpit): Fix case where when bombing or beaming, and a mouse macro is used, the relevant sound effects might not stop and proper state restored. - new star texture, based on prodding from Michael Derek Barnett who pointed me toward NASA's SOHO site http://sohowww.nascom.nasa.gov/data/realtime/gif/ . One of the images of the sun from this site was used, and with alot of GIMP majik, a new star texture was born :) I think it looks a lot nicer. Note, stars will appear larger now, as a proper star should. - Per Derek Barnett, set Sirius to be a blue star, and Betelguese to be a red star, just like in real life :) - Add texture definitions (and appropriate colors) for the stars to the 00_plantex.trc file. Remove all planet/star color specifications from conqinitrc as they don't really belong there - color is a texture property, not a planetary one... - Massive code cleanup, mainly related to the confusing use of Unsgn8 and char. gcc 4.1.2 complains bitterly about these with '-Wall', so they have all been fixed up to use char where appropriate (strcpy, el .al) and Unsgn8 (packet data). - CQI parser: - fixup parsing routines to be 'flat' according to the current section, and only care about (nested) subsections when really neccessary. - fixup the CQI parser so that sections can be nested up to a depth of 15. Get rid of the subsection crap^Wstuff - no longer needed. - add ability to inline animdefs directly into an animation. - add ability to derive inlined animdefs from previously defined global (non-inlined) animdefs. - remove the rmDQuote() function. Now use checkString(), which ensures all strings specified to CQI are properly 'cleaned' at parse time :) - fix a reduce conflict in 'stmt' grammer - use a 'CQI' prefix to error/warning messages generated when a section is finished parsing. - remove multiple copies of 'check for banned substances' code since all strings are now sanitized as soon as they are parsed. - improve error handling/recovery during parsing of certain sections. - add ability to disable anim types within an animdef, by setting 'stages' to 0, or in the case of toganims, delayms to 0. Useful for derived animdefs. - remove the ability to specify a color specification within a planet definition. Colors should only be specified with the planet's texture definition. This means you will need to update your /etc/conqinitrc file maunally - if you have previously installed conquest, as color values can no longer be specified for a planet. If you don't, then you will just get warnings since the conqinitrc file is not overwritten on an install... - texturesrc - inline most animdefs, and re-arange for the new world order. Derive the inlined 'bombing' animdef from the 'explosion' animdef. Neat. :) - add support for mipmapping of textures. Textures can specify the boolean 'mipmap' in their texture definition to specify that mipmaps should be generated for the texture. This is now done for stars, planets, ships, and the doomsday machine. This improves the quality of these textures significantly when viewed at different sizes (scaling and magfactor). For now, the GL_TEXTURE_MIN_FILTER is set to GL_LINEAR_MIPMAP_LINEAR (highest quality). The min-filter is currently not configurable, nor can mipmaps be completely disabled (without editing the texture config files) though they should be. - use iBufFlush to flush the input buffer when entering the CP, so that previously queued commands aren't issued when you re-enter a ship after you've died in glorious battle. - fix configure.ac to SUBST YFLAGS. No idea why this is now needed (perhaps the switch to AC_PROG_YACC in a previous release?). - sparc/solaris porting. - Sparc (and probably everything else) does not really like unaligned accesses to the common block. On sparc, a bus error occurs when certain CB accesses are made. Now, on non-x86 hardware, always align the CB structures on a 16 byte boundary. This should be done on all architectures, but I do not want to break x86 CB compatibility yet. Soon though, very soon :) - prefer OS native curses libraries and header files to ncurses when available. - include termio before term in c_defs.h to avoid SGTTY compile issue. - include -lsocket and -lnsl libraries during linking. - fixed longstanding problem with the lexer on Solaris and other systems. Apparently, 'WS' is already pre-defined somewhere, so rename 'WS' to 'whtspc' in the lex (*.l) files. Got rid of the 'OWS' tokens since we aren't using them anyway. - fix some stupidness in sem.c. - move metaserver query into the nMeta node, where it belongs (conquestgl). - makesrcpkg: make sure install-sh and ylwrap are executable. - add a '-v' verbose option to the clients. More '-v's increase verbosity. - implement a generic ringbuffer mechanism (rb.h, rb.c). Currently, only ibuf (keyboard/macro handling) uses it, but in the future it will also be used for network buffers when that code is reworked to use non-blocking sockets. - tcpwrap.c: only log successful connections if verbose/debug is specified. Only 'access denied' events are always logged. - correct/update some of the documentation for CONQINIT.TXT (CQI). - New SourceForge project page (Conq): https://sourceforge.net/projects/conq/ - migrated svn source repo to sourceforge. - svn URL's - current (possibly unstable) development https://conq.svn.sourceforge.net/svnroot/conq/trunk - tagged (official) releases https://conq.svn.sourceforge.net/svnroot/conq/tags/ =-= -- Happy cheese in fear | Jon Trulson against oppressor, rebel! | mailto:jon at radscan.com Brocolli, hostage. -Unknown | #include