- Pentium 3 code compiles, runs w/ MS VC++ 6.0, SP5 & Processor Pack. [Ken, NM] - Fixed [CENSORED] crash bug in Console::Message(). [Ken] - Fixed Windows 2000 keyboard bug. [Ken] - Moved "Windowed" mode to the beginning of the escape screen graphics mode list. [Ken] - Converted ZLib project into a static library. [Ken] - Added generic pitch and yaw turret controls. [Ken] - Added safety checks for dt == 0 [Ken] - Physics uses sphere center instead of matrix position for ground check. No more turrets in pools! [Ken] - Replaced tug/cargo pointers with handles for safety and proper load/save. [Ken] - Time to next enemy check is now a function of skill, and is generally somewhat shorter. [Ken] - Consolidated "get attack target" code between air and non-air version, selecting appropriate mode via sub-attack flag. [Ken] - Incremented the file output version. [Ken] - Added "isSingle" flag to game objects to indicate that there can be only one on a given side. [Ken] - Added slot blocking function to TeamSlots to prevent multiple build of one-per-side objects (Bomber Bay, Bomber). [Ken] - Fixed weapon fire rate bug triggered by picking up a weapon powerup. [Ken] - Weapon shot delay is now independent of salvo count and salvo delay. This change affected some weapon assets. [Ken] - Bomber now ignores attack command until it is reloaded. No more multiple attack bombing runs! [Ken] - Enabled Turret attack command and menu item. [Ken] - Turreted vehicles use turret controls instead of directly modifying object matrices. [Ken] - Assault tank uses engage range instead of normal blast distance; should stop tank from getting too close. [Ken] - Consolidated body aim and turret aim into base Craft class. Aim parameters are now stored in CraftClass. [Ken] - Thrust now drops to zero at high altitude. Should eliminate inappropriately flying craft. [Ken] - No free Bomber with Bomber Bay; cleans up some special-purpose code in the Factory and CommandPanel. [Ken] - More secure code throughout network layer (snprintf, buffers moved to static memory rather than stack). Still not 100% up to OpenBSD-style security levels. :) [NM] - MapURL parameter added to .inf file, displayed in server message if user didn't specify a server message. [NM] - Cheat of being able to get on CPU team in MPI fixed. [NM] - Cheat of being able to get into editor in MP fixed. [NM] [NEEDS TESTING!] - DoGameover() in scriptutils.cpp properly respects the SecondsFromNow parameter, so delay after game winning is in place. [NM] - Compiled with DirectX 8 instead of DirectX 6. [Ken] - Replaced priority queue implementation in Path.cpp with a heap; should greatly improve performance for path-finding. [Ken] - Precompiled headers on most of the DR2 libs (except graphics-- caused link then runtime problems). [NM] - Fixed some dodgy DX code in DR2 Input::Input.cpp, getting rid of DX errors to log window. My system seems more stable, not 100% sure if DX8 screen resolution reset bug is fixed. [NM] - Work on making alt-tab not stop game (not complete/committed yet) [NM] - Max # of DX resolutions kept internally bumped from 32 to 256. [NM] - Cleaned up scrap handling in Construction Rig. [Ken] - Added "blink" property to satellite view Logout button. [Ken] - Added scroll bar to Video Modes list in Graphics menu. [Ken] - Fixed scrap value of ISDF Service Truck and Scion headler. [Ken] - Cleaned up and accelerated camera sphere and box tests. [Ken] - Accelerated generation of terrain cluster meshes; very little frame rate hit while scrolling around in satellite view. [Ken] - Alt-enter windowed toggle is disabled in MP. [NM] - All AI units are set to skill level 3 (max) in MP Strat, MP Instant [NM] - Scav-cleaning code in instant.dll, MPInstant.dll (slightly tweaked from previous releases) [NM] - COM resource leak in audio code should be properly cleaned up after now. Still could use some further examination of that code. [NM] - Fixed pitch turret origin on ISDF Assault Tank. [Ken] - Generalized recoil to any weapon on any vehicle. Changed assets to take advantage of this new feature. [Ken] - Changed interface sliders to proportional. [Ken] - Unit aiming cones now a function of skill, and generally tighter. [Ken] - Removed control-clear from unit attack tasks that prevented steer and pitch from reaching their full values; the Scion Archer can now properly aim at and hit air targets. [Ken] - Renamed local targetDir in UnitTask::FireWeapon that provoked a compiler (or possibly just debugger) error; may have prevented Archer from firing. [Ken] - Cleared movable flag on start deploy and set movable flag on finish undeploy for TurretTank and Archer; avoids unnecessary pathing. [Ken] - Bomb now inherits Bomber velocity. [Ken] - Powerups (including Bomb) now have greater acceleration while maneuvering in the air. [Ken] - Bomber takes into account its velocity when determining the bomb drop point; prevents Bomber from getting caught in the blast. [Ken] - Fixed crash bug when >10 numbered units appeared on radar. [Ken] - Fixed the ALT+TAB input screwup. [Ken] - Disabled rendering while the window is minimized. [Ken] - More sound code cleanups, resource leaks yanked. [NM] - Movie playing code yanked, as it was causing DSound errors and resource leaks. [NM] - More headers moved to precompiled headers. [NM] - Bandaids placed in constructionrig.cpp to avoid null pointer errors [NM] - Bink movie player now gets pointer to DirectSound object we're using. This fixes sound and movie (now re-enabled) errors. [NM] - Random sound code tweaks [Ken, NM] - Back to original DDraw EnumerateDevices call. This ought to get the listing of resolutions back to 1.2 spec. [NM] - Less spam from input.cpp [NM] - Keynames.cfg added to addon, fixes keyboard issues. [Ken, NM] - MP map list searches addon121 directory also now. [NM] - Fixed problems when the Scavenger or Recycler gets interrupted while deploying. [Ken] - Eliminated perpendicular velocity from collision damage calculation. This reduces damage from "glancing" blows. [Ken] - Fixed mouse wheel input bug (finally!) [Ken] - Reduced hover physics flying without severe loss of control. [Ken] - Simplified hover physics logic slightly and tightened up handling. [Ken] - Separated FamilyNode::GetLastInfo() and FamilyNode::SetLastInfo() into separate Quaternion and Position functions. [Ken] - Changed implementation of TurretControl objects. This fixes the screwed up geometry on the Scion Guardian introduced by the previous implementation. [Ken] - TurretTank is now based on the Deployable base class. This cleans up its logic and fixes some deployment issues. [Ken] - Improved implementation of Deployable base class. [Ken] - Fixed the "off by one" bug in the video modes menu. [Ken] - Fixed head orientation and animation issues on the Scion Mauler. [Ken] - Fixed weapon firing issue with the ISDF Rocket Tank. Changing the order of the weapons provoked a bug in the AI weapon selection code. [Ken] - Fixed Gun Tower/Spire target tracking; it used AimBody instead of AimTurret, and never calculated turretFactor. [Ken] - Fixed Construction Rig scrap "overcharge" in multiworld games. [Ken] - Made build dependency check multiworld aware. [Ken] - Added blocked slots to TeamSlot load/save functions. [Ken] - Wireframe mode doesn't work in MP. And I was feeling a bit nasty about it [NM] - Cleaned up and improved AI weapon selection algorithm. This fixes the mortar-equipped ISDF Assault Tank and the ISDF Rocket Tank, among others. [Ken] - Improved default weapon range calculations to take gravity-affected shots into account. The range is now the minimum of lifetime times velocity and velocity squared divided by gravity. [Ken] - Switched standard Mortar to alternating fire for the ISDF Assault Tank. [Ken] - Moved order and event message sounds to race-specific files. [Ken] - Moved factory panel weapon list to race-specific files. [Ken] - Multiworld setting for session is controlled by server now -- and in interface [NM] - Clients should not be able to set ivars inappropriately locally [NM] - Teams: On/Off items removed when inappropriate, not just made inert. [NM] - Increased buffer size so that memory snapshots work. [NM] - Back to memory system that keeps Win98 happy. [NM] - Tweaked compile options on less-used libs-- should result in smaller binaries now. [NM] - Fixed stuff in project file to have correct relative path. [NM] - Less spam in the Battlezone.log file re controls [NM] - DLLs compile for speed now. [NM] - Fixed AMDMathHack.cpp inconsistency w/ precompiled headers. [NM] - .sym files correctly built for each build type. [NM] - Improved implementation of RecoilControl. Like TurretControl, it no longer inserts extra nodes into the object hierarchy. [Ken] - Added RecoilControl save to Carrier. [Ken] - Improved generation of ordnance between simulation steps by calculating interpolated world matrices. A bit more expensive, but really nice. [Ken] - Fixed Carrier copy constructor. [Ken] - Integrated terrain and building intersection into a single function. This simplifies the code, allows true terrain collision, prevents vehicle pop-up when hitting walls or buildings, and allows bullets to enter tunnels. [Ken] - Cleaned up bullet box-collision code. [Ken] - "Bounce Bombs" (MDM, JAX) explode when hitting buildings but not terrain. [Ken] - Non-interacting buildings (canInteract = 0) treated as terrain. [Ken] - Fixed non-indestructable tunnels in "DM: Tunnels". [Ken] - Fixed "bouncing" pilots. [Ken] - Fixed pilots falling through the ground. [Ken] - Fixed tug drop-off problem. [Ken] - Improved and simplified ballistic calculation in the Mortar. [Ken] - Moved DirectSound initialization to before startup movie. Maybe this is the last sound bug (hah) [NM] - ISDF*.dll, Scion*.dll output filenames properly differentiated in release vs debug builds [NM] - Cinematics should work from SP now, including Scion01.bzn [NM] - AVs reported on developer board fixed, including vehicle customization [NM] - Fixed potential infinite loop trying to get terrain height outside of the world. This is just a bandaid over the problem, though. [NM] - HACK!s to person.cpp and landcreature.cpp - reset them to center of map if they went outside of the world. This may cause problems down the road. [NM] ---- 1.21beta 4 released. - Fixed line-of-sight issues on buildings due to TerrainClass::GetIntersection returning collisions with terrain-owning objects. [Ken] - Weapon carrier updates assault flags and weapon groups on deploy/undeploy. [Ken] - Changed Tug pick-up AI task to reflect the Tug's "gravity well". [Ken] - Fixed screwed-up recoil controls. [Ken] - [Physics handling changes] [Ken, logged NM] - Fixed AV reported on messageboards in Gototask.cpp [NM] ---- 1.21beta 5 released. - Extensive rework of AimAt code: fixed poor handling of circle-strafe, replaced constant weapon lead lag with aim "jitter". [Ken] - Fixed sub-timestep creation of ordnance. [Ken] - Fixed deploy/undeploy weapon mode bug. [Ken] - Moved mass calculation to Entity from its sub-classes (GameObject, etc.). [Ken] - Fixed sign error in GroundCheck handling of small velocity; should fix the "hang" problem in slow collisions. [Ken] - Modified Tracked physics to allow better handling. [Ken] - Rewrote file CRC routines to detect bad assets in multiplayer. Should be an order of magnitude more precise. Also moved the preloading of assets (w/ more added to list) to early in the load stage for hopefully better ram presence at end of load. Thanks to the source who reported this exploit. (Keeping it anonymous for now; speak up if you want credit) [NM] - Wireframe mode *really* disabled in MP. Thanks to the source who pointed out that I didn't lock down all the options... (Keeping it anonymous for now; speak up if you want credit) [NM] ---- 1.21 beta 6 released - Twiddled Hover and Tracked physics, once more. :P [Ken] - Reduced calculated masses in Entities.cpp [Ken] - Fixed multiple "only one allowed" messages [Ken] - Asset check should work in release builds now [NM] - Tweaked terrain handling for odd cases. This may help scion01.bzn [NM] - AIPs selected by dll are logged to console now. Also, AIPs in addon have been trimmed to match 1.2's selection-- try deleting your addon121 folder and re-unpacking if you're still having problems with asleep AI in some missions. [NM] ---- 1.21 beta 7 released - One more attempt at Tracked physics: much better traction, automatic leveling. Scavengers and Assault Tanks maneuver much better. [Ken] - Fixes to a bunch of AVs reported on boards, email [NM] - Optimized out references to localize.odf ingame. [NM] - Tries much harder to play CD music from first drive it can get ahold of via Windows calls. Which drive that is (CD, CDR, etc) doesn't seem to be user-selectable. Even so, this might fix the "no music w/ multiple CD drives" bug. [NM] - Added Stationary() check back to Tracked vehicle physics. This makes deploying Scavengers and Recyclers work correctly. [Ken] - Switched Factory Panel weapon variables from config string to list box index. This should fix vehicle config cheats in MP. [Ken] - Added arrow key scrolling to the Satellite view. [Ken] - Strategy02.dll, mpinstant.dll should print "game over, X won" message once. [NM] - mpinstant.dll is talkative now. Feel free to suggest more taunts in the right thread on the BZ2 messageboards. [NM] ---- 1.21 beta 8 released - More taunts in MPInstant.dll. 20 second timeone between taunts, and it won't print the same taunt twice in a row from a given category. [NM] - Allowed UnitTask::SelectWeapon() to pick non-enabled weapons. This fixes some Turret/Archer problems. [Ken] - Separated Tracked physics omegaSpin into omegaSpin and omegaTurn, and generally reduced the high turn rates on tracked vehicles. [Ken] - Fixed the "strafe uphill" problem with Hover physics. [Ken] - Simplified terrain cluster implementation in anticipation of making collision array multiworld-aware. [Ken] - Leaving MP game while in guntower won't cause the guntower to be destroyed when you leave. [NM] - Replaced the terrain map cluster mesh cache with a much simpler implementation. This should fix the terrain crash when joining. [Ken] - Service Truck chooses targets more intelligently, within a larger radius, and including buildings. [Ken] - Partially consolidated collision data into MeshRoot. The MeshRoot now contains the only copy of the collision vertices, face planes, face indices, and face LRU counters, saving time and space. CollisionArray still builds the cluster octant face lists, though. [Ken] - GamePrefs.ini (look for it in addon\config) file created, a whole bunch of items in it now. More soon. [NM] - More MPI taunts, better code organization. [NM] - Gamespy server queries moved to threaded organization. This should make the ping times in the pre-game server list correspond closely to the Gamespy shareware browser, and in-game pings. [NM] - Fixed some terrain collision issues with Scavengers and micro-plans. These were generating points below the terrain, making the terrain height and normal code do a lot of extra work. [Ken] - "Laps" should show correctly in pregame setup for Race DM types. [NM] - Changed calling frequency (not calling convention) to MP DLLs. Previously, it called ObjectSniped/ObjectKilled only when a player (local|remote) had been sniped/killed. Now, it calls it for all sniped/killed objects, player and AI. [NM] - Changed Strat,MPI,DM DLLs to reflect new calling frequency. Now, snipes and kills by humans should get proper scores. [NM] - Bots in DM DLL. Seems to work fine in dmtitan01.bzn. Odd lockups in Spin Cycle (infinite loop in pathing/targeting? Hard to tell.) [NM] - /noassetcheck commandline param [debug ONLY]. For speed of testing. [NM] - Installer. [NM] - Optionally calls the console cmd ai.calccliffs on loading a savegame. See GamePrefs.ini to toggle. [NM] - DLL counts in the assets check now. This should solve some of the problems with some MODs that updated some DLLs (G66, mainly). [NM] - Changed "Can't start HW Direct3D 6" line to DirectX 8, and added URL to download DX8. [NM] - Fixed bug in IFace::MsgBox that wouldn't calculate line lengths correctly for multi-line dialogs. [NM] - Bad assets dialog should always appear at end of session if appropriate. Text in it greatly expanded to clue in folks, should they have passed basic literacy. (Triggering bug immediately above :) [NM] - Installer updated to rename off some 1.0-1.2 .bzns that were causing duplicated entries in the MP maps list. Also has nice big disclaimers that 1.21 is kind of unofficial. [NM] - Cap on potentially infinite loop in craft collision code. This may lead to less "accurate" collisions, but may also speed things up slightly when lots of collisions are going on. [NM] - Spread out world rebuilds in multiworld. This may be a fix for the "0.94fps" bug later on in games (or on some joins). [NM] - Changed optimization flags on memory allocator leaf function. This may help pinpoint an AV reported several times on the boards w/o a callstack. [NM] - Fixed generation of concave quads in CollisionArray. This fixes the ray-hit problems with the terrain (finally). [Ken] - Changed debug collisions to draw the entire object at once instead of individual clusters. This eliminates some excessive overdraw. [Ken] ---- 1.21 beta 9 released - Auto view selection based on craft type added to GamePrefs.ini. [NM] - Server list passworded column sorts plain, (P), (V) and (X) games correctly now (in that order by default). Join button disabled for (V) and (X) sessions, as it should be impossible to join them. [NM] - Fixed a flaw in TrisToQuads that produced duplicate polygons. [Ken] - Consolidated all collision data into the mesh root. This eliminates all per-cluster information from CollisionArray, saving space and opening the way to multiworld-aware terrain. [Ken] - Completed multiworld-aware terrain collision. CollisionArray is now a static "helper" class, and the terrain contains pointers to mesh entities instead. [Ken] - Fixed some more terrain collision bugs. [Ken] - Added "need line-of-sight" flag to WeaponClass. This allows the Comet Cruise missile to lock on through terrain. [Ken] - Added some more .wav files from BZ1 that were still being referenced by ODFs [avturre[45].wav, among others]. Please speak up if there are still more missing wav files. [NM] - Changed code to accept more than one connection with the same remote IP. This should make people behind NAT/ICS/IPMasq gateways happier. [NM] - Added more AIP stages for mapmakers. Previously, 'stage1' 'stage2' and 'stage3' were available. Now, 'stage1' thru 'stage32' are available, with the game counting the number available at map load time. Any break in the order stops the search, so a map with stages 1,2,3,4,6 would only use 4 stages, 1..4. [NM] ---- 1.21 beta 10 released - Changed glow textures to work like replacement textures. For a given texture name, *00.*, it looks for *a0.* as the glow texture. This fixes inappropriate glow texturing of the cockpits of Scion vehicles. [Ken] - Scavenger no longer uses the ammo variables to store scrap. This fixes an exploit where a player can service a Scavenger with a Service Truck or Healer to produce unlimited scrap. [Ken] - Fixed deployment malfunction in units lacking a deploy animation. [Ken] - Added in replacement interface elements, meshes for ibgtow, fvatank provided by Dutch Boy. [NM] - Fixed collisions in multiplayer games. The asset preload builds the collision data, but the terrain had not been loaded yet. Preloading assets after loading the terrain solved the problem. [Ken] - Fixed RigLookAt in ConstructionRigProcess. The function uses AimAt, which sets steer instead of pitch. Moving the calculated steer to strafe allows the ConstructionRig to rotate properly. [Ken] ---- 1.21 beta 11 released - Fixed incorrect alpha values on height indicator lines in the cockpit radar. This reduces visual clutter as the objects fade out, making the radar a bit easier to read. [Ken] - Changed neutral object color to light grey, so white scrap pieces and scrap pools will stand out on radar more. [Ken] - Added alphaSteer to Tracked physics, making steer and throttle more independent. This greatly improves vehicle handling, especially for AI units. [Ken] - Updated physics parameters for Tracked vehicles to make them handle better. This takes advantage of the new alphaSteer parameter. [Ken] - Scaled Scavengers back to 1.0 from 0.75. This makes them match the Extractor, and gives them a bit more "heft" while driving around. [Ken] - Updated Scavenger speech messages to use previously-unused samples. This also makes Scavengers produce more informative responses. [Ken] - WaterLayer now takes the terrain cropping region into consideration while saving. [Ken] - Reduced scrap cost of the Scion Guardian from 45 to 40, allowing it to be built without any Extractors. This may be a mistake. [Ken] - EMP Lockdown now disables powered buildings, making them act as if they have no power. This may make EMP too powerful, so it will need some testing. [Ken] - Modified the ISDF Tech Center so that only one can be built. [Ken] - Separated MagnetGun and MagnetMine drag values into center and edge values. This allows finer control over the drag effect. [Ken] - Moved calculation of animation translation tables from ConstructionRig, LandCreature, and Walker to ConstructionRigClass, LandCreatureClass, and WalkerClass. This saves a bit of memory per object, and greatly speeds up initialization of these objects during a world switch. [Ken] - Initial pass at in-shell interfaces on a per-map basis, modifications to Strategy02.dll to support new features. DM, strat should now be done; MPI punted to get this build out the door. Also reorganized server/client options to be more consistent, readable. [NM] - Added dropoff point to Armory. This is the default location for ejected powerups. [Ken] - Armory::SetTarget now accepts an AI command info structure, allowing the target to be an object, a location, or (by default) the rally point. This should make the Armory better at hitting moving targets. [Ken] - NavBeacon::Init no longer automatically picks a slot. Client code now decides which slot the beacon should go in, eliminating some nasty special-case code. [Ken] - Recycler, Factory, and Armory display a yellow nav beacon at the dropoff point. Previously, the location was invisible. [Ken] - Added all DutchBoy modified assets. [Ken] - Fixed bug to make poweruser in Gameprefs.ini squelch idiot dialogs. [NM] ---- 1.21 beta 12 released - Installer tweaks. Installer will overwrite files it needs to install, regardless of any read-only flag. Installer notes which directory it last installed to in registry, presents that as default next time you run it. Changed displayed text slightly. [NM] - Enabled Special hardpoint on ISDF Mortar Bike. [Ken] - Increased the lifetime of Resin Mortar ordnance, making it a useful weapon. Also changed weapon to fire in salvos of five, fixing a shot emission bug. [Ken] - Strategy02.dll only has 2 starting options: 0 or 2 turrets. Fun vehicle selections moved to MPI (some people need all the help they can get). MPI options based on strategy02, extended. [NM] - Fixed potential memory overrun in Gamespy server list. [NM] - Clientside interface tweaked while options screen up. [NM] ---- 1.21 beta 13 released - Moved explosion from CollapseMesh to Collapse object. Creating explosions at render time is inadvisable when damage is involved. [Ken] - Replaced the nasty IsGameObject() test in the entity rendering code with the FamilyNode::IsGameObj() method. This is the same method that the terrain collision code uses. [Ken] - Replaced ENTITY type bits and accessor functions with virtual functions. This saves some space in the ENTITY object. Previously, there were 33 bits, making the ENTITY flags take up 8 bytes (d'oh!). [Ken] - Added race-specific default explosion ODF files: ISDF (iexplosion.odf), Scion (fexplosion.odf), and generic (explosion.odf). This should allow mod makers to customize explosions per-race without changing every single vehicle and building. [Ken] - Added explosion class and particle effect class to Chunk constructor. Previously, these values were hard-wired into the Chunk code. [Ken] - Added sixth and seventh chunks to CraftClass explosion info (iochnk06.xsi and iochnk07.xsi). There may have been a reason why they were not used before... [Ken] - Added damage particle effect class to CraftClass ("damageClass1" through "damageClass4"). This allows the Craft to specify which visual effects it uses for light, medium, heavy, and destroyed states. [Ken] !! EDIT NM 8/27/05 : looking at the code, it's really "damageEffect1" thru "damageEffect4". Please excuse the confusion. !! - Added snipe ("xplSnipe"), chunk ("xplChunk"), and crash ("xplCrash") explosion values to CraftClass. Chunk and crash explosions specify the destruction effects for debris created in the primary explosion, allowing mod makers to customize explosions per-vehicle. [Ken] - Replaced nation test in Recycler, Factory, and ConstructionRig with chromeEffect flag for build effect. The chromeEffect flag defaults to the race-based value (false for ISDF and true for Scion), but can be overridden. [Ken] - Moved MapLookup function out of GameObjectClass.cpp into its own file. This is mostly an issue of "tidiness". :) [Ken] - Removed sixth and seventh chunks; they looked bad. [Ken] - Increased Turret rotation rate by 50%. This will prevent Scouts from approaching a turret from behind, closing to within 15-20 meters, then circle-strafing around it without taking any damage. [Ken] - Decreased Scion morph time from 5 seconds to 3. This more closely corresponds to the actual morph animation, and makes morphing units more effective against mixed combat and assault groups. [Ken] - Day Wrecker no longer detonates when it hits a friendly objects. This should stop the Bomber from destroying itself. [Ken] - Updated logging from terrain.cpp if it has to try and search around for nearby points to find the ground. Check out battlezone.log for info; please send a copy of that on if scion01.bzn (Transformation) is still giving problems. Also, a savegame after the problem hits would be appreciated. [NM] - Upped code warning level to 4 (max). Not sure who ever dropped it (I seem to remember upping it to 4 just about 3 years ago), but warning level 4 exposes a whole lot of *glaring* mistakes. Fixed a whole lot of variables getting used before they could be initialized in a few dozen files throughout the code (including some of mine). [NM] - Moved some function-statics in the network timesync code to being session globals, and reset them properly at end of game/session. [NM] - Instrumented out a lot of vehicle controls issues, trying to track down an issue with NANs (Not a Number) filtering into some AI controls. Found out it was a collision/unit avoidance code doing a floating point divide by zero. Naughty code. Bad code. Fixed. Looked up similar lines of code, and fixed them as well. [NM] - Strat, MPI DLLs forgot to hand out the customary 40 scrap at the start of a game. Ooops. [NM] ---- 1.21 beta 14 released - Stopped ViewCineractive::InitSegment from accessing path points outside the legal range. This finally solves the cinematic crash in scion01.bzn (Transformation). [Ken] - Fixed bug in ConstructionRig::QueueBuild where the build item would be marked as blocked even if it didn't get queued because of insufficient scrap or power. [Ken] - Fixed crashbug in Chunk.cpp which caused a crash on the first multiworld swap after blowing up something in multiworld. [NM] ---- 1.21 beta 15 released - Fixed up MDM Mortar: added a bounce-off-building flag, increased ammo cost to be slightly larger than a normal motar, changed damage to respect armor and shield ratings, got the bounce sound working, and stopped the flying ordnance sound when sitting on the ground. [Ken] - Added more DutchBoy assets. [Ken] - Changed the Recycle command from the "~" key to the "0" key in the command menu, making it hard to hit by accident. [Ken] - Fixed incorrect command list for deploying and undeploying morph vehicles. Previously, some commands were out of order relative to the undeployed and deployed menus. [Ken] - Jump controls pilot's rate of descent instead of control magnitude. This makes flying pilots behave somewhat more like BZ1. [Ken] - Increased pilot spawn height from 25 meters to 200 meters. This should help reduce spawn-killing and make returning to action take a bit more time. [Ken] - Improved hover vehicle jumping ability slightly. [Ken] - Increased "cushioning" effect as a hover vehicle approaches the ground. This should reduce the freqency of vehicles "bottoming out" and subsequently reduce damage from collisions. [Ken] - Eliminated low-pass filtering on the volume of the hover vehicle "flying" sound. Previously, the sound would fade in and fade out very slowly. [Ken] - Replaced the hard-coded ISDF pilot "jump" sound when hopping out of a vehicle with the actual pilot's jump sound. [Ken] - Made UnitTask::LookAt() bail "safely" if the angle to the target was not a number. This should fix (once and for all!) scion01.bzn ("Transformation"). Ken may want to fix up the math slightly in the future. [NM] ---- 1.21 beta 16 released - Consolidaded BZ2 application and DR2 library CRC generation code into the DR2 library, eliminating redundant code. [Ken] - Fixed wrong x start in TerrainWorldPart Init() and Set(). This may have been causing some terrain issues in multiworld games. [Ken] - Cleaned up most of the compile-time warnings in both release and debug builds. This uncovered the TerrainWorldPart bug above. [Ken] - Fixed a dumb crash bug created while replacing the hard-coded pilot "jump" sound when hopping out of a vehicle. [Ken] ---- 1.21 beta 17 released - Server's allowed vehicles is now visible after tweaking extra options. [NM] - Updated MDM detonation logic to bounce off non-interacting objects. This should prevent some spurious detonations. [Ken] - Removed intrinsic radar damping from APC, Archer, Bomber, and deployed Turret Tank. Damping is now limited to the RED Field, Jammer, and canDetect = 0. [Ken] - Cockpit Radar and Map Radar stop drawing objects when jammed. [Ken] - Damped objects (RED Field and within Jammer radius) cannot be targeted or pointed at with the reticle. This makes jamming much more significant. [Ken] - Eliminated "satellite visibility" created by buildings and replaced it with conventional radar visibility. Any objects within radar range of a friendly unit or building will appear normally in the satellite view. This should make the satellite view much more useful. [Ken] ---- 1.21 beta 18 released - Moved FindAnimCycle calls from HoverCraft, MorphTank, and AirCraft constructors to HoverCraftClass, MorphTankClass, and AirCraftClass. This should speed up creation of these objects in multiworld. [Ken] - Added a new sound for terrain collisions. Previously, the ground collision code played the building collision sound. [Ken] - Made yet another hover physics tweak based on EasyTarget's description of his problems with the vehicle handling. Vehicles now repel away from obstructions instead of popping up over them (1.2) or crashing into them (1.21b18). [Ken] - Increased lift damping on powerups to prevent them from "bouncing" when they get spawned in at ground level. [Ken] ---- 1.21 beta 19 released - Fixed collision bug in Bounce Bomb due to incorrectly-placed parentheses. MDM and Jax should now explode when hitting a vehicle. [Ken] - Return of the classic ground-following physics! [Ken] - Salvo-firing weapons now report the cost of the entire salvo, making the shots-remaining calculation more relevant. [Ken] - Fixed physics behavior of empty hover vehicles. Due to a small coding error, they tended to slip downhill with little resistance. [Ken] ---- 1.21 beta 20 released======= - Restored craft ground-clamp code. This should stop vehicles from falling through the ground, and restores compatibility with 1.2 physics. [Ken] - Added low-pass filtering to control animations. This should make the fins move more smoothly on hover vehicles and air craft. [Ken] - Added Wil Stahl's updates to Scion Gas Mortar and Scion Artillery. The Gas Mortar does far more damage, but costs a huge amount of amunition, and the Artillery fires twice as often as before. [Ken] - Attempted to fix the control normalization for hover vehicles. [Ken] - Bumped user profile version number; this forces a reload of the input bindings to deal with the increased number of mouse buttons supported in DX8. All other profile values will be left alone. [Ken] - Added ownsTerrain flag to the Scion Jammer to prevent other buildings from being built on top of it. [Ken] - Core single-player missions now use the Core load screen instead of the Dark Planet load screen. [Ken] - Fixed excessive maneuverability of the ISDF Rocket Tank. It now turns and accelerates slightly faster than the Assault Tank. [Ken] - Non-wireframe editor view now shows the sky, while wireframe non-editor views show a solid fog-colored background. [Ken] - Added support in the SprayBuilding class for rotation rate and shot delay. This allows much more flexibility in how the object behaves. [Ken] - The ISDF Splinter Bomb now fires a larger number of less-damaging projectiles over an extended period of time. This reduces the performance cost of the weapon, and makes it somewhat analogous to the Scion Gas Mortar. [Ken] - Bullets now perform the entire time step, even after colliding. This prevents the Bounce Bomb and Splinter mortar shells from falling through the ground. Previously, the bullet would discard any time left after the collision. [Ken] - Added deployOffset to ScavengerClass to eliminate the hard-wired constants in the ScavengerProcess AI code. [Ken] - Switched pilot's rate of descent back to control magnitude. EasyTarget pointed out that jump would allow easy air-snipes. [Ken] - Reduced elasticity of craft collisions by 50%. This should eliminate some of the excessive "bounciness" of the craft. [Ken] - Replaced the UserProcess off-map handler with a spring-like force field. The player never loses control of the craft, and the field prevents the vehicle from ever escaping the play area and getting trapped. [Ken] - After much discussion pro-editing in MP, decided to leave a known AV on trying to open the editor in MP in. Punks deserve nothing less. [NM] - Increased spring and damping forces in torpedo physics. [Ken] - Slightly increased effectiveness of Comet Cruise explosion. [Ken] - Replaced Mini-Comet ordnance with a more conventional radar missile. [Ken] - Greatly increased speed of Comet Cruise and Wasp missiles, making their speeds commensurate with other missile ordnance. [Ken] - Increased health of the Wasp missile to 500 from 100. [Ken] - Replaced ordnance sound of Mini-Comet and Comet Cruise. [Ken] - Increased AI range of the Wasp missile to 300 from 200. [Ken] - Updated class ID and identifier flags on Boid to mark it as an animal instead of a vehicle. This eliminates the inappropriate damage-smoke, and gives it the proper default explosion. [Ken] ---- 1.21 beta 21 released======= - Viewer interface control now displays the neutral pose of vehicles. This makes items in the game shell and factory panel look more natural. [Ken] - Deploying Scavengers and Recyclers and constructed vehicles and buildings now properly displays team colors. [Ken] - Added CTRL+G as a game key for screen grab. [Ken] - Fixed hidden vehicle treads in interface controls and during construction. The new code no longer requires that the tractor geometry in the model be hidden, so tractor geometry in all tracked vehicles was renamed to remove the "__h" extension. [Ken] - Service Truck AI now respects the craft "engageRange" value when searching for an object to service. Previously, it was hard-wired to 200m. [Ken] - Halved speed of Comet Cruise and Wasp missiles based on testing feedback. Now, both move at 30 meters per second. [Ken] - Reduced health of Wasp missle from 500 to 300. [Ken] - Moved aim-scatter code from AI AimAt to Craft AimAt functions. [Ken] - Adjusted the Tracked vehicle friction model a bit, and strengthened the force that rights the vehicle as it starts to pitch or roll. [Ken] - Edit view keys (F9-F12) now act as toggles, making it eay to exit these views. Previously, it was virtually impossible to get out. [Ken] - Building construction, deploying Scavengers, and deploying Recylers all push non-terrain-owning objects out of the build zone. This specifically prevents the placement of turrets inside buildings, though it clears out powerups and scrap as well. [Ken] - Reduced engagement range of Service Truck and Healer to 100 meters. [Ken] - Reduced rotation rate of Turrets to halfway between the 1.2 value and the increased value from beta 14. The previous value made turrets much too effective at defending an area. [Ken] - Fixed pregame shell messup w/ Extra options. Thanks to Menacer for pointing out how to replicate it. [NM] - Many sky.* and other console-settable graphics options disabled in MP. The map designer sets the rules for those settings. [NM] - Changed graphics code settings to compile at max warnings, fixed two instances of possibly unused varbs being used. [NM] - Scavs got a bit larger in code recently. entities.cpp changed to compensate. [NM] - DLLs get network ivars from the (more trusted) cache system. This may help eliminate a source of clientside gamestate checks. [NM] - Replaced Trace("foo",...) with Trace(("foo",...)) throughout the code. This removes unused formatting strings from the output binary (the linker is STUPID). [NM] - Split off maps from installer, cleaned up archive preparation scripts. This will make things nicer to download, as the maps will be a relatively static 6+MB .exe, rarely downloaded, and the constantly changing assets will be easier to download. Will re-unify before final release so end users will have one handy download. [NM] - Fixed the "Player may have invalid vehicles" test so that it isn't tripped when a scion vehicle is morphed. [NM] - Taunts are disableable from MPI extra options page. This is a purely local decision; the host's setting is not propagated to clients. [NM] - Expanded starting distance search field for MPI/Strat. This will lessen some of the massive traffic jams when starting MPI with 'huge' [NM] - Made respawned pilot height in Strat/MPI vary based on kill distance from "home base." Deaths further in the field are punished more. [NM] - Added in a "spawn kill" detector -- if you're killed within 15 seconds of a respawn, the scoring values are flipped, and a message is printed so everyone knows who did it. This is in the DM, Strat, MPI DLLs. In DM, you can adjust this timer from the pregame interface. [NM] - Moved "open editor" command from Control-E to Control-O, a combo that's a whole lot harder to hit. You have to be pretty deliberate to try and hit this in MP now. [NM] - Removed most of the spurious "can't find command 'shell.*'" errors from ingame escape screens. [NM] - Added direct "Join IP" button in shell. Contents default to last selected session's IP, but you can override it at will. [NM] ---- 1.21 beta 22 released======= - Replaced pre-computed low and medium texture levels with automatic generation. This eliminates the need for smtex.pak and mdtex.pak, and seems relatively fast. [Ken] - Fixed jittering lead indicator on serviced Gun Towers and Gun Spires. This was due to the unit's velocity being manipulated by the Service Truck and producing incorrect aiming values. [Ken] - Undid most of the non-spurious "can't find command 'shell.*'" errors from ingame escape screens, as the pregame shell pages required those. [NM] - Human scrap cheat of 0 (off) in MPI works. [NM] - Tweaked multiworld priorities. It now optimizes for framerate at the expense of possibly more popping. Endgame in MPIDunes was much smoother here at home. [NM] - Updated DR2 template container types to latest DR2 code base. [Ken] - Switched Is() pseudo-RTTI functions from using a node type enum to virtual functions. Previously, many types were mutually exclusive when they shouldn't be (MeshEnt versus Entity versus GameObject). [Ken] - Cleaned up allocation of per-world Explosion and Ordnance lists and moved them to the corresponding WorldPart classses. This fixes a small memory leak and makes the world part code more self-contained. [Ken] - Made terrain system fully multi-world aware. Terrain data is shared between worlds, but gets "branched off" when modified in a specific world. This eliminates excessive memory-copying and should make many terrain operations more accurate. [Ken] - SprayBomb now calls AiMission::AddObject() on the created game object, as per Wil Stahl's request. This informs the mission script about the new object. [Ken] - Moved SlideIntoPlace function into AI utilities and separated position and orientation. This makes the Scavenger and Recycler move gracefully into place instead of snapping quickly. [Ken] - Added support for a build-effect source hardpoint for the Recycler, Factory, and Construction Rig. Unfortunately, the Recycler and Factory lack any such hardpoint in the geometry, and the Scavenger does not animate its hardpoint correctly. [Ken] - Cleaned up some geometry generation code in Plant and ExtrudeMesh, replacing unsigned long colors with Color struct. [Ken] - Improved the "laser-beam" effect on the ISDF ExtrudeMesh. Instead of a single beam to one point, it now draws a faint(er) ray to each vertex at the clip plane. [Ken] - Separated CollectTask from ScavengerProcess.cpp into its own file. [Ken] - Fixed Scavenger AI code that was attempting to use a CollectTask as a RecycleTask, triggering an assert and returning bogus state values. [Ken] - Fixed a "No terrain point found; raising y" warning caused by the dynamic near-plane calculation code when the player was at ground level (usually as a pilot). [Ken] - Improved tracked vehicle terrain tracking. Vehicles now conform to the terrain normal instead of the world up vector, improving traction. [Ken] - Switched all projects to compiler warning level 4, and incremental link and program database for edit and continue in a debug build. This won't affect the end product, but will make development a bit easier. [Ken] - Modified ICListBox FillFromPath() and FillInfFromPath() methods to reject duplicate file names; the first one added has priority. This eliminates duplicate entries in the multiplayer map list, and fixes a bug where selection with arrow keys or the mouse wheel could not proceed past a duplicated entry. [Ken] - Fixed a memory leak in TurretTank where the destructor did not free the turret control objects. [Ken] - Removed unused add/remove entity functionality. It was an artifact of Interstate '76, and was leaking some memory. [Ken] - Fixed a memory leak in CleanupHandler::Process where the entity list was not being cleaned out because I had removed the function call. "Clear_Entities" != "Clean_Entities" :) [Ken] - Pregame chat [NM] ---- 1.21 beta 23 released======= - Fixed mistaken appearance of server info on postgame screen [NM] - Upped irc nickname length from 9 to 19. This may cause some issues-- the ircd-hybrid I've run at home to test things with tended to clamp at 9, but irc.gamespy.com doesn't. [NM] - Fixed bug introduced w/ Direct IP join where passworded sessions wouldn't prompt for passwd. [NM] - Fixed pregame shell messup w/ clientside Extra options. Thanks to Menacer for pointing out how to replicate it. [NM] - Clients should be notified when server does /lockdown or /openjoin, same message as server's chat window. [NM] - Restored the trick where colliding with a Turret would delay its deployment. This accidental feature was lost when the TurretTank changed its base class to Deployable. [Ken] - Added ground-clamp code to tracked vehicles. [Ken] - Fixed cases where pregame chat window could appear once a session was joined. [NM] - Server list never refreshed while chat window visible. Use the refresh button. [NM] - Fixed bug that could cause idle irc sessions to get disconnected. [NM] - Colored chat in irc window [NM] - Added display of current channel, nickname at irc screen. Player list is stubbed out, but not complete (gotta be threadsafe about stuff) [NM] - Fixed a bug in AiUtil that reversed the user flag and assigned the wrong pilot as a result. This broke ISDF mission 2, and probably several others. [Ken] - Cleaned up IsOdf() and GetRace() functions in ScriptUtils. Instead of attempting to parse the ODF file name, it now uses the config. [Ken] - Set Cannon shot delay back to the meaning it had in 1.2, which was the time between the last shot in one salvo and the first shot in the next salvo. This should avoid imbalancing third-party weapons. [Ken] ---- 1.21 beta 24 released======= - Drawing utility functions (line-draw, rectangle, etc.) now use the camera view rectangle instead of the frame buffer view rectangle. This fixes lines drawn outside the target and sniper cameras. [Ken] - Pause view now renders the scene instead of a black background. [Ken] - Fixed multiple AVs including buildingprocess.cpp, gameobject, etc reported from the boards. [NM] - Playerlist in pregame chat. [NM] - Fixed randomization of bots in DM to be any vehicle in the allowed vehicles list, not just scouts [NM] - Alt-tabbed server in the pregame shell can be joined. Was not handling incoming packets if alt-tabbed. [NM] - Shell login name is remembered, even after playing IA or multiple MP game sessions. [NM] - Editor back on ctrl-E. [NM] - AI receives deaths/kills/score for kills in Strat, MPI. Now, Team Computer will have a score by the end of the game. :) [NM] - Moved hard-wired "blastDist" AI parameter to CraftClass. [Ken] - Changed optimization settings on some ConstructionRig.cpp functions to try and nail a crash. [NM] ---- 1.21 beta 25 released======= - Fixed an off-by-one bug in listbox autoscroll that caused a blank line to appear at the end of the IRC chat message text box. [Ken] - Fixed code that gives AI deaths/kills/score-- it could AV if it couldn't reliably determine whom the killer or victim was. [NM] - Fixed bug in playerlist not updating on joins [NM] - Made sure the pregame chat isn't vulnerable to the same bug that caused this patch cycle to be started. Sorry if you really want to type that character. [NM] - Version string on login screen. Disableable from GamePrefs.ini. [NM] - Changed default building support from "adjacent" to "none". This should fix inappropriate placement of Gun Towers next to neutral "prop" buildings. Specifically, this fixes stdunes (Patton's Proving Grounds). [Ken] - Installer tweaked to show version #, and clean out the addon directory every build [NM] - Version # of patch bumped. [Ken, NM] ---- 1.3 beta 26 released======= - Fixed "screwing into the ground" bug with the Scion Recycler. [Ken] - Scavengers no longer endlessly repeat a message when selected while scavenging. The AI Process wasn't dropping the "select" in that state, so it would keep triggering the selection message. [Ken] - ClearBuildZone() now skips non-collidable objects. This prevents Nav Beacons and Spawn Buoys from being pushed out of the build zone of buildings. [Ken] - Changed the spelling of IsCollideable() and IsPrimaryCollideable() functions to IsCollidable() and IsPrimaryCollidable() respectively. [Ken] - Stopped Construction Rig from getting launched into the air by replacing its force calculation code with a simplified version from Walker. [Ken] - Cleaned up some Walker physics code. [Ken] - Fixed lines from cockpit radar to command menu. The line draws were using the cockpit radar camera's clipping rectangle so were being clipped out. [Ken] - Added a "comm vehicle", a tracked vehicle that activates the satellite view when deployed. This required changes in the Satellite Panel and UserProcess to eliminate explicit dependencies on CommBunker. [Ken] - Added backwards compatibility for MagnetMine, MagnetGun, and MagnetShell classes. The drag parameters were split into center and edge values, but the classes now handle the original unsplit values as well. [Ken] - Added 'rend_environ.tga', copied from 'desert_environ.tga'. Looks like the artists forgot to check that into SourceSafe long ago. [NM] - Team and All messages identified as such [NM] - Clients notified when the server has launched, more urgently if sync join is on [NM] - Sync join chat messages from server to provide list of whom it's still waiting for. [NM] - All Strat & MPI maps have sync join set to be on by default now in their .inf files. [Previously, it was an inconsistent mix.] New maps download required to see this in action. [NM] - Fixed empty terrain cluster so that it receives the default height, texture, and color values from the TRN file. This broke when I replaced the empty cluster class with a map cluster, and caused the map radar to display a white bands on the edge in some missions. [Ken] - Added current time and lockstep offset to the framerate display. [Ken] - Fixed bug in meshload.cpp where it wouldn't properly initialize values it didn't bother reading in. This may fix a sync bug or two. [NM] - Added bounding sphere to game asset check once again (pulled from b6) now that the values in it aren't filled with garbage values. [NM] - Server message box has vertical slider for the really pathological messages. [NM] - New game dialog points people to nettips.txt for ports list. [NM] - Various heavily used math functions aligned to 16-byte boundaries for starting address in code, inlined some math utility functions from utility\math3d.cpp. This might make things slightly faster; helps the optimizer in me feel better [NM] - Server list now shows if remote sessions are playing, and if so, how long the game has been running. Slightly better organization of data presented, too. [NM] ---- 1.3 beta 27 released======= - Fixed a write to a constant string in perfstats. [Ken] - Cleaned up some of the DR2 math types, eliminating the constructorless versions of Vector (VectorS) and UVPair (UVPairS) and adding a few new operators that were missing. [Ken] - Cleaned up the DR2 vertex types, eliminating some messy unions and adding some Set and Interpolate utility functions. This required extensive small changes to a lot of code, but allowed quite a bit of code compaction and tidying up. [Ken] - Fixed the "line spray" when the Recycler deploys. The line-draw code was submitting pre-transformed, pre-lit vertices with uninitialized w values, and the graphics card didn't like that. This became apparent while fixing World_CLine to deal with the vertex changes. [Ken] - Put prototypes for a few graphic utility functions into the header, eliminating a few ugly extern references in the code. [Ken] - Eliminated most of the legacy I76/BZ1 vector math functions. This required extensive small changes to a lot of code, but makes the code more consistent with the rest of the engine. [Ken] - Fixed the z-fighting between text and background in Graphic_Text, and fixed the sorting order issues in the Shift-F9 view. [Ken] - Consolidated and updated the code that updates the world-aligned bounding box of each object. This may help with some of the collision problems. [Ken] - AVs fixed in constructionrig.cpp (whole file now has extra debug info to catch things). Gameobject.cpp tweaked to try and get more info on AVs that may be happening thru it. Fixed MPI crash when CPU scrap cheat was set to 3. [NM] - DM bots can have AI skill level set from extra options, extra options pages updated. [NM] - DM bots can taunt you now. Moved taunt code to shared missions folder. [NM] - Fixed reticle and targeting issues with damped allies and teammates. These systems now ignore damping on any friendly unit, allowing them to be pointed at or targeted. [Ken] - Camera Pod now responds to being targeted by the player on its team instead of the local user. This will make the pod fully usable in multiplayer games. [Ken] - Server scan code tweaked so that (1) refresh works if last scan was canceled (2) gamespy server scan doesn't reduce framerate to <1fps. Pings will always be slightly higher (5-30ms here at home) than gamespy shareware browser, as the we have a more graphically intensive interface to draw. [NM] - Server refresh can happen when irc window is up, but only if you manually hit the refresh button. [NM] - "Server quit" message printed only if nothing else is received (i.e. it's the lowest priority). [NM] - Shell background music volume is properly restored after an alt-tab. Works best for the included music "mire22_1.wav" thru "mire22_9.wav". Custom interfaces that play other music may not loop properly. For best results, mod makers should keep the filenames intact but replace the contents. On further testing, noticed that the various sound cards I have here require different code. See addon\config\GamePrefs.ini , look for NewShellMusicBehavior if it's now a problem. [NM] - Asset check works now when playing localized versions against each other. [NM] - Added optional bit to GamePrefs.ini to be able to log off ingame chat and/or irc to a file. Default is not to do any logging. [NM] - Split most of the heavy work on trying to join a session into the network thread. This should make it much smoother trying to join a session in terms of responsiveness, especially if the address is wrong or server is not accepting connections. [NM] - Made the AIP planners look for "maxTimes =" lines first in a section. If that doesn't match anything, or it returns 0 (infinite) it looks for a "maxTries =" line in the section and uses that value instead. This may make the lines in the AIPs actually mean something now. (All the stock AIPs use maxTries) [NM] ---- 1.3 beta 28 released======= - Fixed collision problem. [Ken] - Changed text printed by "game.multiworld" console command to be far clearer as to what's going on. [NM] - Fixed AV in audiosys.cpp. [NM] - Multiplayer games (for the host) start off in singleworld until the first client joins. This should make solo MPIs far smoother. [NM] - Replaced SetRecycle/GetRecycle functions with direct access to the gflags.recycle flag. [Ken] - Person and PersonProcess now apply recycle like a vehicle, which may fix the problem with Scion pilots not recycling when they return to the Matriarch. [Ken] - Consolidated particle system interpolation of color and radius into utility functions, and added support for "one" source blend. This fixes the alpha blending effect that broke in an earlier version. [Ken] - Fixed an occasional bad matrix in BoltRenderClass when the terminating segment of the bolt has zero length. [Ken] - Updated ZLib to latest version, to work around the "double-free" bug. [Ken] - Comm Vehicle now enables or disables the satellite view when being set as the user or set as not the user. Previously, the player could get stuck in the satellite view with no way to control his vehicle. [Ken] - Increased size of keyboard and mouse input buffers. This should fix the "mouse lockup" problem, which is apparently due to overflow. [Ken] - Added support for individual health and ammo values in ServicePowerup (healthUp and ammoUp), and ServiceTruck and SupplyDepot (healthRate and ammoRate). The original values (serviceUp, supplyRate) still work, and set health and ammo values simultaneously. [Ken] - Consolidated HealthPowerup, AmmoPowerup, and ServicePowerup code. The new ServicePowerup transparently emulates the old powerups, supporting their classLabels ("repairkit" and "ammopack") and block names ("[HealthPowerupClass]" and "[AmmoPowerupClass]"). [Ken] - Fixed off-by-one error in AIP stage randomizer. [NM] - Slightly more info in AIP logs [NM] - Fixed IA,MPI DLLs to properly update assault_counter on object destruction. Thanks, Natty, for pointing that out in the source. [NM] - Tweaked scioninst1.aip and scioninst1_.aip to more aggressively go after pools on the map at the start of the game. This seemed to make things more lively in IA Bridges. Lots of other scion AIPs tweaked as well to go for walkers/atanks much more often. Also upgrades the extractors early and often. [NM] - Rearranged code in AIP planner-- first tries to find a suitable pool to collect, *THEN* builds a scav to go after it. This may be the fix for rampant scav overproduction. [Used to build a scav, as none were "idle," then figured out it had noplace to go.] [NM] - ISDF bomber odf has ability to pick payload. [BomberClass] bombName = "" [Ken] - Fixed Factory/Recycler bug where empty vehicles would have incorrectly set pilot information. This caused the Training Facility (Barracks) to ignore them. [Ken] - AI Planner has maxTimes honored for hold plans. This'll keep things from getting too bad with those. [NM] - AI Planner can reserve scrap for the builder to use for buildings/upgrades. Done because buying up cheap units prevented the builder from building a stronghold, etc. This is noted in the logfiles, so AIP masters, let me know if this causes problems. [NM] - AI planner can build vehicles once constructor dispatched. [NM] - AI Overwatch set up. Designed to keep scav overproduction down by assigning idle scavs to pools/scrap as needed. [NM] - AI Planner won't send scavs after scrap in the middle of the enemy. This should reduce pointless wanderings into a trap to get the remains of the last scav to come this way. [NM] - AI planner correctly counts cost of upgraded units. [NM] - Default bomber bomb upped slightly in power. Should be able to take out a guntower in 1 hit. [NM] - Code added to all AI planner classes to properly save and load their variables. This should reduce out of syncs in MPI a bit, especially now that maxTimes/maxTries is honored. This is even compatible w/ old saves from IA maps. [NM] - Turret-using units (Assault Tank, Turret, Gun Tower, Walker, Artillery) now support turret acceleration values. This makes the turrets rotate more smoothly and handle much better under human control. [Ken] - Aim-At code now takes target acceleration into account, eliminating "wobble kill" (zig-zagging so the unit overcompensates and misses) on high-skill units. Turret acceleration made this a necessity, but it should help normal units as well. [Ken] - Artillery (Archer) is now based on the TurretTank class, but sets the "flying" flag while not deployed. ArtilleryClass still supports the old "[ArtilleryClass]" ODF section for backwards compatibility. [Ken] - Deployable base class now adjusts height gradually over the deploy and undeploy time. This makes the Archer look better while landing and taking off. [Ken] - Turret Tank no longer counts vertical velocity against the speed threshold when checking if it can advance its deployment. [Ken] - Added new flags to the game object class: [Ken] "isGrouped" determines if the object gets added to the group panel "needGroup" determines if the object needs a free group slot "isLimited" determines if the object counts against the unit limit "needLimit" determines if the object needs a free unit limit - Bomber Bay comes with a Bomber again, as it uses the new flags to indicate that it needs a free group slot and free unit limit, but does not itself get added to the group panel or count against the unit limit. [Ken] - The Team objects keep track of the unit limit instead of Factory, Construction Rig, and Command Panel explicitly counting up units. This reduces the amount of code, and fixes a bug where Gun Towers weren't counted against the limit in some places. [Ken] - Added a function to get the team range for a given team, and changed the implementation of the code that gets the multiplayer side for a team. The functions are a bit faster, and the team range eliminates a lot of redundant code. [Ken] - Separated Construction Rig and Factory GroupCheck function into GroupCheck (which checks for a free group if isGrouped or needGroup is set) and LimitCheck (which checks against the unit limit if isLimited or needLimit is set). [Ken] - Vehicles being moved around (e.g. sliding into place, moved when building deploys) should keep things in sync. [NM] - Updated code to keep shell background in better shape when ExtraOptions are used. [NM] - Fixed bug in Strat, MPI DLLs where it wouldn't properly initialize the human's race on the clientside. First resync would fix that, but that's bad form. [NM] - Clients are notified in bright red if server picks a map they don't have once they're in a session, and are prevented from launching if the map's not found. [NM] ---- 1.3 beta 29 released======= - Blink Device no longer allows target locations outside the world. The original code that was supposed to do that was broken. [Ken] - Blink Interface now displays a sprite aligned with the position and normal of the contact point, interpolates the position between simulation steps, and rotates the sprite effect. [Ken] - Fixed AV, added in logging code to try and find others reported. [NM] - Fixed DM taunt being printed when no bots were present. [NM] - Fixed bug in strat where a solo strat commander on team 2 would have units displayed in red. [NM] - IRC can do ACTION commands (/me), and responds to version queries (not 100% correctly yet, but close enough). [NM] - IRC playerlist alphabetized. [NM] - Factory Panel disables the reset button and weapon lists when the currently selected unit is currently being constructed. This prevents an exploit where the unit could be customized after the stock build cost was paid. [Ken] - Added greyed-out "disabled" color states to the interface color configuration. [Ken] - Code added to lock out resolution-switching from the options panel in a MP game, as that's a several-second delay in all game processing. [NM] - IRC code changes to hopefully not crash on getting some malformed packets. [NM] - Userprefs reapplied after video startup, where things like game resolution can actually be set and honored. This should fix some of the "my options aren't sticking" issues. [NM] - Unhandled irc messages are logged once every 5 seconds, tops. [NM] - /clear command in irc (erases all scrollback) [NM] - All vector<>s that have lots of items added to the back (loads, etc) have reserve() called on them before that to hopefully reduce memory fragmentation and reallocations. [NM] - CTF client extra options page missing a line of text. Fixed. [NM] - Fixed possible crash in xmm code if not properly initialized. [NM] - Extra options background now seems to work for all conditions tested under. If it misbehaves, let me know how. [NM] - Tweaked gamespy packet response times. Ping times should be even closer to the wire speed. [NM] - Various warnings in code fixed. [NM] - Units will fire now, even if the "able to hit" calculation says they'll hit themselves. This should fix the "guntowers going to sleep" bug. Thanks to DarkFox, Mowerman for providing savegames which easily reproduce this. (Note however, MM's savegame, the player is in a sniped ship, which has the same perceived team as the AI, so it wouldn't fire anyhow) [NM] - Fixed a sleepiness (not crash/hang, just doesn't build anymore) in the AI planner when it's blocked on a nonexistent build item. If this happens again, savegames would be appreciated. [NM] - Fixed a game loading problem that could manifest itself on a multiplayer join or resync. This may explain a lot of the recent crashes in b29 with MP. [NM] - Changed text on server list to say "Server List:" [Gamespy|Lan Only], not "Connection:". Hopefully people will get the idea thru their heads that gamespy doesn't route all BZ2 game packets. [NM] - Latest mshs, pics from DutchBoy added. [NM] ---- 1.3 beta 30 released======= - Moved setting of user team info from Init() to SetTeam(), which makes more sense and fixes the team 6 Recycler problem in MP. [Ken] - Fixed AV in AI Planner code. [NM] - Missing ODF files are now complained about to the battlezone.log file, along with all other thing that would normally cause a "Abort Retry Fail" dialog to show up in a debug build. Doing this was triggered by someone (won't name names to publicly embarass them) claiming b30 crashed a lot, but it was only with their MOD, and the bug was caused by a missing ODF from their MOD. I can't debug everyone's MOD when they pull boneheaded maneuvers like this. [NM] - Inlined various GetTime() functions. [NM] - AIP manager should lose track of ships ("...but it died") less often. [The initial go to dropoff point command was making it seem un-idle] [NM] - Scioninst3.aip, scioninst3_.aip are more aggressive about collecting pools, to match the other AIPs. [NM] - AIP manager can recover better from getting wedged on constructor, other build items. [NM] - AIP Overwatch code will send very idle (3+ general units, stationary for 2+ minutes) units after a random enemy target. This should reduce idleness on AIP swaps, etc. [NM] - AIP manager saves build queues properly. This may be the last bit of nonsense causing lots of out of syncs in lategame MPI. [NM] - Fixed incorrect grouping flags on Gun Towers and Pilots. [Ken] - Possible fix to the AVs in displaylist.cpp [NM] - Replaced DR2 memory system with Visual C++'s, optionally. [Compile- target dependent.] DR2's system had a number of extra features at the time, but they're now present with service pack 5 for VC++ 6. This seems no slower in informal tests, gives better memory trashing detection. [NM] - AI overwatch should actually be able to find idle scavs now, and will periodically send idle general craft at the user or their buildings. [NM] - Fixed alignment issues in graphics code [NM] - Fixed Pentium 3 optimizations being enabled when the cpu didn't support them [NM] - Changed various Pentium 3 functions to pass values by const reference rather than value, as recommended in ProcessorPack readme. [NM] - Fixed memory trashing bug in post game where interface element pointers weren't being properly cleared out. [NM] - Fixed syntax errors in various AIPs exposed by the missing ODF log feature (above). All items in double-quotes ("s) must have a double quote around that word, or things will be unhappy. [NM] - Changed Cannon hardpoints on the ISDF Walker to Assault. [Ken] - Removed some temporary String class objects in VarSys and IConsole. This eliminates a bit of unnecessary malloc and free, possibly reducing memory fragmentation. [Ken] - Raised bottom collision contact points on tracked vehicles. This seems to fix the handling problems people have been experiencing. [Ken] - Optimized Pentium 3 camera/matrix/lighting code to properly inline all trivial functions. [NM] - Fixed aim-at code that caused turrets on vehicles to aim at the ground while turning around to face their target. [Ken] - Blink device should properly update position of craft so that in MP, they aren't "smoothed." [NM] - More optimizations in the graphics code of inlining trivial functions. [NM] - Changed net code to kick back to shell if the host crashed/timed out while joining. This should reduce the multi-minute pauses experienced if this happened previously. [NM] - AIP overwatch won't lump service trucks in with general offensive units. [NM] - Changed message printed when can't retreive gamespy session list. This is in localize.odf, so it's safe to edit this w/o causing bad assets. [NM] - Strategy02, MPI DLLs modified so that AI skill levels are dropped a notch for the starting vehicles. Thus, the starting turrets in strat should be skill 2 by default, all other units 3. [NM] - -connect aaa.bbb.ccc.ddd:17771 from the cmdline should work once again. [Broken a few builds back.] [NM] - Tweaked FactoryPanel.cpp to give more info if it AVs in it. [NM] - Installer runs a checksum on the patch data to detect bad downloads. [NM] - Added ping, lag, fps to multiplayer ingame scores list. [NM] ---- 1.3 beta 31 released======= - Changed MW smoothing of remote player crafts to be a user-specifiable percentage of their velocForward (see GamePrefs.ini, MaxMWSmoothPercentage entry). Added accessor functions to various physics classes to get that max speed. Please experiment and let me know what the best value for that is. [NM] - Workaround for AV in AudioSys.cpp [NM] - fps display calculated correctly in MP, also keeps a running average of framerate to low-pass filter. [NM] - Changed bzgame_keys.cfg to bind Alt-F to 'vid.framerate', not game.framerate (DR2ism, never supported in BZ2) [NM] - Changed Person-class objects (pilots) to not count against the unit limit by default. Previously, they were being counted because they inherited the limit flag from Craft. [Ken] - Scion Mauler now requires an Antenna Mound as a prerequisite, pushing it back in the technology tree to the same point where the Quill/Fang becomes available. [Ken] - Object editor supports the Height value in ground-height mode, placing the object at that altitude above that terrain. Previously, this value only worked in absolute-height mode. [Ken] - Improved takeoff and landing of Turret and Archer. The object smoothly adjusts its height over the deploy/undeploy time or the animation time, whichever is shorter. The object also respects the deploy height, allowing the Archer to deploy at the correct altitude. [Ken] - Set Walking units (walkers, builders) to use the original traction mode (friction proportional to velocity difference instead of constant). [Ken] - Increased undeploy time on Turrets from 2 seconds to 3, giving it enough time to finish its undeploy animation before moving. [Ken] - AV in Avoid.cpp::WayOff() worked around? [NM] - Rewrote the manual linked-list in displaylist.cpp to use std::vector. This should be more efficient in terms of memory usage, be more resistant to memory trashing, and hopefully not crash anymore. [NM] - Powered buildings reset their owner object on world load. This is 95% of the FactoryPanel.obj crash-- it was trying to control a deleted object, which had garbage data in its buildQueue. The other 5% is an edge condition when the FactoryPanel list of active objects wasn't updated when the factory disappeared. Deleted factory objects force-remove themseves from that list. [NM] - FPS display ingame should toggle on/off correctly now. [NM] ---- 1.3 beta 32 released======= - Tweaked powered building load code so that it only forcibly updates the factorypanel owner on load if the local user is in charge. This should alleviate some of the crashes/weird behavior people have been seeing. This change is untested with multiple machines, as my extra machines are down for repairs here. [NM] ---- 1.3 beta 33 released======= - Changed clientside code that requests gamestate from server to only do so after it's rendered a frame. This may make things look a little more weird, but it drastically reduces start-of-game lag on my slow box here as it'd take 5-8 seconds between the time it thought it was ready to the time it actually displayed the first frame. [NM] - Rewrote factorypanel.cpp's owner object tracking system to use handles instead of object pointers. This seems to be safe under multiworld, and didn't mess up in tests here. About time some progress happened on this stupid bug. [NM] - Strat, MPI DLLs changed so that AI on AI kills count in the score totals as well. This should give Team Computer some points on the board in MPI. [NM] ---- 1.3 beta 34 released======= - Fixed possible AV in AvoidNode based on reports of crashes in 1.2. [NM] - Fixed crash in Transform_Component_Sparse when exiting the factory/recy panel. [NM] - Tweaked userprefs load code to try and work around the "settings are different from what's shown" bug. If this reoccurrs, please try and get an exact set of steps and let me know. [NM] - A bunch of optimizations to the graphics code and compiler settings to optimize for speed. [NM] - 2D MapRadar updates clamped at a user-specified period (see GamePrefs.ini). VTune thought this was moderately expensive, and a low multiworld could make this happen a lot in Strat/MPI. Default value is 2.5 seconds, which I think is an acceptable lag for the 2D map to be updated when a building is placed. [NM] - Terrain normals recalculated on building placement/deletion *only* in lockstep world now. This was very expensive, according to VTune. Not sure what the visual impact will be. [NM] - Listing console cmds in a category should work now w/o crashing [NM] - IRC login name (left of @, shown to others on joins) has the shell login name, even if nickname clashed. This should help people identify joiners. [NM] - IRC removes incoming color settings before displaying. Much nicer, after all the mIrc-nonsense has been removed. [NM] - MPI, IA DLLs count Walkers and Assault Tanks of the human's race in the determining of when it's under assault. [NM] ---- 1.3 beta 35 released======= - Fixed Command Vehicle SetAsUser() function, which wasn't calling its parent. The vehicle would not be set as the user object before the player pilot was deleted, so the player would "die". [Ken] - Reduced coefficient of restitution on ground collisions. [Ken] - Height offset in Hover vehicles is once again divided by the set altitude (like in 1.2). This should reduce the problem with the Archer springing into orbit when it starts at a low altitude. [Ken] - Hover vehicles apply extra damping when flying below the set altitude. This cuts the frequency and intensity of ground collisions. [Ken] - Hover vehicles reduce lift damping with altitude (like in 1.2), allowing significantly better jumps. [Ken] - Reverted back on the displaylist.cpp code to the older method. Put in some guard value checks to hopefully determine what's up with the memory trashing that killed the old code so often. If you get a crash in DisplayList, please post the info from the Battlezone.log file that has a dump around the damaged area. [NM] - Ingame ping packets use more accurate system time determiner. [NM] - Replaced the expensive person explosion (high-poly sphere chunks) with a much cheaper one (sprites). This should fix some frame rate drops. [Ken] - Various code changed so that sync test debug builds can compile/run once again (~2 years after that was last attempted, I bet) [NM] - Turned off interval display in debug builds (see #define at top of utility\interval.cpp if you want it back). Not everyone wants George Sutty's info. [NM] - Rewrote (once again) the FactoryPanel.cpp code to use team # and slot to determine who the owner obj is. This seemed to fix some of the problems noted earlier w/ customizations not sticking in the limited tests I did. [NM] - Fixed AV reported from Planners.cpp::UpdateBuild() which would happen right when an AI recy/factory was destroyed in IA/MPI [NM] - Tweaked FactoryPanel.cpp code to be a little more tolerant of laggy conditions on entering/exiting. [NM] - Changed gameover reason to note 'server quit' as last resort. [NM] - Fixed potential buffer overflow in incoming packet queues. [NM] - Added (debug-only) console command to induce lag. [NM] - Made various large vertex arrays in the render pipeline use static globals instead of local variables. This may be a speed optimization as it's no longer testing large chunks of the stack to see if it's run out. However, it does take a little more memory, and may cause some cache misses instead. Hard to tell what's up. [NM] - Changed code in commandpanel.{h|cpp} to cache its own copy of the reticle's target position, rather than storing a pointer to it. This may help out with the various crashes reported on exiting the factorypanels. [NM] - Added options for NAGLE, KeepAlive to GamePrefs.ini. [NM] - Fixed strncpy crash on saving game, thanks to Commando for providing a savegame that demonstrated this problem. Planners.cpp didn't fully initialize a struct it kept around, and it could derefence garbage data. [NM] - Fixed AV in audiosys.cpp reported by commando on boards. [NM] - Can't change texture size (resolution) in middle of MP game. [Was a several-second pause while it reloaded all textures.] That and resolution settings in middle of MP game will take place next time you start a MP game. [NM] - Two more system commands added for MOD makers: 'network.session.chatentered_team' and 'network.session.chatentered_all' . These will force sending to the team or all, no matter what the user's current preference is. This should help avoid bad hacks like caching the user's prefs in a different variable. [NM] - Added ingame console command 'game.playsound', to play a sample locally. For example, "game.playsound voicevolume.wav" will trigger that file. Note: this is a purely *local* sound trigger, networked games will not trigger this on remote boxes. Added this to make lubber happy. [NM] - Changed MPI to be race-independent for the CPU. It scans for '%vrecy_m.odf' on startup (where % is 'a' .. 'z'), and notes which races are valid for MP. The button for the CPU's race toggles among all possible races. Also added 26 files, addon\config\RaceName_#.txt, where modmakers in the future can overwrite the shell-name for a specified race w/o having to touch localize.odf or worry about bad assets. ISDF, Scion, Cerebri, Hadean, Uler already specified in default install (let me know if I got any wrong). [NM] - MPI DLL adjusted to work with the new standard for ivar13 ('a' .. 'z' as the integer representation (97..123), not 0/1). The stock items AIP naming convention may not work for all races; need a good solution for that, still. [NM] - Renamed stock AIPs to "stock13_###.aip" to match the race-specifiable filenames introduced in 1.2. [Long overdue, if you ask me.] MPI, Instant DLLs adjusted to match. Instant DLL uses wrapper function for setting AIP, cribbed from the MPI DLL. [NM] - Tweaked Commbunker.cpp and Factory.cpp to note to chatbox/logfile what the team settings are for the owner, etc. Done to try and determine why the heck the "everyone is pulled into factory/satellite view" bug happens. [NM] - Tweaked optimization settings for FileUtil.cpp to try and determine crash on factorypanel exit. [NM] - VSync defaulted off in gameprefs.ini and reader, back to same setting as 1.2. You may stop whining about framerate now. :) [NM] ---- 1.3 beta 36 released======= - AVs in audiosys/DeleteGASObject(), TurretTankProcess should be fixed. [NM] - Added avturre6.wav (used in ISDF01), and avturre8.wav (for good measure/ completion/whatever) from BZ1 assets to addon. [NM] - /multiworld on commandline should force it on now, even if 1-player MP. [NM] - Change to factorypanel.cpp to not give spurious "Error: ".odf" does not exist" messages. [NM] - Changed default set of racenames slightly: A= American, K=Chinese, S=Soviet. Done to make Avatar happy. [NM] - More changes to commandpanel. Maybe it works now? [NM] - Tweaked entity class to have IsTurretCraft() virtual function in order to better identify commandpanel stuff. [NM] - GameObject's PostLoadAll() verifies user team #, defaults to userObject's team # in case of discrepancy. This ought to fix the problem where multiple people were pulled into factory/satellite panel at once. [NM] - More tweaks to commandpanel.cpp - verifies GameObjectClass cfg crc on worldswaps to make sure the handle didn't get recycled. Also double-verifies object class (TurretCraft/PoweredBuilding) before typecasting to get position of where the object was on world swap load. [NM] - Less logfile spam re interface focus. No need to see it in every logfile. [NM] - Tried a build renaming the exe and some other identifying characteristics to try and get around XP "compatability" nonsense. This is a fairly drastic step, requiring all DLLs to be rebuilt (IA, MP ones done first), but it might just be necessary. [NM] - Alternate irc nickname can be specified in GamePrefs.ini . If that is in use as well, uses up to 10 characters of your login name, and tacks on some random digits to the end of that, so your nickname is a little more "readable" to others. [NM] - Reduced some spammage on entering factory/satellite panels, as that bug seems to be fixed now. [NM] - Fixed sync error in terrain.cpp caused by terrain-owning objects setting/resetting the hiddenFlag every multiworld twitch. AddObject and DelObject do nothing in visual worlds now. [NM] ---- 1.3 beta 37 released======= - Eliminated the extra Hover physics damping when close to the ground, as players didn't seem to like it. [Ken] - Undid some changes to terrain.cpp that caused players not to go down ramp in recycler. Didn't undo changes that fixed sync bugs above. [NM] - Minor change to logging info in commandpanel.cpp that could AV (in debug builds only?) [NM] - Fixed improperly-enabled weapons on undeployed Turrets; the weapon enable flags were not being initialized correctly when the unit was created. [Ken] - If fps < 10 in MP game, all multiworld smoothing is turned off for remote human crafts. Also, remote human pilots will always have their y-position unsmoothed, as the jetpack can move them much faster than their VelocForward. [NM] - Changed code in vid.cpp to set max resolution of game to 65536x65536, from 1280x1024. This should make people wanting higher resolutions happy, but they're really going to lose their eyesight trying to look at the ingame interface at such a resolution. :) (Remind me in 5+ years to see what BZ2 looks like at 65536xWhatever) [NM] - Amount of mipmapping levels to be generated is now set out of GamePrefs.ini . BZ2 1.0-1.2 used 0 for some textures that should have been mipmapped, 3 for others. Valid values are 0-16, with illegal values resetting to 4. [NM] - AV in TurretTank fixed (triggered by starting IA Bridges) [NM] - Major changes to audio system-- a rewrite to be DirectX 8 happy. All remnants of the Aureal-specific code are gone, replaced by a new system that should work better. This cleaned up a lot of code and replaced it by hopefully cleaner code, especially in the sound duplication/caching code. 3D stuff ought to work better on modern sound cards, etc. [NM] - More major changes to audio system, in terms of prioritizing sounds, clamping based on distance, upped max # of sound channels to 32, ambient sounds should be more audible, various objects are responsible for noticing when their attached sounds got squelched (cap reached), etc. Options page gets max channels from HW caps now. [NM] - AV in Planners.cpp instrumented to get more info as to where it crashed, AV in GameObject.cpp::PostLoadAll should be worked around. [NM] ---- 1.3 beta 38 released======= - AV in CSound::IsSoundPlaying fixed, I believe. [NM] - New code to detect legacy audio cards that only support one output channel-- if that is noted, the audio code reverts to mixing in software (same as 1.2) w/ 8 channels max. [NM] - More AVs in audio code fixed, I believe. [NM] - Code to squelch duplicate sounds tweaked-- if 16+ sound channels are available, it'll play, even if might be a duplicate. [NM] - New commandline flag, to set where audio samples play from: /audioloc # , where # is 0=default, 1=software, 2= hardware, 3= auto. Default=0 (default) if this commandline flag is skipped. Try 1 (software) if you're getting strange results playing sounds. [NM] - Tried manually calculating pan, volume for when /nods3d is specified on cmdline; not complete at all. Pan, volume may be way off, but it might just be better than the mono sound it used to create. Still needs work. [NM] - Tweak to bomber InitAttack() code to try and work around an AV. [NM] - Finished math to calculate pan, volume if /nods3d (or card says it can do >2 2D channels, but 0 3D channels). Seems to work pretty well. [NM] - Tweaked ingame fps display to also show # audio channels in use in top-left corner. May be useful. [NM] - Tweaked priority of weapons, explosion, and ordnance to have higher priority. Ambient are much lower priority. [NM] - Turned off doppler on explosions. This makes the sound of minigun bullets hitting the terrain sound better (not pitchshifted). Reduced doppler exaggeration on other sounds by about a third. [NM] - Console cmd audio.list works with a bit of info in release builds. Lower priorities are better, as 3D sounds' priorities are based on distance from camera. 2D sounds like radar blip and warning voices have priority 5-500. Priority for 3D sounds is normally 1000 + distance squared, but with a 25% discount for weapons & explosions, and a 50% discount for ordnance. Ambient sounds have 100% penalty to priority. [NM] - Fixed weapon sounds not working. [NM] - Added to GamePrefs.ini a volume multiplier for your craft's engine sound. [NM] - Cleared up inappropriate use of doubles throughout the code-- fabs, sqrt replaced by their float variants. May not be a noticeable change, but makes me feel better about things. [NM] - Changed audio code to not bother loading audio files if their set volume for that category is 0. This will reduce CPU, memory usage if things are set off. [NM] - Audio code now actually reports errors to Battlezone.log. Maybe now I can get useful info back from the testers. :) [NM] - Sanity clamps on frequency of sounds played-- must be 0.9x - 1.5x of the wavfile's sample rate. This might fix up the few sounds that are inappropriately 22Khz, while the rest are 11Khz [NM] - Sanity check before dividing by zero in various parts of the AI and movement code. This might make things a little better; not sure how often it could have been triggered. [NM] - Sanity check on reapplying audio settings if you alt-tab at just the right time during shutdown possibly causing an AV. [NM] - Redid userprefs file to have a lot of breathing room in it for new options w/o completely breaking everyone's things. It should import v1.2's UserPrefs and pilots files just fine, but 1.2 can't import 1.3's. Size on disk went from 1Kb to 9Kb, no big deal. [NM] - Added option to disable Force Feedback to frontend, ingame interfaces, code. [NM] - Shrunk ihrad00.pic (the NSEW logos on the 3d map radar ingame) from 256x246 to 64x64. Also shrunk wsplat.tga and raindrop.tga from 256x256 to 64x64 (far larger than they'll be onscreen), and gsplat.tga from 256x256 to 128x128. Darn artists need to go on a diet sometime. :) [NM] - Changed link settings on bzone.exe, installer to remove unused functions. This might reduce the final binary's size somewhat. [NM] - New sound interface panel, with code to match. This exposes a bunch of things added in the course of rewriting the sound libs. All the blank space is because I recycled the graphics options background. More options may show up in there eventually. [NM] - AV in shieldeffect.cpp fixed (I think) shortpath.cpp (less certain), planners.cpp (looks like buildrequests list could get too big). [NM] - Resampled a bunch of audio files not at 11025Khz (gquill, ibfact, etc). Sorry for the increased download, but this'll help them play better. [NM] - AIPs tweaked so prereqs for mauler should be built before it attempts to build them. [NM] - Fixed AudioMessages to calculate length of sample correctly. This fixes the voiceovers in the SP missions. [NM] ---- 1.3 beta 39 released======= - Upped symbol database count from 30000 to 40000 (debug was at 32409, producing warnings in battlezone.log). [NM] - Auto CPU detection for Battlezone.log file now knows what a Pentium III is. :) Also knows that SSE is the proper name for the 'Katmai' instructions. [NM] - CTF scoring actually works now. [Apparently real broken even in 1.2. Maybe this is why nobody plays it, but nobody told me then...] Points given for capturing flag, multi-scores after a snipe also fixed. Also moved message on capturing flag, scoring, etc to messages window, instead of objectives. Updated localize.odf to match. [NM] - Reduced priority of Service Bay sounds to ambient, also added code that should prevent ambient sounds from filling up all the channels at once. [NM] - AV in scrapgauge.cpp fixed (only seemed to happen after blowing self up after editing map with /nobodyhome on commandline) [NM] - Tweaked error reporting code to battlezone.log file to only report audio errors on creating channels once every 5 minutes. Should cut down on logfile size a bit. [NM] - DLL function IsAliveAndPilot() behavior changed. If the handle passed in to it is for a local or remote player, this function will return *true* if they're a person(pilot/soldier). I don't think this should affect either SP missions or 3rd party DLLs, but do want to document this change. [NM] - Tweaked target selection logic for DM bots. Should ignore human pilots initially (unless you attack them). Searches by distance among possible targets a bit better. DM DLL ignores friendly fire by allies. This and other changes should fix the 'bots fall asleep' problems seen, unless you're the only human running around as a pilot. However, once you get back in a ship, all bots will fixate on you. [NM] - DM 'humans vs bots' mode. Should be self-explanatory-- bots will never target each other, only a human. [NM] - DM 'Rabbit' mode added. Kinda like KOTH, but there's only one target allowed, and whomever kills them gets to be the new rabbit. You get positive points for staying alive as the rabbit, killing when the rabbit, or killing the rabbit. Negative points for killing things other than the rabbit, trying to self-destruct as the rabbit. [NM] - Fixed bug in asset check that could give mistaken false positives when values in memory weren't properly initialized. [NM] - Network messages box (mid-right of screen) caches data better between network thread and the main game. Various accessors to it should be better about pushing cached messages out better. [NM] - Tweaked code on exiting the game in MP to put up a messagebox fairly quickly when the game is over due to server quitting. Cleanup still takes 30-60 seconds after that, but at least something is shown onscreen so people don't think BZ2 completely locked up. [NM] - Tunnel strips cleaned up from path.cpp on game cleanup, as per comments suggesting that would be a good idea. Switched to custom, static pool of terrain strips seems to have cut about ~20-30 seconds off of time to quite back to main menu. If pool is exhausted (unlikely; I made it 10x bigger than ctf1.bzn used), a message will be written to the logfile, and the app will exit asap. Do load some complicated maps in b40+, so that if this isn't big enough, I can ramp it for future builds. [NM] - Default location for sound buffers is software now-- the most compatible setting. Users can upgrade at their own risk now, and go back if they find that's worse. This doesn't affect anyone who's run b39, though. [NM] - Tried to make 1.3 read 1.2's savegames, but as there's a lot that's still bad, I gave up partway thru. Paging Mr Miller... [NM] - Tweaked the duplicate sound squelcher-- it shouldn't flood the channel list with the service bay anymore. [NM] - Added some more interface strings. "network.stats.team1player" thru "network.stats.team15player" contain the player name of the player currently on that team #. [NM] - Added support to show/hide "ExtraOptions.OnlyInFFA" and "ExtraOptions.OnlyInTeamplay" segments of the extra options pages appropriately. See 'bzshell_multi_st.cfg" for an example; the names must match EXACTLY for this to work. Any other suggestions for parts of those pages that should be enabled/disabled? [NM] - Alliances in FFA Strat maps are possible now. Only 4 options available: FFA; Team 1+2 vs 3,4; Team 1+3 vs 2+4; Team 1+4 vs 2+3. That should cover all the likely combos for 4 players; the teams are shown in the Extra Options page so that who's on what team is clear. [NM] - Fixed bug where players were unable to chat after the server quit w/o going back to main menu first. [NM] - Rearranged buttons to be Main Menu / New Game / Join IP / Chat / Join along the top, to better reflect the convention that the top right button is 'forward' and top left is 'back' in the shell. [NM] - Ability (defaulted on) to scramble Free For All colors. Server will broadcast this, so everyone should see the same colors ingame. [NM] - Drops to 8 channels max w/ SW buffers only if the sound driver reports it's using an emulated driver. This should give minimal audio for those who don't have HW acceleration on for sound, and a message telling them to turn that on is placed in the logfile. [NM] - On Ken's advice, resurrected the archer's SimualteUndeployed() code. Archers should be able to travel over hills once again; tested on HiLo. [NM] - Fixed invisible engine flames. I had changed the default "glow" blend mode from one one modulate to srcalpha one modulate, and the flames had their alpha values set to zero. Oops. :) [Ken] - Improved control normalization scheme in Hover physics (the mechanism that prevents overspeed by throttle+strafe). [Ken] ---- 1.3 beta 40 released======= - TurretCraft units (Gun Tower/Spire) are no longer tuggable. [Ken] - Fixed invisible laser beam shots at close range. First, the beam ordnance (actually a bullet moving at 1e+6 meters per second) were running up against the minimum time step of 1e-4 seconds; I reduced the minimum step to 1e-10 seconds. Second, the beam/bolt particle renderer didn't generate a complete initial segment, so beams shorter than the beam segment had nothing to work with. [Ken] - Changed Gun hardpoint on strategy-mode ISDF Walker to assault; this should fix the problem with it shooting at combat units with its comparatively weak Gun weapon. [Ken] - Crashes in Draw_Sky should be fixed, as well as in ScrapGauge::Control [NM] - network.stats.team#player should always be updated when someone joins/leaves. [Didn't update in B40 if Extra Options was open.] [NM] - Bomber kicks the bomb out with a downward velocity a bit higher now. - Archer properly saves 'prevYaw' correctly now. This might have led to some out of syncs in 40/40A. - AV in PowerUpProcess fixed, I believe. [NM] - Various sanity checks on cleanup, so that the game can cleanly quit from ingame to shell w/o crashing. [NM] - Tweaked SpawnPoint::GetSafest() so that it first searches for one w/o anyone nearby, and returns from that list first, then searches for the one with the fewest enemies nearby. This should eliminate the 'two teams spawning into the same location' bug seen in Allied FFA. [NM] - Changed fog table and alpha table implementation to permit visibility ranges larger than 1024 meters. This specifically affects Slaor's Epic BZ2 maps, which have extremely large view distances. [Ken] - Added support for configurable view height in satellite view. Command bunkers and towers support a "viewDist" value in the [CommandBunkerClass] section of the ODF; the default is 100 meters. [Ken] - Removed particle cutoff distance. I need to implement a better LOD system for particles so distant effects use lower-detail LODs. [Ken] - Undid control normalization change. [Ken] - More tweaks to try and get the game not to crash on gameover. Untested, mostly (HW faults at home) [NM] - More tweaks to fix crash on gameover. This time, it's tested. [NM] - Fixed bad assets false positives caused by missing file. [NM] - AVs in path.cpp, attacktask.cpp fixed [NM] - Broke up 'Can't locate gamespy master server' string to fit on multiple lines. This should be a little more visible. [NM] - Added (already recorded) audio messages for ivserv, fvserv. Thanks for sending on the changes to the files. [NM] - AVs in scrapgauge, avoidNode fixed. [NM] - FFA alliances tab shows who's on teams 5 & 6, and notes that they can't ally. This was done so that in case someone did end up on those teams, they'll at least show up in the interface. No way to tweak their team #s from that page (yet?), but one good way to reassign people to teams 1-4 is to switch to a team game (i.e. non-FFA strat map, or CTF), switch everyone over to the right team, then switch everyone back. That'll reassign them to the lowest team #s. [NM] - Rabbit target is re-highlighted onscreen every second, or when someone loads (joins) in DM. [NM] - Nerfed movement of starting turrets. They move slower (half-speed), take longer to deply & undeploy. This only applies to the (optional) freebie turrets gotten at the start of a Strat/MPI game; doesn't affect anything built at recy. [NM] - Isdf turret gives 10 scrap when killed, same as scion turret. (Was 20, just wanted it to be consistent based on cost, etc). [NM] - Dropped default AI skill of turrets to 2 for all human turrets, starting or not. Note: older mappack .infs had this at 3; the new infs don't set that ivar, but let the default in code handle it. I don't want to hear a single bug report from you-know-whom about turrets being too powerful, when he forgot to check this value in the pregame settings! [NM] - Fixed bug where voiceovers during loading screens (especially noticeable in ISDF01) wouldn't wait for completion before the mission began. [NM] - Tweaked in-game score/network display. Your name is shown in green, allies blue, enemies red. Ping & lag column for a player will flash red when network packets for them aren't getting thru (clients will only see server flash; server will see all). FPS will go red when under 10fps (the engine gets real unhappy when that happens). [NM] - Fixed bug in construction rig where it could forget what it was trying to build, which made the actual construction take so long it looked like a lockup. [Near-infinite loop in the terrain checking an insanely large region.] Fixed by having the construction rig process give the build class as a hint. Thanks, Commando, for sending a savegame that demonstrated this so well. [NM] ---- 1.3 beta 41 released======= - Fixed bug related to XP "compatability" mode being switched on when going into IA or hosting a game-- it'd go into an infinite loop scanning the data\missions\multiplayer and addon dirs for maps. Tweaked the code to explicitly manage directories, and it seems to work on my XP Home box w/ all updates on, and a shortcut to bzone w/ WIn95/98/ME compatability on. [NM] - Fixed scrapgauge::control crash-- team # of user could go invalid, leading to reading garbage memory. Bailing out/dying when using /nobodyhome and mapediting is still a fairly *BAD* idea (the game requires there be a user), but at least you should be able to exit cleanly w/o a crash. [NM] - Reduced mipmapping on rain, snow textures. [NM] - If network shell files are incomplete (e.g. FE's overwriting of 1.3's config files), an error box is shown on entry to multiplayer explaining the problem and won't let people go further. Annoying, but better than a crash. [NM] - Massive changes to audio code again, this time concentrated in the game code that calls it. Rather than handing out pointers to the rest of the code (and especially pointers to objects that can disappear w/o notification), code changed to hand out handles (U32, increments one per sound started). That triggered a fair chunk of code tweaks to match; as a side effect, some possible bugs related to sfx going missing should be fixed. Also reduced priorities on collision sfx if the user's not involved. [NM] - AV generated from CommandPanel::DoActions() possibly worked around. (Verified action.who is still a valid gameobj, clears and bails if not.) [NM] - Test code added (actually, subtracted, mostly) - #define NO_AVOIDANCE_CODE in Avoid.h. This'll turn off all the avoidance code that gives everyone so much joy ingame. Please give feedback on this. [NM] - Changed default service values in service truck and service bay to zero. This makes creating health-only and ammo-only versions much easier and cleaner. [Ken] - Switched SupplyDepot to use looping sound code from ServiceTruck. This fixes a problem where it would keep playing a sound when a recipient needed health or ammo but the building didn't provide the required resource. [Ken] - Tweaked DM, Strat, MPI DLLs to display gametimes over one hour in HH:MM:SS format, not just MMM:SS. [NM] - Fixed coloring of ping/lag column ingame (would show red after a death even in 1-machine solo MP). FPS of 0 (no data) shown as "-" [NM] - Sliders for listboxes have minimum size of 5 pixels-- their being proportional could end up with a size of 1 pixel, which is very hard to hit. [NM] - Fixed bug in Deathmatch where AI bots could get 'lost' over time and never respawn. [NM] - Added 'Crunch teams' button to server's Extra options for allied strat - this moves everyone down to the lowest-numbered teams that are open. Useful for getting a 4 player strat going when people have been on the right column of things. Doesn't give full control over reassignments, but should be sufficient for use. [NM] - Added network connection type button to the general game options. [Those trying to get cute and make an interface to adjust this ingame, don't bother-- it's read on entering the network code (before it scans for sessions), and never read after that.] The network.session.sendtwice variable is now set (though the console may not reflect its current setting) based on this-- clients will sendtwice if the server is on broadband; servers will sendtwice if all clients are on broadband. Right now, the code doesn't support per-client sendtwice settings, but that may be something to look into for the future. [NM] - Optional desktop refresh on exit of BZ2. Asked for by lubberlick. If this is annoying, edit it in addon\config\GamePrefs.ini (and let me know-- I could make the default to not do this). [NM] - More taunts added, from boards. [NM] - Various post-game issues fixed, like the chat box not retaining focus, and 'Enter Game' button visible before the server's [re]launched. Also may have fixed the 'black screen on bad assets kick' as well -- wasn't fully clearing out all the sockets and not checking them correctly when some (TCP) got shut down before others (UDP) [NM] ---- 1.3 beta 42 released======= - AI bots spawn near the spawnpoint, not at it. (Side effect of watching 32-bot soaktests and getting multiple bots piled up together in the same space. No, we have no telefrags, sorry.) [NM] - Outgoing TCP Packets are coalesced into larger chunks before sending. This should reduce memory allocations/deallocations at runtime, and be a bit friendlier to winmodems as it gives them a larger window to optimize across. Also fixed a possible timing issue with packet corruption when someone joins while large #s of packets are backed up. [NM] - DM, MPI taunts should be more in sync across multiplayer games. Also, all taunts have a 5% chance of a random taunt being played instead of the selected category. [NM] - Service trucks will service only buildings and vehicles (no pilots). [NM] - Tweaked priorities of sfx again. [NM] - Experimental code added to UnitProcess.cpp - if multiworld is enabled, it'll use the same random # seeds for all AI task(s) for a particular craft. This should reduce some of the popping seen in multiworld (it's NOT the netcode!), but craft that make decisions based on what's nearby them may still pop as the visual worlds contain fewer objects (by design, for speed). This only affects unittasks; there may be other entry points in the code that didn't get handled. [NM] - Due to the previous item, code introduced to make the far distance used by multiworld culler based on object detail setting. 1.2 used 400 meters; that is now used by low-object settings. Medium uses 500 meters, and High 600 meters. This may impact framerates somewhat; can't tell. [NM] - As the code changes to UnitProcess seems to have worked w/o causing too much disruption, I've duplicated that code into BuildingProcess::Execute(), ArmoryProcess, CombatProcess, CommTowerProcess, PowerUpProcess, TorpedoProcess, TugProcess, WingmanProcess. [NM] - Tweaked ivserv.odf, fvserv.odf to have an engageRange of 50 meters, not 100. [Change will be distributed with b43, not a 42-subbuild.] This halves the distance they go looking for targets to service. [NM] - Bug where 'Chat/Server Info' button would become nonfunctional after a failed join attempt (bad game or password) fixed. Also made the buttons on the Enter Password dialog have the outline style (as I've done with most other interface elements I've touched since 1.0; changed file with next full build). [NM] - Tweaked behavior of the IsOdf() callback from the DLLs. The calling syntax has not changed (or every DLL would need a rebuild), but what it does with the parameters has changed. If you pass in a buffer of at least 20 characters, with the first 20 characters ALL ZERO BYTES, it'll return the config in there and return true. (Of course, if the handle you pass in a handle to something that doesn't exist, it'll still return false). This shouldn't affect anyone who calls IsOdf(h,"ivwalk"), but the alternate calling syntax should follow this pattern: char ODFName[32]; // at *least* 20 characters long. memset(ODFName,0,sizeof(ODFName)); // Do this *before*every* call like this if(IsOdf(h,ODFName)) { // Check, skipping race name, and any suffix if(strnicmp(ODFName+1,"vatank",6) == 0) printf("Hey, Assault tank! Config= '%s'\n",ODFName); else if(strnicmp(ODFName+1,"vwalk",5) == 0) printf("Ooh. Walker! Config= '%s'\n",ODFName); } else { // Either h is invalid, or we didn't pass in a buffer it liked. } Done because Natty noticed a bug in mpinstant he couldn't fully figure out. This seems to be the most general and useful solution to modders-- it keeps all calling conventions intact, and just has a potentially useful side effect that doesn't trash memory. [NM] - IA, MPI DLLs updated to use the code as above. This should mean that they can correctly (finally? for the first time?) notice when assault vehicles are being built and adjust appropriately. [NM] - Invalid vehicles in stock13_iil.aip and stock13_iis.aip fixed. [NM] - sfx tweaked again. [NM] - Service trucks added to StratStarting.txt. Should only affect those who play MPI on ultra-mega starting force. [NM] ---- 1.3 beta 43 released======= - Added granularity of control over what ST services (see ODFs for more comments). Also reduced engageRange. This is the *LAST* dang balance nonsense I want to do. Thank you. [NM] - Fixed periodic loss of hilighted server in pregame shell. [NM] - AV in BuildEmptyCraftNear() fixed. [NM] - Fixed doubling-up error in discrete input bindings. [NM] - More tweaks to the IsOdf callback from ODFs. If the first byte of the buffer passed in is 0x01 or 0x02, followed by at least 19 0 bytes (see above), it'll return the 'odf' or 'gCfg' field of the object's GameObjectClass. Odf should be fairly self-explanatory; gCfg is the unmodified variant of the cfg. Units produced by humans will almost have a number at the end of their cfg, this is to sort out customized variantes. The following code snippets ought to show how to grab this info: char ODFName[32]; // at *least* 20 characters long. memset(ODFName,0,sizeof(ODFName)); // Do this *before*every* call like this // This format will get the 'cfg' field of the object's class. // ODFName[0] = 0x00; // No need to change ODFName[0] here, as the memset set it to 0 if(IsOdf(h,ODFName)) printf("handle %d has cfg '%s'\n",h,ODFName); memset(ODFName,0,sizeof(ODFName)); // Do this *before*every* call like this // This format will get the 'odf' field of the object's class. ODFName[0] = 0x01; if(IsOdf(h,ODFName)) printf("handle %d has odf '%s'\n",h,ODFName); memset(ODFName,0,sizeof(ODFName)); // Do this *before*every* call like this // This format will get the 'gCfg' field of the object's class. ODFName[0] = 0x02; if(IsOdf(h,ODFName)) printf("handle %d has gCfg '%s'\n",h,ODFName); For reference, a stock ISDF sabre (i.e. one built by the AI) should have cfg "ivtank", odf "ivtank.odf" gCfg "ivtank", while the ivtank1 (i.e. built by the human, possibly customized) will have cfg "ivtank1" odf "ivtank.odf" and gCfg "ivtank." - Converted more Entity/GameObject accessor functions to const variety. Probably no noticeable effect on anything, but should be cleaner in form. [NM] - Thanks to the ivtank/ivtank1 issue noted by Natty, the AIP code for targetType now matches against the base type's CRC, not the GameObjectClass pointer of the literal match. This should make it work for the first time. The 'attackType' still uses old code, so it won't notice if the AI has created the # units. Let me know if there's a problem. [NM] - Fixed spelling mistake in stock13_iia.aip (ivserc doesn't exist, but ivserv does). [NM] - Fixed surface leaks reported by DirectX. [Movie bmps didn't properly release after use, Mipmap creation forgot about the original surface.] This may help somewhat on graphics cards w/ smaller amounts of vram, overall memory use, and makes the end-of-app reporting by DirectX much quieter. [NM] - DM spawnpoints randomized a bit more. [NM] - MPI Extra options pages buttons repositioned for greater legibility. [NM] - Client's extra options are properly closed if server unexpectedly quits in shell. [NM] - BZ2 icon applied to window (and taskbar) for main app and installer [NM] - Ambient base building sfx should be audible again. [NM] - DM taunts are from 'Bots' now, not 'Team Blue' or whatever svar2 is. [NM] - Fixed sync bug noticable most in DM botmatches. The GameObject::GetWhoShotMe() call (used by callback from DLLs, also a lot of AI processes) could return inconsistent results across network games if the attacking craft had recently died. Now notices ASAP if they're dead, and returns consistent info. Might be slightly slower, but the sync-safety is *well* worth it. [NM] - Fixed possible sound handle leak in Ordnance.cpp. [NM] ---- 1.3 beta 44 released======= - Added aprock.wav to addon folder. Some odfs referred to it. [NM] - Found similar code to the code that could leak sound handles in Ordnance.cpp in other weapon files; the fix for that code has been replicated into them. [NM] - Found out that the apwrck folder was duplicated in addon, but had different contents. BZ2 is very unhappy with such things, and the different .msh files can cause bad assets. Deleted one of the offending folders, sorry. [NM] - Lots of tweaks to installer. It creates a .pak file of the assets in addon (except for a few files in addon\config designed to be user-tweakable). Thus, the renaming of the addon folder every build isn't needed anymore (and there was much rejoicing from HDs-- that was about a 70-80MB hit per build). Also has % on progress bar, better tracking of directory to install to, and a few other tools under the hood. All for a hit of about 40Kb extra to download [NM] - Tweaked Buildings, Hovercraft, Tracked Vehicles & Walkers, and most weapon classes to (1) not play sound efx from lockstep world in multiworld (conserving resources), and (2) save their currently-playing sound efx better across multiworld swaps, keeping them from being destroyed and rebuilt needlessly. [NM] - ivtan5.odf, p3tank.odf modified, placed in addon-- they referred to 'gflame_c.odf', which is some kind of long-deleted flamethrower weapon. This only really affected some SP missions, I believe, and not fatally, but it's good to clean things up. [NM] - Fixed bug in ISDF05.dll where the player could get stuck in a cineractive view, reported by Fraktal. Now forcibly kicks you out of that view 3x over the first few seconds after the cineractive is over, which should do the trick. Downside: previous savegames can't be loaded anymore. [NM] - Tweaked AudioSys.cpp to handle the occasionally-invalid positions handed back by GetIntWorldMatrix() in multiworld. This seems to fix the sound dropout problems occasionally reported, as far as I can tell with a test savegame. Not sure yet if I should make this a global change as lots of code depends on this function call. [NM] - Lots more under-the-hood audio tweaks. FileUtil.cpp now has in/out functions to load/save GasObjectHandles more sanely, reducing a lot of duplicated code. Also tweaked UnitDialog.cpp to play acknowledgment sounds in the visual world (not lockstep), and 'deal with it' code added to cb.cpp/audiosys.cpp to play them. This should make unit acknowledgment sounds work much better in multiworld. [NM] - Scriptutils.cpp cleans up a few variables on loading a new mission. This seems to have been the real cause of problems w/ cinematics at the start of ISDF05, as ISDF04 ends with a cinematic (and doesn't properly clean things up). [NM] - MissionHandler.cpp clamps the game's clock delta time the first 5 frames of a loaded mission. This was done as the clock was set as part of the load process, but there's a huge gap between the end of the load and the end of the first frame, as it's still got a lot of work to do. [Unswapping, drawing, etc] This gap threw off the clock, which truncated voiceovers noticeable in SP missions, and probably some nonsense in MP missions as well. Debug builds had code to ignore gaps over 1 second (aka debugger time) [NM] - Hovercraft.cpp saves off the airBorne variable (how high above terrain) between visual worlds. This may fix some of the flying sound getting lost problems some have experienced. [NM] - A few more tweaks on audio to play better in multiworld, including wiping out the old cb.cpp functionality and sending functions to AudioMessage.cpp. AudioMessage is much newer code, handles queuing and multiworld much better (cb.cpp had no concept). This may stack up audio a bit slower/deeper, though. [NM] - OrderPanel.cpp looked for teammate order sounds 'SOUND_MESSAGE_%d', while iorder.odf/forder.odf had 'MESSAGE_SOUND_%d'. Fixed code to match data; this seems to have been broken months ago (10/28/01) when the messages were split off to race-specific files. Took you guys a while to notice. [NM] - Fixed bug with client's player state when server leaves a game. This was because the 'Enter' button was broken, again. [NM] - Added 'network.maxsmooth' variable -- allows easy at-runtime modifications to the MaxMWSmoothPercentage varb out of GamePrefs.ini. Maybe if some testers actually do something useful like test this rather than whine about balance-nonsense, a final value can be derermined. [NM] - Audio messages shouldn't be truncated if packed together. [NM] - Unit acknowledgment sounds play more reliably on team transferrals. Also made the transfer log to the messages window for both audio and visual feedback. [NM] - List of team's audio dialogs (F# droplist) are rebuilt in lockstep world when an object becomes the (local) player-- this might fix the occasional wrong race dialog heard. [NM] - People complained that units didn't say anything on selecting them in MP. Others pointed out that they've never done that in any version of BZ2, only speaking up on being given new orders. Option added to game sound options (default: quiet, for historical reasons) to tweak this behavior at will. [NM] - ISDF Bomber odf edited so it can't be transferred to allies. It would self-destruct anyway when it found it had no bomber bay on the ally's team; this change just saves commanders some scrap. [NM] - BettyVoice.cpp ("Base under attack", etc) list of what messages to play based on user's race is rebuilt on object becoming local user, same as F#-dropmenu (above). Both are also reloaded after every [re]sync on client join, etc. This should hopefully fix the occasional "wrong race" voiceovers. [NM] - Fixed bug where a client lagging out of a server could make it impossible to rejoin it. [NM] - Replaced the audio 'weaponVolumeFactor' type items in GamePrefs.ini with 'AudioMultiplier_*' entries, matching all the categories of audio the game has. This should allow folks who want ambient sfx louder or softer to be able to tweak it directly. [NM] - AudioMessage busywaits for sample to be truly done. This should eliminate the occasional voiceover cutoffs. [NM] - BettyVoice.cpp, OrderPanel.cpp ask the Network code for what race should be used by a team in multiplayer. This is an extra attempt to make sure the 'wrong race voiceovers' bug is gone. [NM] - Moved location of Audio channels used display ingame. [NM] - 'Time Left' display from DM, Strat, MPI DLLs showed elapsed game time, not time left. Fixed. [NM] - Tuning section for the Idle unit dispatcher added to AIPs, code to read it in to AIPOverwatch.cpp. The values in each stock13*.aip are fairly redundant, as they're all the same, and already set to the default values if they weren't specified. However, they're there for reference for modmakers. [NM] - Thanks to bug report by Fraktal, bug on isdf07 where Braddock would never shut up about building a scav was tracked down. It's the same as the issues in Strat/MPI with a '1' tacked onto the odf name so it wouldn't match. I did some quick cut'n'paste in all the SP mission scripts so that they call the IsOdf() to get the odf string into a local varb, and manually match the string to the first part of what was returned. This seemed to fix the isdf07 bug, and will probably fix a bunch of similar (but less noticeable) issues in other missions. [NM] - Received units in MP have the sender correctly identified in text messages. [NM] - Text message printed on command switching.. In shell, everyone sees this message (as they can already see the playerlist), but ingame, only people on the affected team group see it. [NM] - Reduced memory usage of installer. On my slowest boxes at home to test on (K6-3 450Mhz, 128MB 100Mhz RAM, or Pentium II 350Mhz, 320MB 100Mhz Ram, both Win98), a full install of b45 took about 90 seconds on both, which is acceptable in my book. Memory usage peaks out about 50MB on my Win2000 box for a full install, which is pretty reasonable. People on 64MB total boxes may have to wait a while longer for the installer to finish, but realistically, they'll be used to waiting for BZ2 to run on such a system. [NM] - The list of allies (F10 .. F7, as necessary) is forcibly rebuilt every time in all worlds when an object is set as a local or remote player. This seems to have fixed one bug I noticed in 2-player allied team strat where the client wouldn't see the server as an ally, and may fix more issues. [NM] - Bug in ISDF04 exposed by banging on space to skip out of the voiceover leading to the tugs never getting on the dropship fixed. Tug2 was in front of the user, and the banging on space gave it a different order. ISDF04 DLL now reassigns the tugs and relics to Manson's team before any orders can be given, which seems to fix this problem ok. [NM] - Tugs should have a chance of working properly in multiworld now. Their cargo wasn't reassociated with them on a world swap. [NM] - Dropped MaxMWSmoothPercentage to 0.20 in GamePrefs.ini as that seems to be a better value right now. [NM] - Various fixups to rabbit mode in DM. No deaths/score changes for the victim of a non-rabbit kill (i.e. one hunter kills another), but the offending hunter gets negative points for that. Also tracks the rabbit and rabbit shooter by team #, so that if they hop out or enter another vehicle, they're still tracked properly. [NM] - Fixed bug in CommandPanel.cpp that could report spurious 'Unit limit exceeded' -- it would count everything on commander's team 5 times, versus accurately summing up commander and allies. Parallel code in ConstructionRig.cpp, FactoryPanel.cpp aready had same fix applied. [NM] - Tweaked Objectification code for multiworld -- doesn't go thru WorldPart::Set(), but has one list that is converted at PostLoad() time. This fixed up some issues noted when the rabbit would hop out of their ship. [NM] - Added weenie mode (1-shot-kills) and ship-only mode to DM [NM] ---- 1.3 beta 45 released======= - Due to continual misuse of the editor in 1.2 by some lamers (not going to give them the courtesy of even mentioning their names), bzone.exe has been split into two files: BZ2Edit.exe, and the traditional bzone.exe. The first has the editor present in it, BUT NO MULTIPLAYER capability. The second has multiplayer, BUT NO EDITOR. [BZ2Edit.exe is also compiled differently, resulting in about a 700Kb difference in size.] Anyone wishing to use the editor will need to update their shortcuts, etc, to point to the new executable. Testing or running missions requires bzone.exe in almost all cases (as DLLs point to it). [NM] - Made sure that some tuning values for things could NOT be changed by users-- would cause *massive* resyncs. [Sorry I'm being vague here, but I don't want people to break 1.2 with this knowledge.] [NM] - Fixed possible off-by-one error in AIP dispatcher/randomizer. [NM] - Doubled a bunch of constants in vid\bucket.cpp (and moved some constants from bucket.h into there as they were only used in there). This should fix the bug Commando noted when *TOO MANY OBJECTS* were onscreen, and some polys were arbitrarily dropped. The unit limit of 30 exists for a reason, folks, as much as people would like to treat it as a lot less than a suggestion. Feel free to bring your nice shiny new boxes to an absolute crawl by drawing too much. :) [NM] - Bugfix to irc code to prevent crash on entering irc servers that spew way too much at you on entry. [NM] - AV when aborting out of an bz2edit.exe session fixed. [NM] - Tweaked priorities of walker foot sounds, reduced volumes of non-user collision sounds. [NM] - /iplist now shows IPs for incomplete joiners. [NM] - Packets not sent to incomplete joiners, and sensitivity for busted packets from them much stricter. Added timeout value for them to send proper BZ2 data to GamePrefs.ini (InitialJoinTime), default 5 seconds. [NM] - Added RingBuffer, TextQueue functionality to netcode. Right now, only the chat and irc windows use them, but would like to move over inpacket, movepacket queues to them. [NM] - Various irc fixups, including handling of NOTICE commands, channel topics, better formatting of MOTD, etc. Also munges Username to strict standards if setting in GamePrefs.ini says so (default on; required by current irc server, and this setting shouldn't hurt on other servers) [NM] - Options to autoban IPs from GamePrefs.ini, and auto-blocking of multiple failed joins added. IP always printed on failed joiner other than bad pwd/version. 'Connection Refused' dialog given ingame if the server refuses the connection (ban/block/etc) [NM] - Ping column ingame flashes purple every second if packet lossage is high. Solid white = ok. Solid red: no packets received recently. White/Purple = receiving packets, but high packet loss. Red/Purple: high loss, nothing recently. Escape screen shows the colors as well now. [NM] - Reduced max BZ2 packet size to 530 bytes, which is under the recommended MTU of 536 bytes for safe passage on the net. [NM] - Movepackets actually honor the max packet size (for the first time ever!). This might explain some problems with lots of players ingame. [NM] - SendTwice, SendAlways on when everyone is set as Broadband ingame. Should help things out a bit in reducing lag/warp on a LAN. [NM] - Moved InPacket.cpp to use new ringbuffers for data. This should be moderately more efficient in terms of memory usage, as items are packed together with minimal padding. [NM] - New timing system in place. (Old one selectable out of GamePrefs.ini, if you really want it). It keeps a much more accurate distributed clock going across all machines, and seems to work well in testing on my LAN. [NM] - Installer checks for DX8.0 (or higher), points people to MS's site and doesn't let them install if it's not present. [NM] - Blink special only force-updates the multiworld smoothing position when triggered. This should fix up some visual inconsistencies with and without it being triggered. [NM] - DM DLL: in ship only mode, hopouts aren't tolerated. [NM] - IRC: more illegal characters like ~ and - removed from nicknames, if the UseStrictUsername is on. [NM] - Fixed incorrect positioning of items on DM client options screen. [NM] - Fixed bug where audio samples at > 11025Khz could play about 10% slowly. Also resampled select.wav to 11025Khz; its high bitrate exposed this error in the first place. [NM] - Objective list is multiworlded again. If it's not, nav beacons don't work in MP. If it is, rabbit mode is worse. Sigh. [NM] - Rewrote F# code for the list of allies ingame. Should be stabler now. [NM] - More timeskew changes. Are we done yet? This is fairly draining. [NM] - At Wil Stahl's insistence, Service Trucks and Healers no longer automatically service buildings. This was just an asset change. [Ken] - Fixed invisible radar background (was being alpha-fogged out). [Ken] - Tweaked asset load code in FilesToCheck. Those with source code can diff it and see what was done. The rest of you don't need to know. [NM] - Loadbar doesn't repaint the screen if the change wasn't that significant. This might speed up things a bit. [NM] - svar8 may now contain an ODF file of more files to check in the asset list. This is intended for MODs to be able to protect their assets from cheating; if svar8 isn't listed in them, nothing new will happen. New ODFs included by a MOD will be checked if either (1) they are referenced from the .bzn, or (2) they're listed in this file. Assuming svar8 contains say "GSHCheck.odf", then the file 'GSHCheck.odf' (located somewhere under addon) should contain lines of the following form: [Check] Check1 = "ibGSHarmo" // .odf is implied and should NOT be added Check2 = "ibGSHfact" Check3 = "ibGSHrecy_m" Check numbers must be steadily increasing; if a Check# isn't present, then processing that file stops. It is recommended that you list ODFs from lowest on the hierarchy to greatest for smooth loadbar progression, like I did above. If the recy is first, it'll recursively load everything (and take a while to do so), and sub-items will go by in the blink of an eye. -- b45h released - Resurrected the svar5 code from the 1.2 MP DLLs source code release. [It was in the source code, but disabled, as it wasn't in the shipped 1.2 DLLs.] Basically, this is for the Strategy02.dll and MPInstant.dll as a way of overriding the intial recycler. If specified, this is treated as an alternate recycler base name. The first character of this is replaced by the race ('i' or 'f'), so that if svar5=="xGSHrecy", the objects spawned will be either "iGSHrecy[.odf]" or "fGSHrecy[.odf]" (.odf is implied). If this isn't present, 'Xvrecy_m' is used, just like before. - Also protected alternate recycler vehicles automatically (it tries to load all 26 race-specific variants of svar5) as part of the asset check. [NM] - Cleaned out redundant code from network state per player (.head and .tail info), and uses the more-reliable .headtimestep/.tailtimestep masked to the array sizes. [NM] - Fixed bug where server's lag could spike after a resync. [NM] -- b45i released - Strat starting options (MPI soon?) has a listbox for the starting recyclers. This is a nice interface for MOD authors to come up with variants on the tech tree, units, etc, and let users pick them at will. The list is in 'recylist.txt', which must be in the same directory as bzone.exe. Three variants are present right now: 'Stock 1.3', '1.3 + Smarter service trucks', and 'No empty scouts (==Singleplayer). More might be included over time. - Instant & MPI DLLs changed so that the CPU team gets extra-smart service trucks that auto-heal much more. Natty should pick up on this as well. :) - Stock AIPs changed also to match new CPU service trucks. [NM] - Moved official files from Data/Missions/{Instant|Multiplayer} to addon; these will go out in the next mappack distribution. This should fix the missing preview maps for MP, as data isn't searched anymore. [NM] - Added updated meshes from Commando. To be distributed with next full build. [NM] - Added the mappack from Lizard (tweaked slightly by Avatar?) to the mappack. [NM] - Moved audio files from general distribution to mappacks dist. This'll reduce the size of each build's .exe slightly. [NM] - Editor build (bz2edit.exe) defaults to ascii-saves now. This may help with some of the quirks noted with that exe. If problems are still showing up, please try to give me exact steps to reproduce a problem, and whether "console -> game.binsave" helps. [NM] - Made it easier to close off the 'Scanning for sessions box', and also made the cfg files not auto-add it, the real cause of some problems. [NM] - Added explicit view distance entry to Command Bunker. This had been on my local system for a while but I forgot to check it in. [Ken] ---- 1.3 beta 46 released======= - Found, fixed a bug where too many audio samples could be started, and immediately stopped as they shouldn't have been started. This might be some of the recent performance problems. [NM] - Random # code inlined much better, gaussian random # table has a lot more individual precision (10 steps, instead of 5 when generating, and uses new Mersenne Random base), but table reduced to 4096 entries to not thrash memory so much. Unified random # reseeding code from 2 functions to 1 (and thus should be less err-prone), resync'd random seeds after calling the mission DLL as well. This seems to make 1 machine + multiworlded DM bots a lot smoother in their operation, but it's not perfect yet. [NM] - Reduced DM bots retarget from once every 1.6 seconds to once every 3.2 seconds. This may help DM bot popping a bit as well. [NM] -- b46a released - loot.bmp in the most recent map pack got corrupted due to an ascii/ binary messup in adding to CVS. Fixed. I won't reissue the maps distribution over this; you can copy over the file from data\missions\multiplayer\loot locally if this is a critical issue to you. [NM] - Fixed lone ice crystal mistakenly on team 1 in dmbane.bzn. Once again, won't reissue maps over this. [NM] - Opening the Extra Options screen no longer zaps the chosen selection back to the default of not specified (ivrecy_m). Also, clients can't select any items in the list (made inert) to show that they have no say in the matter. Everyone in a game uses the same recycler setup. [NM] - AV in NetManager::InPacketManager::QueueInPacket fixed, I believe. [NM] - Added "AttackAnything = {true|false}" (default = false) line to AIP planner code for planType = "Attacker" sections. If this is true, it'll prefer to attack the specified "targetType," but if there's nothing found of that type, it'll pick a random target among the human's buildings, crafts, etc. Also, limited maxAttacks to 3 by default, unless overridden in AIP. [NM] - AIP tweaks: Made AttackAnything = true the default on all the stock AIPs as a test. Also, made all AIPs build 2 construction rigs off the bat, as one is useful for base buildings, and the other for roving extractor upgrading. This may fix some of the "AI sleepiness" bugs seen recently. [NM] - AV in Spawnpoint code fixed (tries harder to avoid derefrencing NULL) [NM] - More AIP parsing code changes. Added new (optional) conditions to each plan: MinTtlScrap = x MaxTtlScrap = x MinCurScrap = x MaxCurScrap = x These are all optional, and the last 3 default to a value of 0, i.e. "don't check." [MinTtlScrap defaults to 0, except for an Attacker class, in which case it defaults to the most expensive of the attacking unit and what was specified in the AIP. (i.e. a MinTtlScrap of 1 would be overridden by a tank, but a tank wouldn't override a MinTtlScrap of 100). TtlScrap rules check scrap values against the team's maximum capacity, while CurScrap checks the current scrap gauge at the time of the execution of that plan. This is useful in quickly skipping rules for very expensive units if the scrap gauge currently goes up to only 60. For example, I just modified stock13_fia.aip: // Lotsa-cash variant [Plan7] MinTtlScrap = 100 planType = "BuildLoop" planPriority = 410 buildType1 = "fvservcpu" buildCount1 = 3 buildType2 = "fvwalk" buildCount2 = 3 loopDelay = 60 // Medium-cash variant [Plan8] MinTtlScrap = 60 MaxTtlScrap = 99 planType = "BuildLoop" planPriority = 409 buildType1 = "fvservcpu" buildCount1 = 3 buildType2 = "fvtank" buildCount2 = 3 loopDelay = 20 // Low-cash variant [Plan9] MaxTtlScrap = 59 planType = "BuildLoop" planPriority = 408 buildType1 = "fvsent" buildCount1 = 3 loopDelay = 10 Basically, only one of these three rules will ever be executed, depending on whether the scrap gauge is over 100, whether it's between 60 and 99, and whether it's under 60. Lots of stock AIPs tweaked to take advantage of this; modders should be able to go really crazy with this. [NM] - Another F# code change-- a request to change in any world is treated as an update for all worlds. This might fix the last bit of bouncing. [NM] - Debug code to show the current state of the AIP code added onscreen, below chatbox and above wireframe. I'll make this an option in a bit. Should be useful for modders to see what their scripts are up to-- it shows the current AIP file, plan priority, team scrap, and (most of the time), what the current plan's blocked on. Logfiles are still supported, but this may be a more realtime method of monitoring. [NM] - If the files referenced by svar0, 5 or 8 (map, intial recycler in 'i' and 'f' variants, and extra asset check file) aren't found locally, session cannot launch, and an error message as printed as to what file(s) are missing. This applies to server & clients. [NM] - Session name, password, server message no longer zapped on leaving the session. Thought that would be better than the auto-clear. [NM] -- b46b released - Added a velocity minimum in Calculate_Impulse() to prevent tracked vehicles from interenetrating buildings. [Ken] - Updated tread simulation to change tread speed based on actual vehicle velocity instead of an internal variable; this makes tracked vehicles respond to collisions better. [Ken] - Changed collision geometry (buildings) to allow ray hits even when the ray starts slightly behind the plane; this should help avoid some interpenetration. [Ken] - Added support in Recycler, Factory, and Armory for both build menu items and group menu items. In the following examples, replace "<#>" with a group or item number between 1 and 10. To create a build menu item, create the item like this: [FactoryClass] or [ArmoryClass] ... buildItem<#> = "" ... To create a group menu item, create the item like this: [BuildGroup<#>] or [ArmoryGroup<#>] buildLabel = "