+--------------------------------------------------------+ | CCC OOO N N QQQ U U EEEEE SSSS TTTTT | | C C O O NN N Q Q U U E S T | | C O O N N N Q Q U U EEE SSS T | | C C O O N NN Q Q U U E S T | | CCC OOO N N QQ Q UUU EEEEE SSSS T | +--------------------------------------------------------+ Conquest HISTORY 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/ 8.3 (stable) 09/03/2007 - 8.3 stable release. We hope. The main features for this release are: - Sound support. This version of conquest updates the GL client to support sound via SDL and SDL_mixer. A wide variety of effects and sounds are now provided. No more of that insipid X11 beeping. Cat provided the original patch and samples adding this support, though it was completely rewritten using a new internal cqs* API within conquest, and is configurable via CQI config files (soundrc). The conquest distribution includes the sounds used for the effects. An optional musicpak tarball is available seperately, due to it's size. To use it, simply unpack the musicpak tarball into your ~/.conquest/ directory. To use sound support, you must have SDL and SDL_Mixer libraries and headers. - The ability to zoom in and out in SR/LR scan was added to the GL client, based loosely on a patch from Cat. You can zoom in or out in +/- 5 steps (magfactors) in either LR or SR scan. - In addition, several changes and improvements have taken place regarding rendering in the GL client: - The HUD is laid out a little differently (and more configurably) via CQI. - The VBG and NEB are rendered better (scaling and appearence). - A large number of scaling bugs were fixed. - A crosshair cursor is now used in the GL client. - The torp pips have been relocated next to the phaser recharge indicator. - explosions are now visible in LR scan. - several other fixes too minor to mention. - optional TCP Wrappers support for conquestd and conqmetad. - fixed some security (possble buffer overruns) in the client (meta.c and CLIENTSTAT processing) reported by Luigi Auriemma. The following is the more detailed history of the intervening devel releases, if you really have nothing better to do than read it :). 8.2c (devel) 07/08/2007 - bug report from Adam Sampson: 'make install' should not chgrp/chmod $(DESTDIR)$(CONQSYSCONFDIR)/*rc . Depending on where $(DESTDIR)$(CONQSYSCONFDIR) actually is (say, /etc) this can cause 'issues' :) - fix bug whereby statistics data (ALT-S) in conquestgl (FPS, ping RTT, bandwidth, etc) would not be shown unless althud was also enabled. - clear all of the message/prompt lines when initting the CP node. If you self-destructed for example, then re-entered, you could still see the destruct confirmation message in the prompt area. - add the ability to zoom in/out during playback of a previously recorded game. - fix issue where in SR scan, but zoomed all the way out, you could see ships that you can't really see. - when quitting from the main menu, or in the CP via ^\ , stop all music and FX channels before leaving to avoid stuttering audio. - added warp2 (background warp) textures from Cat (with some slight changes). - add tcp wrappers support to conquestd and conqmetad - not compiled in by default. You can enable by specifying '--enable-tcpwrappers' to the configure command line. You will need to have tcpd.h and libwrap installed. The daemon name (for your system hosts.allow file) is 'conquestd' and 'conqmetad' respectively. 8.2b (devel) 06/04/2007 - 8.2b devel release - fix bug that prevented timed effects from being triggered for delayms (if specified in the soundrc file) after the game started. - disable allocation of a depth buffer. We aren't using it, so... - added sound effect for torp alerts. - fixed up configure so that it won't barf if sdl-config or other SDL checks fail. If that happens, sound support will just be disabled. Also fixed some problems that prevented the GL client from being built when sound support was not available. Sorry about that. - add capability of specifying named texture rectangles (texareas) as part of a texture definition into CQI. This makes it possible to define the element positions of the 2 decals used in the hud in the texturesrc file, rather than hardcoding all that crap into updateIconHudGeo(). Simplified alot of the hud computations, especially in updateIconHudGeo(). Simplified scale/gauge drawing considerably. No more stupid stuff in there anymore I hope :) Added the new item rectangles to the various team decal1 and decal2 texture definitions in texturesrc. Knock yourself out Cat :) Moved the torp status pips to the right of the icon ship, next to the phaser charge status gauge. - new hud decal1 and decal2 textures are provided. These have been modified to contain all of the relevant decal data, so there is no more seperate fuel gauge and fuel number rendering, for example. The number boxes are contained within the decal textures now - their locations are specified via texarea subsections in their respective texture definitions. - the compiled-in texture default configuration header file (texdata.h) has been removed. All texture data is read from the texture config files at startup time, always. The GL client will fail to start if the main texturesrc file cannot be found, or contains a syntax error. - more NEB rework so it looks a little better. Added support to CQI texanim to modify the texture's s and t offsets. Now use a 'neb' animdef for rendering it to provide that 'high speed streaming cloud' look. :) - add new '-v' option to the clients to increase verbosity - output some basic GL info. Using '-v' will list the GL implementation's various limits. - some sillyness fixed in cu2GLSize. - major rework of the vbg rendering. It was pretty screwy, especially when you threw magfactors into it :) - Animdefs now always handle sizes in CUs, (istate and deltas and geo size). These values must be rescaled via cu2GLSize or glScale prior to rendering now, in order for the magfactors to work properly. - Due to the size/scaling rework for the animdefs, explosions can now be drawn properly in LR scan, and therefore, are now drawn in LR scan :). Planet bombing could work as well in LR, but for now it isn't. - make sure the mag change sound doesn't play more than once every 60 seconds. Same for the info sound. - based on 'mag factor' idea from Cat, implemented zoom in/out in both SR and LR views. There are 5 levels of zoom out and zoom in. You can zoom in/out with the '[' and ']' keys. ^L resets the view to default zoom (none). During this work some subtle bugs in GLcvtcoords() were fixed, yielding much more accurate placing of objects. Limit checks in GLcvtcoords fixed to properly account for magscaling. It's main weakness now is accounting for the sizes of objects. Oh well :) There were a variety of other scaling and sizing bugs fixed as a result of this work. - cursor now uses cross-hair shape. With a fixed GLcvtcoords, it is actually accurate in the viewer now. :) - fixed some security (possble buffer overruns) in the client (meta.c and CLIENTSTAT processing) reported by Luigi Auriemma. 8.2a (devel) 11/27/2006 - Added sound support using SDL and the SDL_mixer API based on patches and samples from Cataboligne. This version supports sound effects for phasers, torps, explosions, and pile of other things. In addition, an optional 'musicpak' tarball provides some appropriate Conquest music to listen to during your campaign of terror. The musicpak is located on the webpage with the source tarball and can be installed by unpacking it into your ~/.conquest/ directory. SDL and SDL_mixer development header files and libs are required. All sound effects and music are supplied in OGG Vorbis (.ogg) format. I believe all linux systems at least, support OGG in their SDL implementation. Sound is only supported in the OpenGL (conquestgl) client. I have to say thanks again to Mr. Cataboligne - sound is a definite improvment to the Conquest experience :) The following is a somewhat more detailed log of the sound work. You do not really need to read it unless you are curious about the details :) - Add option (-S) to disable sound in conquestgl. - Effect and Music volume (if you installed the musicpak) are configurable from the options page. Sounds, like textures, can be overridden by the user. - moved the music into a seperate area in the repository (music/). Music is packaged in it's own tarball since it's pretty large (15MB). To hear the glorious music of Conquest, you must unpack the musicpak tarball into your ~/.conquest/ directory. The effects are shipped in the main src tarball as they are small in comparison :) If you have a checked out version of the repository, you can create the musicpak tarball by running 'makemuspkg'. - fixed doomsday beam sound to not try to fire more than once per second, and made it a positional sound. - moved doomsday_theme checks into nCP.c. - add beep sounds for alert, message, and error conditions. No more X11 beeping :) - hook up 'hit' effect. If you take more then 5 points of damage, it will play. - fix problem with volume. If an effect isn't using a panning mixer effect, then make sure all panning is disabled for that channel. Failure to do this results in non-positional effects playing at half their normal volume. As a result of this fix, went through soundrc and re-adjusted (equalized) some of the effect volumes. - rework themes() stuff, move into nCP.c - set the alert klaxon loop couts in soundrc to 0 (infinite). - Apply Cat's patch adding the themes() stuff and a few misc effect hookups. - fix clbCheckLaunch() to fail if weapons are overloaded. - Add option (-S) to disable sound in conquestgl. - Add support for .src (add-on sound RC files). These work the same as texture add-on files (.trc), allowing operators or users to override sound related definitions. They are looked for in the system-wide /etc/ directory, then the user's ~/.conquest/ directory. - beef up configure a bit. Properly detect when SDL headers are missing (sound support) and glut/GL headers are missing (OpenGL support). Don't try to build the relevant OpenGL and sound bits if not supported. - when searching for .trc and .src files, sort the filenames first before loading them, so that they are always loaded in a consistent order (alphabetically). - add engine background sound (engine). - converted all .wav's to .ogg's. - Initial sound support based on work by Cat. soundrc and associate parser working. Can init SDL/SDL_mixer and load/use sounds. Yay. 8.2 (stable) 9/1/2006 This version represents a major update to Conquest, primarily in the GL client, conquestgl. A variety of new enhancments and bugs fixes are present. The following section will outline the major changes to the various Conquest components in this version (compared to the last stable revision 8.1.2). Following that is the much more detailed HISTORY that went into each intervening development release (if you are bored). By far the most work went into the GL client. There were several important server fixes as well, so please upgrade your servers to this release if you run one :) - General - Conquest now creates a ~/.conquest/ directory in which to store conquestrc (the user config file), the conquest.log file, and texture/animation definitions, and images (~/.conquest/img/). If you have an existing ~/.conquestrc config file you should copy it into ~/.conquest/conquestrc if you want to keep your settings. The ~/.conquestrc is no longer used. - Using the new conqinit (CQI) parser, the planet initialization code was rewritten. This makes it easier for someone to create 'custom' planet configuations for their server(s). - manpages for all of the commands. Text documentation (README, CONQINIT.TXT, etc) are installed in /share/doc/conquest now. - rework remote OPER commands. Now use '/' as a prefix for sending certain commands to 'GOD' from within the game. Only users with the 'OPER' bit set in their user record can send oper commands to the server. New commands allow OPER's to create robots and kill ships, in addition to starting/stopping server-based game recording. - correct problem where clients might exit incorrectly when an unexpected packet arrives during the welcome phase. - enhance recording protocol so that server recordings are easier to determine. Always store the ship number that made the recording into the header. Existing recording (CQR) files are compatible. - previously, the client(s) tried to be smart and not waste the server's time with requests it knew the server would reject, for example, firing a phaser when you are cloaked. Unfortunately, this introduced race conditions when the connection had any significant lag, which would cause the client's idea of what would succeed to be incorrect. Now, we simply send such commands to the server, regardless of the local client's state, and let the server sort it out. - Add a new 'conqurule.easy' robot AI definition to the distribution. This rule file makes the robots a bit less lethal to new players. You can install it for a running game with something like 'conqstrat -U mouse button 1 (middle): Set course to mouse button 2 (right): Fire Torp at Of course you can redefine these, as well as add others. See the mouse macro comment block in your conquestrc file for a description of the format. is represented as '\a' in the macro string. When the particular mouse button is hit, the '\a' character sequence, if present in the macro, will be replaced with the angle of the cursor relative to the center of the viewer when the button was pressed. Up to 32 buttons (0-31) are supported, and can be used with any combination of the Modifier keys (Shift, Alt, and Control). That gives you a total of 256 macros, provided you have a mouse/input device with 32 buttons. Enjoy :) - Since it's going to be painful continuing with the alien language thing, they've been removed from this version (with the exception of the team-specific Conquest logos). All teams use the same decal1/decal2 (scale) textures in the HUD now. The 'do_native_lang' option is gone. Fixed up the decal1/2 textures with new, easier to read fonts, changed a few colors, and re-organized the allocation scale. The 'critical' alert icons have also been changed to have an english font, and all ships use the same set. Since each ship has a different shape, there was no good way to draw the lines between the text and the area of the ship of interest using a single set of textures. So, they are more like lamp indicators overlayed on the iconhud now. Towed/towing status and carried army count is displayed semi-transparent at the bottom of the viewer now, rather than in the icon hud area - not enough room there :) New 'Engine Overload' and 'Weapons Overload' "pulsed" messages are displayed in the viewer when an overload condition exists (using a new animdef). - removed the Irken planet textures and texture definitions. There does not seem to be an Irken server available anymore so there is no point in including them... The images and a .trc file are present in the irken-mod.tgz file available from Cat, should he wish to run a server again :) Just unpack the tarball in your ~/.conquest/ directory and you will be able to see the Irken planets in all their glory. - removed all of the non-used textures (eng/sh fail, other team (alien) decal/icon textures, torpicon/beam/tow, etc). In other words, massive texture cleanup and removal. Went from 179 to 107 textures. Woohoo. - fixed up configure to not build static libs by default anymore. 8.1.2d (not released) - added 'bombing' graphics. Now when you bomb a planet, you see explosions on it. The server protocol changed as a result, though the change is backward compatible. When connecting to an older server (< 8.1.2d) you will only see explosions if you are bombing a planet yourself (we fake it on the client). 'Bombing' state for a ship won't be recorded, so you won't see the bombing graphics when playing it back. Playing on a newer server (>= 8.1.2d), you will see bombing graphics for any ship in scanning range that is currently bombing a planet. In addition, recording files, when played back, will show bombing graphics for those ships that were bombing at the time. - fixed problem in GL client, where if a planet's type, etc changed after initGLPlanets was run, the user would not see the change in texture/color/size, etc. Now we update the GL display characteristics of a planet whenever a packet that could affect these characteristics arrives. - when doing a 'make install', only overwrite the system conqinitrc file if it does not already exist, to prevent accidentally overwriting any local planet modifications (yes, this happened to me :). The texturesrc file is always overwritten on install. - cleaned up the Klingon warp indicator texture. - fixed drawTexBox to not gratutitously invert Y, and adjusted planet textures to compensate. Same for drawTexQuad and the conq-logo textures. Now, WYSIWYG as far as texture editing goes. 8.1.2c (devel) 5/7/2006 - new user option 'do_native_lang'. When set to true, you will see the scale labels in the HUD displayed in the team's 'native' language. When false (default) you will see the labels in english (Federation). Yes, this is a bit of a hack. When Cat can deliver to me Orion, Romulan, and Klingon language font files, then we can do it properly :) - fixed up the limit checks in GLcvtcoords(). Now we are a bit more agressive in checking the visbility of an object before rendering it, particularly in LR view. - UDP keepalive's are sent from the client to the server every 30 seconds from the GL client, regardless of what screen you are on. Previously these were only sent if you were in the cockpit (CP). - redid the Negative Energy Barrier (NEB). The NEB is now drawn as a 'wall' (and at most, only 2 can possibly be in view at a time), rather than the large textured quad spanning the universe that was previously used. This allows us to be smart and not render it when it's not in view (saving frames and cycles). Also, the TOS-bmsk texture is no longer needed now, and has been removed. In addition, the barrier is now drawn at the ship's depth plane, correcting it's position and size relative to the ship. It sure looks alot bigger in SR view when you are passing through it :) - finished CONQINIT.TXT, describing CQI, and the format of the conqinitrc and texturesrc files in all their glory. 8.1.2b (not publically released) - fix bug in render.c that miscalculated the size of the warp indicator quad in certain situations. - enhance recording protocol so that server recordings are easier to determine. Always store the ship number that made the recording into the header. Existing recording (CQR) files are compatible. - If you pass '-d 0.0' on the conquestgl command line, the 75 FPS frame throttle is disabled. This is mainly useful for 'benchmarking' - having conquestgl always render at full speed. This works for playing back a recording as well as playing the game normally. - remove doomsday AP firing timer and convert to an animdef (doomsday-ap-fire) specified in texturesrc. - modify CQI parser to allow (ab)using a texture {} section to store 'named' colors. This is done by treating texture definitions that specify "" as the filename, as a special case, indicating that only a color is specified there. I just didn't see the point in creating a whole new 'colordef' section and related CQI infrastructure just for color parsing and storage. All colors used in conquestgl will eventually be specifed this way. - merge 8.1.2a into conquest HEAD branch. 8.1.2a (devel) 3/05/2006 - at long last - This is a pretty major revision compared to the last stable 8.1.2 release. This version incorporates new artwork textures and a new 'Icon' HUD layout, curtesy of Cataboligne (aka Roy) including: - new ship textures - team specific photon torpedos/animations and phaser textures - team specific LR tactical grids - doomsday fires an anti-proton beam at unfortunate planets. It also corrects some potential server problems and adds new OPER commands. I would not hesitate to recommend upgrading to this server version at least :) Do to the rather large changes from Cat, it was clear that certain internal mechanisms (like texture management) in conquestgl needed major overhaul. So, in addition to the new art, the texture and animation backend has been completely rewritten from scratch, based on the new cqi (conqinit) lex/yacc parser. Texture and Animation descriptions are defined in the global 'texturesrc' file, or a user's own ~/.conquest/*.trc files. In addition, a much more complete customization of conquest's planets is possible via the global 'conqinitrc' file. The goal was to provide maximum flexibility to users/hackers w/o having to change the code each time :) conqinit is discussed in more detail in the CONQINIT.TXT file (currently crude, but will be improved for a stable release. :) - changes since last snapshot release: - cqi animation specific parser done. GLAnimDefs and the animQue runner/iterator done. We have animations :) - re-added the team specific torp animators that Cat originally supplied in his patch, but were left out of the snapshot releases until the new animator 'engine' was done. - other animators currently present (and working :) are the 'explosion', and blinker animations. See texturesrc for all texture and anim definitions if you want to see them for yourself. The only one(s) currently missing from the original patch, that will be added in the future, are the solar animators (for the suns). But I need some better textures from Cat first :) - conquestd: reworked server OPER commands. As you may (or may not) know, users marked as CONQ_OPER in conqoper, can send certain commands to the server when logged into the game, by sending a specially crafted message to GOD. This version no longer uses 'EXEC' as the command prefix, rather '/' is now used. - kill a ship or user: /k[ill] - create robot(s) /r[obot] [ ] - start a server recording /recon - stop a server recording /recoff - conquestd: fix problem where the recording packet cache was not cleared when starting a new recording, except for the first one. - reduced the size of all of the 1kx1k textures, saving alot of texture memory/file space :) The src package size went down to 5.2MB compared to 8.3MB in the snapshot releases. - The following are notes from the 3 previous snapshot releases leading up to this release. Worth reading (if you are bored) as there were alot of important changes not mentioned above. 8.1.2ng3 (snapshot release) 2/05/2006 - Got rid of the old HUD. The new Icon HUD is now the only hud in conquestgl and is a huge improvement over the old one. Thanks Cat! The DoIconHud and related options are now gone. - added new shield graphics. It's basically an edited version of Cat's original 'layer' texture, but with the insides 'partially' hollowed out and color coded according to strength. It think it gives a nice 'bubble effect'... I much prefer it - hope you do too! The shield layer options are gone, and only do_shields remains - indicating whether you want to see a shield graphic or not. do_shields is now on by default. - re-arranged the 'alert' indicator text, armies text and towing text around the ship icon. The alert text was too hard to read in certain cases. - changed the doomsday AP beam rendering to be less cpu intensive. The beam simply uses an on/off duty-cycle of 600ms now. - correct problem where clients might exit incorrectly when an unexpected packet arrives during the welcome phase. - While playing on CyberBilly's server, I noticed that when no ships are moving (and hence no UDP traffic is occuring), his firewall would terminate the UDP connection after 60 seconds, and the client would exit. It's basically the reverse of the problem that required implementing a client UDP keepalive mechanism in v8.1.1. So the server has been modified to always emit at least one ship update for your ship every 5 seconds if UDP is active, and no other UDP data has been sent in that time. This should work around the issue by keeping the connection 'live'. - add more debugging to readPacket() so problems might be known. - texturesrc - remove layer shield textures, added new shield textures. Updated to load the correct one for each ship. There are only 3 new textures that all the ships use depending on their shape :) - add a little explanation for the mysteryies in updateIconHudGeo(). 8.1.2ng2 (snapshot release) 1/30/2006 - The main focus of this release was to get the icon hud working. It now scales properly. The geometry setup was completely redone, since the code from Cat didn't quite work properly - probably because he didn't know what updateGeo() was really doing :) I will add some comments later. I promise. Some things changed as well: - alert status/bars The alert is now identified by 'alert bars' located on either side of the iconic ship diagram. The ship causing the alert is displayed just below the icon. The bars are coded the same as in the original hud, though there is no text on them. - steady yellow = proximity alert - blink yellow = enemy ship in yellow alert range - steady red = ship in red alert range - blink red = ship in phaser range - Cat's torp 'pip' stuff is gone as well (though the texture is still there). The main problem there was that each ship was different in where in the decal texture the pip array is located. This made it far too tedious/painful to implement correctly. I'd also like to try to make it reasonable for someone to add a new shiptype someday without severe pain. I like the idea though, so it may return in a more 'generic' way that looks and acts the same on all ships, and is therfore easier to code and maintain. - The 'animated' tractor icon decal was removed for the same reason. - The decal indicating you are carrying armies does not display the army count. Same reasons as above. I'll remove the empty '[]'s soon. - there is no room for some of the standard indicators in the new hud, so some are located in other areas, for example: numeric warp and heading, these are displayed to the bottom left of their respective icons. armies/ai - this is indicated by '%d armies' displayed in the upper left of the icon area, or by the action token when watching a robot. towing/towed by - this is indicated in the lower left of the icon area. destruct - this is now rendered in large, semi-transparent blinking letters centered in the viewer. Don't know why I didn't do that in the first place, 'cause it looks kinda cool :) - changed default WxH to 1024x768 as 800x600 is difficult with the iconhud. - uiPutColor() can understand alpha now. - fixed several minor conqinit parser issues. - ALT-G will toggle the tac display on/off in LR scan. 8.1.2ng1 (snapshot release) 1/05/2006 - This version incorporates Cataboligne's massive artwork patch. Among them: - new ship textures - team specific photon torpedos and phaser textures - team specific LR tactical grids - doomsday fires an anti-proton beam at unfortunate planets. - original 8.1.2 Conquest included 37 textures. This version includes 173 textures. The src tarball got a little bigger :) This also includes the new 'icon hud' functionality, which promises to be the future default hud, once the kinks are worked out. - User config data (~/.conquestrc) is now stored in a new ~/.conquest/ directory. The files that can currently be present in this directory are: conquestrc # used to be ~/.conquestrc conquest.log # what it says img/ # directory containing user textures (.tga) files. *.trc # user supplied texture definition files. If you already had a ~/.conquestrc with your settings in it, simply copy it into ~/.conquest/conquestrc before starting the game. - conquestgl will now emit it's log entries to stderr as well so that gl users might see something useful if something breaks :) - planet and texture configuration and intialization have been completely rewritten through the new CQI infrastructure. - texture loader now supports compressed tga files. - fix server recordings so they include TORPEVENT packets. These were only being recorded for clinet recordings. This is important when rendering the new 'directional' torp graphics Cat added when playing back a recording. - this version includes all of the bug fixes in 8.1.2. Version 8.1.2 (stable) 12/27/2005 - add patch by Ralph Moritz fixing an issue with FreeBSD and SIGCHLD. - fixed localtime() libc futex wait hang in conquestd by moving drcheck() out of the signal handler. Bad Juju. Thanks to Bill Patterson for letting me have access to his server to locate the problem and test a fix. - fixed potential problem with ship attributes that could cause ships (including your own) to appear to be stuck in Murisak when you enter a game. Now the clients will issue a CPCMD_RELOAD request to the server upon entering a ship so that data is always accurate. - add patch by Bill Patterson adding a '-f' fullscreen option to conquestgl. Add '-g WxH' option to set the intial window size as well. Version 8.1.1 (stable) - during playback of a recording, honor the user config NoRobotMsgs option. - send a UDP keepalive packet every 60 seconds to keep UDP connections alive for certain firewalls that seem to timeout the connection if there is no client->server activity. The symptom reported is that you could get into the game and play for awhile (10-15 minutes) when suddenly all ship movement would stop. Everything else would work (commands, etc) just no ship movement (meaning UDP stopped). - clean up some compiler warnings regarding possible use of uninited variables. - When a geno occurs, send a message notifying everyone. - redid explosion rendering in the GL client. - now use a textured quad for phasers rather than a line. - remove drawString(), not needed anymore. - properly report an error and exit if the texfont(s) cannot be loaded (rather than core). - can see the negative energy barrier now in the GL client. Version 8.1 (stable) - changes since the last development release (8.0.1q) - fixed bad bug that could prevent a ship from seeing enemy torps that were fired at it from >ACCINFO_DIST away, depending on the firing ship's war settings. Ouch. - block updates when a RELOAD is occuring to prevent possbility of sending a corrupt packet stream. This could also happen when starting a client recording. - fixed problem with around() and round() which depend on BSD rint(). rint() seems to screw up rounding when the fractional part is exactly .5 - rounding down on even numbers, rounding up on odd. How odd. Now use our own rounding function that always does the right thing. - the wrong team was logged as the geno'd team to the logfile. - remove code that killed armies on ships belonging to a geno'd team. I did not expect that code would cause a war in itself :) - here is a brief overview of major features/changes since last stable release (8.0.1) - GLUT based OpenGL client, conquestgl. - the conqreplay program is gone, as the clients, conquest (curses) and conquestgl (OpenGL) are now used to replay .cqr files via the '-P ' cmdline option. - The game protocol changed (in devel version 8.0.1j). This protocol corrects some shortcomings in the 8.0.1 protocol (like doomsday, planet realness, etc), and now provides for client-side computation of torpedo and planet movement. This makes the game smoother, particularly in conquestgl, and significantly cuts down on the network bandwidth required. - a variety of game related bugs fixed, including, but not limited to: - doomsday protocol was 'missing'. - planet 'realness' was never propagated to a client. - geno's against the feds were rarely counted. - Slingshot flag could be bypassed. - a planet's army count is sent immediately to a newly scanning ship. - a bug in system entry selection could cause you to get stuck in Murisak when entering the game. - several lock contention, and signal interrupt issues/races fixed. - FEEDBACK messages are now sent directly to the client without making a round trip through the common block. - UDP support (auto-negotiated, but still perhaps a bit weak) for ship motion data. - UDP support can be disabled by specifying the '-u' option to the client. - Improve TCP performance via TCP_NODELAY. - use CTL-R in the cockpit to force a complete packet refresh from the server. - new user options (~/.conquestrc) - 'do_enemyshipbox' - when set to 'true', will draw a 1 pixel red square around enemy ships in the LR/SR views. (GL client only). - 'do_draw_viewerbg' - define this as 'true' if you want to see the rather attractive background image (Hubble Ultra Deep Field) displayed in the viewer. (GL client only). - conqdriv - conqdriv now updates planet positions every 10th/sec. Previously these were only updated every 5 seconds. This provides much smoother planet movement, especially in the GL client. - conqdriv now updates a ship's orbital position every 10th/sec rather than 1/sec. This makes orbiting planets much smoother. - meta server/protocol changes - The meta protocol has been updated to support new 'server_contact' and 'localtime' fields. - the meta server now sorts the server list by the number of currently active players, rather than the server registration order. - meta selection code in client can now differentiate between incompatible servers. - fixed a bug where the meta server could not distinguish between multiple servers that were running on the same host, but listening on different ports. - much code restructuring, new libraries, removal of dead code. - The rest of this section are the devel release notes leading up to this stable release. Probably uninteresting unless you want some more details :) # 8.0.1q 12/11/2004 (devel) - FEEDBACK messages (beaming/bombing, etc) are now sent directly from the server rather than being enqueued into the common block's message ring for later delivery. This avoids alot of uneccessary lock contention, and makes sure the client gets feedback messages quickly, without making a trip through the common block. - a server's client update interrupts are now blocked when a lock is aquired, and unblocked when the lock is released. This avoids some potential races that could cause a lock to be held too long, or to be improperly interrupted. - fixed a couple of problems with counting geno's. Reported by Cat. Fed geno's were almost never counted properly. - when couping, re-couped planets should not be marked scannable by anything other than the coup'ing team. - when cloaked and in orbit, approximate location data was not available to other ships as it should be for any cloaked ship that is moving. - When a team is geno'd, all armies of that team still residing on live ships are also destroyed. A message is sent to a team when it is genocided notifying them of this. - semaphore interface cleaned up - fixed potential core in GL.c when padding message lines. This could happen most often when getting (i)nfo or locking onto a planet. - recording/playback of planet 'realness' was broken. Now it isn't. # 8.0.1p 11/21/2004 (devel) - added ping capability. The GL client (conquestgl) will now ping the server every 2 seconds. This measures the average TCP round-trip time (in ms) to the server and back. To see the ping time, enable the status line in the cockpit by typing 'ALT-S' when playing. Note, this is total round-trip time. - update meta protocol to add 'contact' - (server operator contact), and 'walltime' (local server time) to the meta protocol. The Meta protocol version is now at 2. The meta protocol is backward compatible with all servers and clients so there should be no compatibility problems. With servers and clients that support the version 2 meta protocol, a check is now also done in the client's Server Select page to ensure that you will only be allowed to connect to servers that are protocol compatible with your client. Incompatible servers will be highlighted in blue on the meta select page. This is more for the future since no current incompatible server supports the v2 meta protocol anyway. - now disabling the SlingShot flag works in all cases like it's supposed to :) - added "server_contact=" to the system-wide conquestrc file. - fixed bogus towedby reports when you attempt to tow a ship, but you are already being towed. # 8.0.1o 11/21/2004 (devel) - incorporates 8.0.1n patch that fixes protocol problem with letting the client know the true 'realness' of a planet. - fixed planet sending logic to account for newly scanned planets. Previously, it could take up to 5 seconds for the client to be told the true army count of a planet that was just scanned for the first time. You should now get the real army count almost immediately after scanning a planet for the first time. - increased packet timeout waits for the initial server/client negotiation sequence that could cause problems connecting to a server with a high lag. Where it used to only wait about 10 seconds for the initial hello packets from the server, it now waits 60 seconds for example. On a really laggy server it may take a minute or more to fully connect, by which time you will problably not want to play on that server anyway :) - small bug in curses client (conquest) that could cause problems if other than expected packets came in during welcome phase - In meta list, [ENTER] can be used as well as [TAB] to select a server to connect to. # 8.0.1m 11/14/2004 (devel) - builds under cygwin (11/11/2004) again. Both the server and clients (including the OpenGL client, conquestgl) seem to run fine again. SW OpenGL is a little slow, but playable (depending on your processor speed). You may want to turn off the viewer background image in (O)ptions to gain more FPS. I get about 20 FPS in SR view on a Pentium M 1.8 Ghz, fast enough for conquest's needs :) Make sure to read README.cygwin for important info on building under Cygwin. - updated autotools/libtools to deal with some cygwin issues with curses linking. - move rndini() calls to be before rndlb usage to prevent infinite loops in rndlb on cygwin systems. - doomsday protocol was not being recorded in client-side game recordings. Sorry. - removed last traces of glut bitmap font usage - cleanup in asle 4 (render.c) - remove old, unused code (CONQUEST_USER, ALT_RND, etc) - Use ALT-S to toggle display of FPS and Kb/s stats in cockpit (conquestgl). - use CTL-R in the cockpit to force a complete packet refresh from the server. # 8.0.1l 10/22/2004 (devel) - finshed implementation of variable encapsulated packet handling. Should make it easier to add packet types in the future without neccessarily breaking network compatiblity. Of course, if the server/client does not understand the enacpsulated packet type, it will just discard it. This is better than losing packet sync and ruining your whole day :) - I am switching over the main public server (1701) to this release so it can get more testing. This means that after this release, you will need a 8.0.1j or better client in order to connect to any of the conquest.radscan.com servers. I really hope to keep these network incompatibilities to a minimum in future releases. Of course for you die-hard retro telnet users, you shouldn't notice any change :) - I think the GL client is working well enough for a stable release now. Of course there are tons of things that could be done to pretty it up more, but it's good enough for now. # 8.0.1k 9/25/2004 (devel) - when entering a game, pointer troubles could cause a client to get stuck sitting on top of Murisak, or offered the wrong list of systems to enter from, if their team owned more than one system. - user config viewer background preference was not honored during replay of a previously recorded game. (conquestgl) - modifiers (shift, ctl, etc) were improperly discarded when decoding the macro FKeys. (conquestgl) # 8.0.1j 9/11/2004 (devel) - conquestgl - implemented background image (Hubble Ultra Deep Field) to viewer. Added user option 'do_draw_viewerbg' to enable. It is enabled by default cause it just looks so darn good :) ALT-B can be used to temporarily toggle it on/off while in the CP if it proves too distracting. - fixed viewer backgroud image to be displaced properly when in Murisak centered LR view. - Using [SPACE] to toggle between ship and Murisak centered LR scans will only work when in LR mode. No more inadvertant switching. - more GL and render cleanups. - corrected bug in modifier key handling. Several other potential key problems also fixed. - texture handling cleanups - planet and doomsday blend modes fixed so background image no longer interferes - fixed bug in options (GL) display where when the number of options exactly matched the number that could be displayed onscreen caused nothing to be displayed at all. - got rid of drawBox() - no longer used anywhere. - cleaned up the viewer background (vbg.tga) texture (reduced gamma). - conquestd - an attempt at better handling of UDP write errors that sometimes occurs when UDP was successfully negotiated, but the server finds itself unable to send them. If more than 15 write UDP errors are detected during the course of a session, the server will switch to TCP only, and a message will be sent to the client informing it of that fact. # 8.0.1i 9/03/2004 (devel) - conquestgl - when in the cockpit, various screens that used to be seperate such as help, userlist, planetlist, etc, are now displayed on top of the cockpit display, which is then made transparent. This allows you to still see what is going on with your ship while reading the info. This also works when playing back a recorded game. Now you can see your ship explode while looking at the userlist for example :) - redid the viewer fonts - now use a tex mapped font as well, instead of the glut bitmap fonts. - fixed up GL version of cvtcoords to remove artifacts in when objects were considered to be 'in view'. Previously the cvtcoords function from the curses client was being used to determine this... This could cause objects (planets, etc) to 'disappear' when close to the min/max X/Y coordinates. Objects will now move properly into and out of view now in the viewer. - corrected perspective correction misunderstandings on my part :) Planet and ship labels now are always positioned correctly regardless of your position relative to the object. Planets and ships are likewise positioned properly in relation to each other. - recolorized army count in planet names on long range display. - more GL related cleanups and re-organization. # 8.0.1h 8/10/2004 (devel) - conquestgl - added proper moon texture for Luna. - torp packets are no longer sent, only recorded. TorpEvent packets are the only torp packets sent to the client now. - cleaned up GL.c a lot. No longer use a seperate window (and associated GL context) for the viewer. # 8.0.1g 8/08/2004 (devel) - Planet and torpedo trajectories are now computed in the client for smoother motion and a significant reduction in the packet count needed from the server. The network protocol version changed as a result so only new clients can play with new servers. Recording files (.cqr) are still compatible. The common block was not changed so your universe will continue to work. - got rid of conqreplay program. The clients (conquest and conquestgl) are now used to playback recordings using the -P option. - fixed CPCMD_RELOAD to properly send a full update to the client when a client starts recording. - addition of new CP_VARIABLE/SP_VARIABLE packet types so that new packets types can be added cleanly without neccessarily having to break the network protocol. - corrected pointer alignment issue with ctime() on Sparc architectures (or any other architecture that does not tolerate misaligned pointers). Reported by Clint Adams (Debian). # 8.0.1f 7/11/2004 (devel) - conquestgl - switch to TARGA (.tga) format textures rather than BMP. That alpha channel comes in handy. - replaced lousy classd texture with a Mars texture. Maybe someone wants to create individual textures for each planet someday? :) - added new torp texture rather than re-using the star texture. - redid torp rendering somewhat. - hitting [SPACE] while looking at long-range map will toggle between a Murisak centered, or ship centered map. The default map display is whatever you set for the 'do_local_lrscan=' option in your ~/.conquestrc file. # 8.0.1e 7/7/2004 (devel) - patch from Clint Adams correcting a strange typedef bug in datatypes.h that niether of my compilers detected. Also, add $(DESTDIR) to the image copy routines in Makefile.am. - cleaned up some logic in the server so that uneccessary computations are not performed on each iter - improving efficiency. - moved planet driver into conqlb - fixed sign bug in client meta list that caused high numbered ports to be listed as a negative number on the meta server list displayed in the client. - moved duplicate GL/curses client hello() functions into single clientHello() function in client.c. # 8.0.1c 7/2/2004 (devel) - UDP support for torp, ship, and planet 'location' packets. UDP is auto-negotiated, and appears to be NAT firewall safe. Use the '-u' option to conquestgl or conquest to disable udp negotiation if you are having problems with it. You can see whether or not your client has successfully negotiated UDP with the server by looking at the (O)ptions screen in the client, where UDP status is listed as 'On' or 'Off'. If you run server, you will need to also allow UDP port 1701 (default) into your network in addition to the TCP port 1701 you already allow. UDP packets are used only for sending frequent 'location' data to clients, which improves the smoothness of play, especially in the OpenGL client, conquestgl. - bugs in nWelcome node that prevented server error conditions from being displayed to the user were fixed. (conquestgl) # 8.0.1b 5/31/2004 (devel) - use TCP_NODELAY to send packets immediately rather than save them up before sending. - add check for stdint.h, and use those defines if available in datatypes.h # 8.0.1a 5/08/2004 (devel) - Adds a GLUT/OpenGL client, conquestgl. Oh yes. - See http://radscan.com/conquest/index.html for a couple of screen shots. - The gl client is called 'conquestgl' - use this to run the OpenGL version of the client. The curses client 'conquest' is still present of course, for those who really dig the retro experience. - if you do not have OpenGL and GLUT libraries/headers on your system, supply the '--disable-gl' command line argument to the 'configure' script, as in: ./configure --disable-gl This will prevent the GL related clients and libraries from being compiled, and you will be stuck with the curses only client :) - Note, the GL client does not provide a 6 DOF (flight simulator-type) playing experience. Sorry - that would be an entirely new game. OpenGL and GLUT are used to basically present the same game experience as the current curses client, however, the use of a graphical client provides a much nicer experience visually. To be honest, I never use the curses client to play anymore :) - phaser shots from other ships are rendered in the GL client. - new user option: do_enemyshipbox when set to 'true', will draw a 1 pixel red square around enemy ships in the LR/SR views in the GL client. - currently the maximum Frames Per Second (FPS) is capped around 100. A 10ms delay will be inserted between frames if the FPS exceeds 75, which is really more than sufficient for conquestgl's rendering requirements. - there are no specific GL extensions required or used. OpenGL 1.1 and greater should be sufficient for building/running conquestgl. I have not tried running conquestgl on a software GL implementation like Mesa. With a fast enough processor, it could be playable though, since we are not talking about Quake 3 rendering requirements here :) - the mouse is not used in conquestgl - everything still runs by keyboard :) - up to 36 macros can be handled in conquestgl: F1 - F12 SHIFT F1 - F12 CTL F1 - F12 - conquestgl can also play conquest recording (.cqr) files. Use the -P 'cqr filename' option. conquestgl -P dethfun.cqr It's much nicer to watch recordings in the OpenGL version than using the curses-only 'conqreplay' program. Other than this, the options are the same for conquestgl as the curses client 'conquest'. - there are many enhancements that could be made to the various displays still: - a better conquest logo display - phasers should probably be drawn using an alpha blended texture rather than a blended line. - need a better way to display explosions - need to increase line length and number of lines for the display of incoming messages. - the list goes on. Sigh. - conquestd/conqdriv changes - on entry to the game, the server will send a complete user list to the client. Previously, only users currently playing in the game or present in the history list were sent to the client. This means the '(U)ser list' option in the clients will list all of the users now. - conqdriv now updates planet positions every 10th/sec. Previously these were only updated every 5 seconds. This provides much smoother planet movement, especially in the GL client. Of course this increases the required bandwith some. If this is too much for your internet connection, reduce your 'updates_per_sec' option. - conqdriv now updates a ship's orbital position every 10th/sec rather than 1/sec. This makes orbiting planets much smoother - this is more noticable in the GL client. - missing doomsday protocol added. Believe it or not, with the 8.0.1 release version. I forgot to added the protocol for the doomsday. Using an older client (pre 8.0.1a) will results in an 'invisible' doomsday machine. Upgrade to a 8.0.1a or better client. The GL client uses a texture made from the original Star Trek episode "The Doomsday Machine" :) - conqmeta changes - meta server now sorts output server list by the number of currently active players, rather than the server registration order. - fixed a bug where the meta server could not distinguish between multiple servers that were running on the same host, but listening on different ports. - alot of restructuring of the code and the creation of new libraries. - No UI specific code is present in libconquest anymore. - new generic libUi - all curses functions and the functions that depend on them are now in libUiCU - GL related functions and their dependants are located in libUiGL. - curses related functions removed from libconqclnt and libconqserv - new color implemetation, (colors.h) - UI agnostic. - much cleanup up of c_defs.h. - conqnews.doc renamed to HISTORY. - added CREDITS file to give credit where credit is due (netrek for the original pixmaps that formed the basis of the ship textures in conquestgl, etc) Version 8.0.1 (stable) 1/17/2004 - fixed rather serious problem with dead() handling. When you were killed by an external (ship, sun, etc), you could get stuck in dead() once your ship exploded. I recommend that server operators upgrade to this version. - cleaned up some logic that should allow conquestd to handle unexpected client disconnects better. - fixed a VACANT check in conquestd:newship(). It might resolve an issue some users have seen where if their connection is terminated unexpectedly, they cannot reconnect to their ship for awhile ("already playing on another ship") because conquestd thinks it's still alive and active. If you still see this problem, let me know as well as a way to reproduce it. - fixed a stupid bug that prevented compilation on non-linux systems. - added some casts for sa_addr in the network connection routines to eliminate some gcc warnings. - force 1-byte alignment of the wire packet structs to avoid future troubles. - a variety of other minor fixes and adjustments. - added patches from Clint Adams, adding portable snprintf() and friends. - Cygwin support under MS Windows (tested with XP): - read README.cygwin for cygwin requirements and information. - added better mmap() check for cygwin systems. We don't use MAP_FIXED in Conquest anyways, so we don't care if it doesn't work. - default to 'Users" conquest group for cygwin. - isagod() checks pretty much disabled for conqoper under cygwin. If you can get a shell, you can run conqoper, as there is no root user. - deals with .exe extensions properly - packet.c - clientPackets[]/serverPackets[] struct arrays are statically defined and no longer exported. cygwin's linker seems to have 'issues' with external references to struct arrays. - sem.c - some changes to deal with unimplemented cygwin semctl() operations. - rxvt's choice of colors seems to be off... non-bold white (from conquest's perspective) comes out as black. The normal Cygwin console seems to work fine. Version 8.0 (stable) 12/13/2003 - the official v8.0 release - fixed bug in meta.c that counted active ships improperly. Same with PrintStatus in clntauth.c. - conqdriv will kill VACANT ships if the Vacant flag is not enabled for the server and it happens to find a vacant ship. - PrintStatus in clntauth.c will now show the server's local time as sent in the server's spServerStat_t packet. - changed AllowSigquit option to AllowVacant, to more properly reflect it's purpose. 7.2h - This is a prerelease version of the Conquest v8.0 client/server release. Much has changed. Read the docs (README, SERVER.TXT, etc) if you really must know all the details. - added meta server browser into conquest. To get a list of servers registered with the meta server, and select one to play use the '-m' option to conquest. $ conquest -m - updated documentation, for release. 7.2e, 7.2f, 7.2g, - various bug fixes 7.2d - merge of CS-12 (client/server branch) into main branch (7.2d) - removed '-p ' option from conquest. To specify a port other than the default, add it to the server name seperated by a colon. For example, to connect to a server at conquest.radscan.com, port 1702, use: conquest -s conquest.radscan.com:1702 - added meta server (conqmetad) and functionality to conquestd, based on a suggestion and some ideas from Josef Jahn. - meta server listens on TCP and UDP port 1700. The UDP port is incoming only, and is used to recieve updates from conquestd's. TCP is outbound only, and will dump the current server list and their stats ('|' delimited) upon connect. Try the cgi script at http://radscan.com/cgi-bin/conqmeta.pl, or run conquest with the '-m' option. - See README and SERVER.TXT for server configuration and options. - fixed conquestd and conquest to improve responsivness. conquest will now process packets as soon as they are received regardless of the update rate, instead of wating for a timer cycle. conquestd updates the client whenever the client does something (raise shields, etc). These changes made a huge diff in responsiveness to commands, especially at lower update rates. Sorry about that oversight :) - client now processes incoming packets while in help, userlist, etc, rather than only when at the battle screen. 7.2c-cs-12 - feedback messages are no longer recorded. Tersables are only recorded if the user has them enabled when the recording was made. Server recordings never contain Tersables. - notify opers when someone enters conqoper - opers get all messages sent to GOD - fixed problem with reserved ship slots and no valid process controlling them in newship(). Also, when disconnecting from the main menu, turns off the ship before exiting. - clean up of the conf stuff - send relevant User packet *before* sending a Hist packet. - new '-t' option for conquest. When conquest is run with the '-t' flag, then no attempt will be made to read or write a user config file. This is useful for people who still want to run telnetable servers, yet prevent such users from stomping over each other's settings. Such users always use the default options, which means they will need to set them to their preferences whenever they enter the game, since they are never saved. If you (the user) find this annoying, then download the src, and use the client to connect to the server properly :). - new 'conquestsh' program for telnetable servers. When setting up a telnetable server, use 'conquestsh' as the user's shell program. conquestsh exec's the conquest client bianary, passing the '-t' flag, and the '-s localhost' flag. Feel free to edit this program for your site, for example if you want the telnetable client to connect to a different server than 'localhost'. - removed OpenGL/X11 dependancies that snuck in. We aren't ready for that yet. :) 7.2c-cs-11 This is the first release of a development version of the client/server conquest. There have been quite a few changes from v7.x! Please read this document for the juicy details ;-) The common block revision has changed, making this version incompatible with previous versions. Of course the major change in this release is that conquest uses a network based client server model. There is now a seperate conquestd program that listens to network requests from clients (conquest). If you want to run a game on your machine, you will need to start conquestd like so: /opt/conqnet/bin/conquestd & Please read SERVER.TXT for intructions on how to run a secure game, and the options available. I would do this from a seperate non-privileged account of course, if you intend to invite the unwashed internet masses onto your server to play. If you just type 'conquest', it will try to attach to the conquest daemon on your local host. To connect to a remote host, use the '-s' switch. This will take you to the login screen. Choose a username, password etc, login, and kick some ass. I have setup a public server here for this release that you can connect to like so: conquest -s conquest.radscan.com Once an official 'stable' release is made, the old telnet server there (v7.2) will be pointed toward the new version, for those who don't want to use the client. There may eventually be multiple servers running (one for experienced players, for example, running on a different port.) - conquest is now client/server. In the old days, the conquest binary had to be run on the same machine as the common block (universe). In order to run a 'server', a telnet interface was required so remote players could connect. Now, conquest is a client that can connect over the network to any conquest server (conquestd). In the future, there will be a graphical client, using OpenGL to render the main battle screen. It won't be a 6 DOF combat simulator, but it should look alot nicer than the curses interface :) The protocol is endian safe of course. - The conquest login screen provides information about the server you are attached to - number of active ships, server name, enabled flags (see below), MOTD, etc. - The daemon (conquestd) listens on TCP port 1701 by default. You can change this by supplying '-p ' to the conquestd command line. If you want to run your own public internet server, you need to allow tcp/1701 into your firewall (or whatever port you configured your server to use). I would recomend running the daemon as an unprivileged user. Oh, and if it's going to be available to the internet at large, run conquestd with the '-m' option, so it will notify the metaserver so others can find your game. Please read SERVER.TXT for information on running a server. - Client Updates. From the options menu, a player can set the update interval anywhere from 1 to 10 updates per second. The default is currently 5. There is no AllowFastUpdates capability anymore. I would not recommend 10 per second on a modem. Try different ones until you find one that works best for your connection. In the old conquest, 1 and 2 were the only options. - Conquest operators are now defined as any user with the OOPT_OPER option set in his or her user profile. They will be listed in the (U)ser list with a '+' to the left of their name. Currently a user marked with OPER can only start and stop server recordings from within the game using 'EXEC' messages sent to GOD. Other than that, there is no difference compared to a normal user. Of course, only someone with shell access on the server machine, and who is a member of the conquest group can run the conqoper program. Root can always run conqoper. In the future, more EXEC commands may be provided to conquest operators so they can become the tin plated dictators with delusions of godhood most of them secretly want to be. :) - Previous versions of conquest (v7.x) used to distinguish between 'local' and 'remote' users. Local users were users who were playing conquest from a shell account on the machine where conquest was installed. Remote users were users playing from a generic conquest account, usually setup by the system administrator, that had the conquest executable as the shell. In this way a 'server' could be run by providing telnet access to this special account from the internet. 'Remote' users were denoted by a '@' next to their usernames in conquest. Since Conquest now uses a client server model, all users are remote. The '@' tag is gone. Even playing on a local machine is still accomplished by connecting to a local conquest server via TCP, so there is no such thing as a 'local' user anymore. Also for this reason, the conquest client is no longer set-groupid conquest - no need, since no special privileges or access is required. If you can connect to a server, you can play. - user and system configuration (conquestrc) have changed significantly. Some options are gone now, others moved into user config, etc. Many of the Sysconf options have been moved into User options (ETA stats, LR torpscan, etc). Some user options like clear_old_msgs have been removed. The 'compile options' are no longer viewable, since they don't matter much from the player perspective, and are of no use to a client anyway. The server (conquestd) advertises certain game flags enabled by the conquest operator (using conqoper) to the client. These flags are displayed on the client login screen, as well as from within the client's (O)ptions Menu. The flags are configured by the operator using the Option menu in conqoper. The current flags are: Refit - refits are allowed. You can refit to one of the 3 types of conquest ships when you have at least one kill, and are orbiting a team owned planet. Vacant - vacant ships are allowed. A ship goes vacant when a client exits the game without self destructing first, while flying a ship. When vacant ships are disabled by the oper, such ships are immediately killed by a 'lightning bolt'. NOTE: In previous versions of conquest, oper's would always go vacant in this case, regardless of the vacant option setting. In this version, every user is subject to this option. SlingShot - the SlingShot bug is enabled. This is a towing bug that existed in the original VMS/RatFor version of conquest. It's a fun bug, and I recieved several emails about it when I inadvertantly fixed it in a later version without understanding it's significance. If you don't know what it does, well... figure it out! You'll need a buddy to make it work though ;-) NoDoomsday - when set, the doomsday machine is prevented from randomly starting up and trashing the universe. Killbots - when this option is enabled, robots are created with a random kill point value. The kill points a ship has affects the efficiency of it's engines, the strength of it's weapons, etc. Normally when a robot is created (by attacking an unguarded homeplanet, etc), it is initialized to 0 kills. When this option is enabled, a kills value is randomly selected. This means that a new robot might prove to be much more deadly than the default 0 kill robot. This may not be a good option to enable on a public server where newcomers play. Fighting a 25 kill robot takes some skill ;-) SwitchTeam - when enabled, users can switch teams at the conquest main menu. - the 'I' command is no longer provided. All of those options have been added to the User options menu. - Users can no longer have multiple ships running at the same time. If you have a vacant ship, you will be automatically attached to it. The game still has most of this code present, so this feature could be added back in the future if enough people whine. - When using the (U)sers command in the client, only those users attached to currently active ships, or attached to entries in the History ring will be listed. There is no point in checking 500 user slots on each client update ;-) For this reason, only the conqoper program will be able to list *all* users. - the client creates it's logfile in your home directory (~/.conquest.log). The conquest server, driver, etc, will still use the system log. Check these for any errors or other oddities. - When you die, you now get to see your ship explode first before being taken to the 'dead' screen. - Recording. - Recording has been completely reworked. Unfortunately, any previous CQR files are incompatible with this release. - you can now select the long range or short range view of a ship you are watching in conqreplay. - The new format uses the same packet protocol that the clients use. This means recording files (cqr's) are *much* smaller and much more efficient (cpu-wise) during the recording process. Another benefit is endian safety. With the old format, recordings could only be played back on the same machine architecture the cqr was created on. Since the recording data is now based on the packet protocol, recordings are now completely endian safe (network byte order is used). So now, some poor slob on his Sun SPARC can play back a recording I make on a lintel machine. - There are two types of recordings: client and server. - see the README file, 'Recording' section for more information on the differences between the two, and how to create and play them back. - Thanks to Clint Adams, the autoconf stuff has been significantly updated. - I looked upon my creation, and saw that it was good. :) 7.2b 1/6/2003 - some reorganization of a few data structures - sysconf, userconf, HasColor, etc.. - Logon() now specifically looks up the CONQUEST_USER home dir in /etc/passwd for cases where one is using a telnet daemon to automatically start conquest. The is needed since telnetd does not changedir to the conquest homedir before execing the conquest executable. 7.2a 12/9/2002 - big patch from Clint Adams adding automake/libtool support and changing direct references from sys_errlist[] to strerror() - added new 'Friend' target for messages. You can send a message to all friendly ships by specifying 'fr'as the destination for a message. - added 'distress_to_friendly' option. If true, sends distress calls to all friendly ships, not just your teammates. The default is off. - added a new, experimental AltHUD option. This is like the regular HUD, but adds some of the information returned from infoship and infoplanet calls to the lower alert line on the main display. This can be useful in battle when messages or other commands remove the info after requesting it. Current info presented is: FA: (Firing Angle). This lets you know the direction that any further firing requests will use, unless a direction is explicitly specified to the 'p' or 'f' commands. TA/D: (Target Angle / Distance). This item displays the Target name, Target Angle and Target Distance obtained in the last infoship/infoplanet request, and is updated whenever you do an info command on any ship or planet. There may be more items forthcoming, though space is limited. The idea here is to present or preserve information that the user can already request. It isn't intended to provide a 'auto targeting' or other type of advantage. It's for information purposes only ;-) To use this, enable the 'Allow Alt HUD' option in the (O)ptions menu from within conquest. Set to 'false' by default. Version 7.2 Sun Dec 1 15:55:27 MST 2002 Jon Trulson - patch from Clint Adams for conqai.c changing 'char arg' to 'int arg' for getopt. - fix problem in conqai.c defend() that would allow multiple robot defenders. This was fairly serious to poor newbies ;-) This bug was introduced in 7.1.2. Sorry. - fixup remote login screen a little, provide a status line (number of live users, ships, their status, etc) Next maybe we can add a MOTD and a QOTD... - reworked cdredo() logic to redraw screen properly in cdget*(). ^L should work properly during prompting now. - bumped up to v7.2. Let's be bold and daring. Version 7.1.2 Sun Jul 4 16:19:40 MST 2002 Jon Trulson - a long overdue update - automatically exclude VACANT ships when deciding whether to create a robot when a home planet is attacked. This problem allowed some remote players to take over home planets without the excitement and stimulation of having to deal with the robots in the process. Shame on you ;-) - way past due for a public update. Sorry. - added the ability to record and playback games ;-) For example: conquest -r somefile.cqr Then to play it back: conqreplay -f somefile.cqr This isn't available to remote players, as I don't know of a secure, reliable way to get the recoded file back to the remote user. 12/27/2001 - added patches by Clint Adams to handle configure's various install location options (libexecdir, sysconfigdir, etc). The programs and data files will be installed according to the values of these items. If you already are using an older version of Conquest, you will need to move a couple of files to their new homes before running conqoper or conquest if you want to preserve your current state and configuration. Old files: /conquest/etc/conquest.common.img /conquest/etc/conquest.log /conquest/etc/conquestrc New files: /var/conquest/conquest.common.img /var/conquest/conquest.log /etc/conquestrc Other files have moved as well, but these are the important ones for preserving state. Version 7.1.1 Wed Dec 26 15:04:50 MST 2001 Jon Trulson - corrected problem where genos weren't always counted. - sends a message when a user leaves the game - fixed bug that allowed a refit while carrying armies - 'E' distress call provides more info. Can be used as a quick status report to team mates. - many things now logged, like resignations, most conqoper actions, and other things... - corrected problem where DEL wouldn't work properly on some systems for deleting text. Version 7.1 Mon Jan 1 11:45:20 MST 2001 Jon Trulson - added a ship refit capability. It's sys-wide configurable (allow_refits), and enabled by default. This allows users to be able to change ship types once they have at least one kill, and are orbiting a team owned planet. There are 3 ship types: Scout (Orion equiv), Destroyer (Klingon/Federation equiv) and Cruiser (Romulan equiv). Robots will be given a random ship type when they enter the game. Users will get whatever shiptype is normal for their team until they change it. Use the 'r' option to refit during play. This change required a new common block, so I had to reset it, losing all current user data on the conquest.radscan.com server. Sorry. The ship type a user is using can be determined by doing an (i)nfo on the ship. Also, the '(/)player list' option will show an 'S' (Scout), 'D' (Destroyer), or 'C' (Cruiser) next to their ship number, indicating the variety they are flying. - Worked with Jef Poskanzer (the original Conquest God) to fix semaphore problems on Sparc systems, and added a new '--with-conquest-group=' option to the configure script so that you can easily choose which group you want conquest to run under. Oh, and we did skirmish a bit, and I actually blew him up ;-) - added message logging sys-wide option (log_messages). Now all messages can be saved into the logfile. - skip users with a negative difftime so they are not expired. I had a problem with my system clock one day - it reset to 1996. And of course, after logging into Conquest, it proceeded to expire all remote users. Bummer. - Fixed typo in remote user login screen. Version 7.0.1 Fri Sep 3 18:20:52 MST 1999 Jon Trulson - This is a maintenance release, fixing some minor bugs and a major one for RH6.0 (uhg), as well as a new port. - Conquest now runs on on Digital Unix V4.0 (OSF1). Thanks to an old Conquest junkie, Jim Anderson (janderson@NOVALIS.COM) for this port. Thanks Jim! DU has the same lex problem that Solaris has... See the SOLARIS/DU NOTES section in the INSTALL file for a hacky workaround. If anyone has the magic syntax to achieve the same effect, but work on all systems, please let me know... It's annoying. - configure.in modified so that the options used on an UNKNOWN system type are more likly to succeed (it no longer assumes a UnixWare system). - one fix to options.c, the ESC cancel wasn't working right - a cast problem picked up by Jim Anderson while doing the OSF/DU port - and of course, the addition of the -D__NO_MATH_INLINES CFLAG required on RH6.0 systems to work around a bug that caused strange conqdriv failures. Version 7.0 Thu Jan 28 21:14:41 MST 1999 Jon Trulson - Remote User support, which should make things much nicer for operators and internet players. A 'remote' player's usernames are always prefixed with an '@' character in all output that shows usernames. See the file SERVER.DOC for information on how to setup and run a conquest server. - A new (O)ptions menu is now available at the Conquest main menu, as well as while playing the game. This menu allows users to view the options compiled into Conquest, view the system-wide options set by the Conquest operator, View/Edit the users ~/.conquestrc options, View/Edit macros, and for remote users: change your password. Operators can change a remote user's password in the (e)dit User option in conqoper. The conqoper program now lets operators View/Edit the system-wide configurables... Per-item help text for each option is also available. You should never need to manually edit the conquestrc files again ;-) - conoper now understands some command line options. Try 'conqoper -?' to see which ones. These make it rather trivial to reset the game on a regular basis from crontab for example. - common block data has been completely restructured. Actually, it is structured *now*, as opposed to the 70 or so parallel arrays that used to be there ;-) The code is much easier to read and maintain, and several bugs were identified and fixed as a result. - new sys-wide options: allow_switchteams - whether new users are allowed to switch teams at the main menu user_expiredays - number of days of inactivity for a user before s/he is expired. - approximate elapsed time (accurate to 1 minute) per player is displayed for each entry in (H)istory now. - the ETA algorithm used for ship-to-ship (only) scans has been re-worked somewhat. Now ship/ship ETA's are calculated using an average closure rate. This mean you need to scan a ship at least twice in a row to get reasonable ETA's. A single scan will assume that both ships are heading directly at each other, as no closure rate information is available. It will also list the ETA as 'never' if there's no hope you'll ever intercept the target ship. - keypad keys are translated into direction keys - now you can aim, and set course using the keypad the same way the direction keys are used. - new common block of 256KB - room for 500 users. (ha!) - standardized 'more' and 'done' prompts. - renamed at386 terminfo entry to at386-uwcq to avoid conflict with linux's at386 entry. This entry is used by UnixWare users that play from the console. ## Now for the bug fixes ## - fixed neg array reference in messaging code. - fixed neg array ref and write in conqoper that corrupted the message ring, user block, and anything else laying around. But only on Tuesdays. - fixed negative Users[] array ref in conqoper sighandler. - fixed off by one in takeplanet() that allowed you to conquer the universe without taking RigelB. - fixed conqoper to not send entry msg when COMMONBLOCK is invalid. (can you say segv?) - fixed invisible user bug (resign, then re-enter). Now Conquest exits when you resign. - fixed evil self destruct bug that caused two killship() calls to be executed when a user was killed while in the process of self destructing. - added extra checks for linux glibc problem, where for some reason fd_set is declared as a typedef rather than a struct. Wierd. - elapsed time bugs fixed. Again. 'VACANT' ships no longer add to the elapsed/cpu times for teams and users. - (U)ser Statistics, and (S) More User Statistics screens now track arriving/departing users in real-time. - fixed locking bug in initeverything(). - bug in listplan() ((?) Planet List) that corrupted page header fixed. - many bugs and oddities with cdgetp() (line based input routine) fixed. Perhaps I should give the 'readline' library a try?? - the lastentry time for a user is now updated whenever a user enters a ship, not just when the ship is first initialized. - isagod() checks are more stringent and reliable. - clog buffer increased. Large logging events don't cause a segv anymore. - fixed bug in astservice relating to message display timing for those with 25 line screens. Those without 25 lines (on which messages are displayed on the 23rd line), shouldn't miss messages anymore when entering a command at the same time a message is being displayed. Those with 25 line terminals will get messages asyncronously on the 25th line, regardless of whether you're issuing other commands at the time or not. - fixed bug where switching teams and then dying in a reincarnated ship would 'do the wrong' thing regarding ship's team selection when you re-entered the game. This rather esoteric bug was found by Dave Payne. Of course. ;-) - conqoper watch(): doomsday 'type' member and display code removed - useless. The doomsday's status is now displayed symbolically in the doomsday watch() screen. - DCL subshell code finally excorsized. Don't need it, don't want it. ;-) - all debug related logging turned off. - on planet list, number of armies is displayed in same color as planet now. Version 6.6 Thu Dec 24 16:03:31 1997 Jon Trulson - added 20 new 'extra' play planets for use by enterprising universe developers. The various planet listers modified to support more than one page of planets. - switched to the use of 'double' as the floating point type instead of 'float' - new common block due to the float -> double change, and the new play planets. - full coloring of LR/SR displays. The color scheme used is alert based.. ie: dangerous things (like enemy ships or planets) are red, team things are green etc. - all other text in the game (and conqoper) was colored by David Payne using a new cprintf() function that can handle embedded attribute codes. - color in conqoper is different, as an operator doesn't (supposedly) take sides. The goal in conqoper was to use coloring for enhancement only (except when watching a ship). - exploding ships. Ouch. Implemented by 'faking' a special type of torp launch. - the messages sent regarding entering/dying in conquest now use per ship information, rather than per user information. This make things consistent, and also works properly for users with multiple ships. - watch display in conqoper is now interupt driven, like conquest. - watch display in conqoper modified to use '<>' or arrow keys to switch from ship to ship. Dave Payne provided this patch. - debug doomsday screen removed, watch display in conqoper now lets you watch from the doomsday's perspective. Patch by Dave Payne. - most frequently used commands (like (r)obot, (k)ill, (/)player list, etc) are available from watch in conqoper. Patch by Dave Payne. - (e)dit user in conqoper now removes the '+' current field indicator as you move around between the various options. - destroying a warlike ship, no longer causes 'invisible' sticky war with that team if you weren't officially at war with that team when you killed it (but it was at war with you). - beaming armies down to a self-ruled planet without bombing it, no longer works. You could take planets this way without suffering any damage, but it would take a long time, and alot of armies. Now when you beam armies down to a self-ruled planet, it is considered an act of war, just like bombing is. - playlist now lists the PID of the controlling ship, or "VACANT" if the ship has no controlling process, or "ROBOT" if the ship is a robot. - you can type long messages now. While typing a mesage, when you reach the end of the line, what you've typed is sent, followed by a '-', and then you are prompted for more text. Much easier to type long messages. Thanks to Dave Payne for this patch. - Conquest has been ported to Solaris 2.6 using gcc 2.7.2.1 - the display will now operate properly when changing your name while flying. Yes. I got killed by changing my name, and forgetting no screen updates were taking place. I had 24 kills too. ;-) - a bug in the driver that caused ship headings to briefly go negative or invalid during a slow turn has been fixed. - a bug in towing that miscalculated relative velocities between two ships has been fixed. This bug was in the original RATFOR code. - fixed bug in untow that caused incorrect warp factors to be set for the towed ship when it was untractored, and the tower was in orbit. Can you say "hyperdimensional shifting"? This bug was in the original RATFOR code. - the handling of multiple ships, and entering while already playing are much improved. Now you get the option of re-incarnating to other ships (if you are allowed multiple ships), and/or creating a new one. Players who are not allowed multiple ships will no longer be blown out of the game if the same user tries to enter conquest (from another terminal for instance). - lots of lint based cleanup... found and fixed several 'minor' bugs that way. *Lots* of unused variables and code removed. - gamlb module removed - no longer needed - most translation (Ratfor to C) macros removed. - combined ioxlb.c, ionlb.c, and ioplb.c into one module: iolb.c - removed conqfig.c module - relevant defs are in defs.h - Reviewing messages lets you scroll back and forth using the arrow keys. - display code moved into new display.c module - several rounding problems related to using abs() when should have been using fabs() fixed. - bug fixed in buildai() that scaled fuel incorrectly causing robots to do dumb things when fuel was low (they always thought they had plenty of fuel). This fix has resulted in smarter robots. Two rules in conqrule had to be modified to cover up a logic 'hole' that became apparent when this bug was fixed. This bug was in the original RATFOR code. - some terminfo entries that work good with conquest are now supplied with the source distribution. - a new 'realclean' target is provided in the Makefile. This target is the same as a 'make clean', but additionally removes files generated by configure. You will need to re-run configure after a 'make realclean'. - some commenting spiffed up. Version 6.4 Fri Mar 28 15:09:02 1997 Jon Trulson - changed phaser graphics to stop when it hits a ship. Can be handy when 'probing' for a cloaked ship, when you're also cloaked. - docloak() fixed so that engine overload is checked, not weapons overload in determining whether you can cloak. - if you destroy another ship, you're automatically at sticky war with that team. - now when you fire torps, phasers are aimed as well. - fixed safectoi() bugs. finally. ctoi() and ctor() modified accordingly. - fixed misspelling in conqstrat so that ROB_SILENT is a valid action. - fixed bugs in targeting. Invalid targets are now reported as such. - configure.in modified so that libl.a/libfl.a (flex/lex) libs are looked for if the other can't be found. Version 6.3 Tue Dec 24 16:59:20 1996 Jon Trulson - the conqstrat rule parser is now operational! Now you can rebuild or modify the robot strategy tables. The current strategy table used by the robots as shipped is defined in conqdata.h. This file was generated by conqstrat using the conqrule file, which defines the robot's actions under certain conditions. I've already added one rule that should lessen accidental robot sun-deaths. No more than 32 rules can be defined. I'm willing to incorporate other 'amusing' robot strategy definitions into the Conquest distribution if mailed to me. Enjoy ;-) - fixed bugs in special() causing certain lookups to return inaccurate or invalid responses, like 'iwp'. - added allow_sigquit in sys-wide conquestrc file. If true then all players can exit immediately using SIGQUIT (normally ^\). - moved player death notification msg code to killship() from dead(). Now you get a message when a robot dies too. - fixed nasty variable collision bug with uname under newer Linux's... This caused a SEGV when uname[][] was mapped into the common block. I wonder why :-) - added extra check to cdinit() to ensure the bkgset() function isn't used with ncurses. Version 6.0 Sat Nov 30 22:50:25 1996 Jon Trulson - Conquest now uses GNU's autoconf facility for portability. - This version has been compiled on FreeBSD 2.2 100696-SNAP. - increased MAX_MACROS from 12 to 24. Now SHIFT F1-12 can be defined as well. Your terminfo entry must be configured properly to take advantage of any of the Fkeys and the keypad. - The common block was modified to support 'phantom' kills for robots. To enable this, define do_random_robotkills=true in the system-wide conquestrc file. If defined, robots will be created with a random kills value, possibly making them stronger, but without screwing up the statistics. Makes them a little tougher and unpredictable. Probably not for new players though ;-) - made some curses calls more efficient. - robots now use 30/70 power allocations instead of the old 40/60. - lots of fixes to the semaphore code to support linux and FreeBSD. Modified semaphore stats line in conqoper to provide more information. - c_sleep() behaves itself better under linux/fbsd - ibuf.c: - moved ibuf related vars from global.h to a new ibuf.h where they belong. - added capability to use 25th line on display (if you have it) to display messages. Much nicer. On some terminals you may need to set LINES=25 and export it in your shell before firing up conquest. If you have color, messages will be displayed in cyan. - fixed rounding bugs in safectoi() and oneplace() - ^L (refresh) handling is much faster, and turns off the display interrupt before refreshing to prevent screen corruption. - if you don't have 25 lines, you will no longer get messages while reviewing old ones, causing strangness. - sighandler modified. CO's need to use QUIT (^\) to exit (without self-destructing) instead of INTR. - removed syscall RESTART dependancies. Too unreliable. - added support for fastupdate option (see ~/.conquestrc and the system-wide conquestrc file). This means that on systems that support setitimer(), you can get 2 updates per sec, rather than one. You get no advantage over another player if your doing 2 updates per sec, and the other player is only doing one, it just makes things seem a little smoother. - conqoper modified to support the -C (create new sys-wide conquestrc file) option. If the system-wide conquestrc file is determined to be out of date, conquest and conqoper will warn you when starting up, and use internal defaults for any new options, until it's updated by 'conqoper -C'. - mods to player edit so that arrow keys/keypad can be used for navigating around the screen in conqoper. - many more formatting bugs fixed in conqoper. - modified planetlist screen to mark 'core' planets (planets you have to take to conquer the universe) with a preceeding '+' sign. - replaced bogus PLANET_SHITFACE with PLANET_ALTAIR, a new, non-core planet, yet *quite* valuable strategically. ;-) Since it's creation, many fierce battles have been fought over Altair. heh - tweaked shield alert displays during a red/yellow alert to be more consistent. - removed blink attr for anything other than a red alert status with your shields down. - tweaked secdriv() to multiply the cooldown factors of weap and engines by PLANET_REPAIR_FAC if orbiting a friendly populated planet. This means you cool down faster in orbit about a friendly planet. - made an adjustment to PHASER_HIT to compensate for the new 70/30 energy split. Rom's had too much adv at close range. They could kill you with 2-3 phaser hits, even with shields up. Romulan phasers are still quite deadly up close. - tweaked COMMONSTAMP (new common block), DOUBLE_E_KILLS (to 40.0), MIN_COUP_MINUTES (not as long), MIN_UNINHAB_MINUTES (not as long). - configuration code mostly rewritten to make more maintainable. - modified cdinit() to not use bkgdset(...) if running under ncurses. It has a bug that corrupts the colors if a backgroud is set, but not at color pair 0 (which under SVID is illegal). Bummer. if using ncurses, you might prefer a black background, so if running under an xterm, set your background to black. - fixed oppedit so that (T)eam ownership works, and in the right circumstances. - changed newrob() to disable OPT_ALERTBELL so that conqoper won't beep when watch()'ing a robot. - conqutil.c: - fixed ownership problems when the log file is created. - do_fastupdate and do_limitbell options added to ~/.conquestrc - players, by default, can now switch teams at the main menu in conquest. - many other small fixes. Version 5.8 Thu Jul 11 11:24:38 1996 Jon Trulson - this version now runs on Linux. This port was done by David Payne . Here are the requirements: GCC 2.7.2 libc.so.5.2.18 ncurses-1.9.9e kernel 1.99.14 (pre-2.0.14) see the README.linux file (in the src dist) for more information. - a new option, rcv_player_msgs has been added to ~/.conquestrc. See ~/.conquestrc for more info on this option. - lots of code cleanup in all modules. Dead functions removed. - conqoper's debugdisplay now shows torp status for a ship symbolically. - all planet lists in conqoper and conquest are now sorted alphabetically. Additionally, all user lists are now sorted by skill level. - torpedo launch() code made more efficient in it's use of semaphore operations. The number of semaphore operations required to launch a spread (3) has been reduced by 2/3 from 12 semops per spread, to 4. This should improve 'hairy' battle performance noticably (on a 486 anyway). - Made message beeping for conqoper #definable - see defs.h. By default it's off. When there's alot of message traffic, it can beep continously. How annoying. - changed logic in conqoper's planet list to eliminate 1 second delay when entering that mode. - changed planet HELL from Empire armies to Self Ruled armies. There is no Empire team at this time. - randomized 'virtual armies' for suns. Used to determine the damage a ship takes when passing near/over one. - Suns are now immune from Malthusian Crisises. This problem sometimes resulted in *weak* suns. - Jinx is no longer created with 512 armies. Ooops. ;-) - fixed macro expansion bug that sometimes caused a Malthusian crisis to set a planet's population to 0. This made for easy pickings. - Conquest no longer requires the 'conquest' user account. The 'conquest' group will always be required (unless you