If you can, please install and test this. I think that this build is about 99.9% of what I want to put into a 1.3.6.5 release. Your best chance of having bugs fixed for 1.3.6.5 is to report things on the 1.3.6.3 series. Logfiles -- battlezone.log and chatlog (if enabled) -- are useful. Otherwise, reporting things in a way that makes them happen here is best.
What's changed since 1.3.6.4-release
-- GSH- Construction rigs can upgrade once again. Was bit by false positives
from a security check added. [NM]
- Extra work to ensure out-of-syncs are noted and reported. [NM]
-- 1.3.6.4a build
- Move score CRCs into per-timestep state checks. This simplifies
items to track, is a net deletion of code, and should hopefully fix
the issues seen with false positives on scores out of sync. [NM]
- Slightly better cleanup of AttackGroups() when a unit is destroyed.
Shouldn't ever allow a dead object to be chosen for a group
leader. [NM]
- Fix root cause of score desyncs; was switching tracking of kills and
deaths for clients. [NM]
-- 1.3.6.4b build
- If *Prefs.ini::VerboseLagInfo is on, then denied joiners (e.g. game
full, in banlist) will have a reason printed to the ingame message
box. The message to battlezone.log has been expanded, but it was
always there. [NM]
- Publishes to RakNet master servers more frequently when in shell.
This will give more reliable info about the game to prospective
clients when the server is behind a NAT. [NM]
- Tweak for bugzilla #564. Tweaked MPVehicles/autoreg code to use more
modern strings. Can't seem to repro #564 anymore -- enabling both
Thunderbolt and Default ISDF, and choosing each one spawns the correct
ODF in a DM. Did also put a warning on the thug commander recy variant
description that it is best played with people one knows and
trusts. [NM]
- Banlist.ini now populated with list of proxies from
http://en.wikipedia.org/wiki/Wikipedia: ... nge_blocks .
That's 770 entries. Parsing that at startup and on joins ought to be
fast enough; if not, let me know. [NM]
- Fix for bugzilla #568 - function signature for DLL SetLabel()
function in code matches header. [NM]
- Fix for exploit in thug recy variants. Added to ODFs:
[BuildingClass or TurretCraftClass]
CanAlliesDemolish = false
If this is set to false (default), then construction rigs should
not be able to demolish something on an allied team. They should still
be able to demolish something on the exact same team, or on enemy
teams. Compiles, but is untested. [NM]
- Bumped the height of the full build installer window by 16 pixels.
Some were complaining that the window contents were offscreen. Never
seen here -- probably some custom Windows font/window sizing options
that I don't use -- but it was a trivial change. [NM]
- Allowed DLLs to pick what happens on a snipe. New behavior for
Strategy02 / StratCTF / MPI DLLs: if friendly fire is off (i.e.
ivar32 == 0), then snipes of a same/allied team unit will not kill the
pilot.
This friendly fire snipe fix involved creating new optional
callbacks to the DLLs so that DLLs can subscribe to notices of
ordnance hitting objects and/or notices of snipes. Both callbacks
should expose the exact odf of the ordnance involved, etc. These
callbacks are always set up by DLLBase, so derived classes just need
to implement the virtual fuctions as desired. Right now, calls are
made to DLL in lockstep and visual worlds; if this proves to be a
performance hit, I might make it lockstep only.
Also added, to ODFs:
[CraftClass]
CockpitSniperRadius = 1.0
This should allow modders to tune how snipeable each craft is. If
the sniper shell lands within CockpitSniperRadius of the target point
(in 3 dimensions), it is treated as a snipe. Smaller values for
CockpitSniperRadius will make it harder to snipe - do test to see that
it is still possible to snipe after tweaking this value. [NM]
- Fix for bugzilla #564 - delete Default ISDF/Scion entries from
MPVehicles.odf, as they're now dupes. DMVehicles.odf is where the
Default ISDF/Scion entries still live. [NM]
- The alt-tab tolerate setting set by a server shouldn't be stored for
later use by a client. Noted on forums. [NM]
- Added a few more DLL -> exe callbacks. Also made same-team snipes
allowed in MPI/Strat/StratCTF. [NM]
- Additional error handling and logging in the
registration/searching/deleting of sessions with RakNet master
servers. This should make it more resilient in case of outages or
other problems. The extra logging (to battlezone.log) in case of
issues might be sufficient to try and diagnose why various "web
shield" programs break BZ2 searches for games. Any testers want to try
and install such a program (Avast Web Shield is one such culprit) [NM]
- More variation in respawn position in strategy/stratctf/MPI
DLLs. This might help prevent repeated spawn kills in MP. Let me know
how this works out. [NM]
- In strategy/stratctf/MPI, if an allied AI pilot gets into a craft,
then the craft should remain on the same team, not switch to the
pilot's team. This should prevent craft steals from allied teams by AI.
Done with a new DLL callback. [NM]
- Tweaked scoring system for strategy/stratctf, recommended by Zero
Angel: Players get a death if they died as a pilot (and nothing
else). Players get a kill if they personally killed the opposing
unit. Score should be the Scrap cost of all objects (including
structures) the player has personally destroyed, subtracted by the
scrap cost of any ships that the player has personally lost. Let me
know how this works.
- DLL Callback changes: 1) there should now be an exe -> DLL
ObjectKilled() callback when a building is destroyed. 2) For all
ObjectKilled() calls, the killers handle should be the handle of the
unit that got the last shot in, NOT the human controlling the team
that got the last shot in. DLL authors - if you want to go back to the
old behavior and get the owning human player handle for a killers
handle, do this:
Handle playerHandle = GetPlayerHandle(GetTeamNum(killersHandle));
[NM]
-- 1.3.6.4d build
- More work on this: in strategy/stratctf/MPI, if an allied AI pilot
gets into a craft, then the craft should remain on the same team, not
switch to the pilot's team. Compiles, but is untested. [NM]
- Giblet upgrades - RakNet to version 4.08. Change notes include
mention of possibly more reliable NatNeg joins. [NM]
- Possible workaround for RakNet server browsing not working when a
'web shield' type piece of software is present. RakNet developer noted
that a request to the server (w/o looking for matchmaking) first then
the real request for matchmaking data fixed it on his end. So, trying
such an approach here. [NM]
-- 1.3.6.4e build
- Tweak the RakNet temp then real request code. Does not recycle
connection or socket, and only does the temp request if a regular
request has failed recently. [NM]
-- 1.3.6.4f build
- Even more exe -> DLL callbacks, one for powerup pickups, and one for
target changed. Compiles, but untested. [NM]
- Better behavior in asset checker when there are loops in the ODF
reads. [NM]
- More work on this: in strategy/stratctf/MPI, if an allied AI pilot
gets into a craft, then the craft should remain on the same team, not
switch to the pilot's team. (i.e. now, pilots will switch to team of
craft they get into, if that craft is allied). [NM]
-- 1.3.6.4g build
- Updated permissions for construction rig demolishing. Commanders (in
teamplay games, not FFA) now have the rights to demolish items. Thugs
do not, by default, though this can be changed by ODFs. Renamed one
parameter, and edited comments above. Compiles, but is untested. Summary
of what the flags are, and when each is used.
[BuildingClass or TurretCraftClass]
CanDemolish = true // Used when MP is off, or MP for same team or enemy team
CanAlliedCommanderDemolish = true // Used when MP teamplay is on & controlling unit is commander
CanAlliedThugDemolish = false // Used if MP FFA is on, or teamplay is on & controlling unit is thug
[NM]
- More work to deregister MP games from RakNet servers if the game is
exited, or if it crashes. [NM]
- Scanning for RakNet games on master server is now done from a
background thread. This may make the UI a little more responsive. LAN
games are scanned from the main thread; this should be a non-blocking
broadcast that runs quickly. [NM]
-- 1.3.6.4h build
- Added PetWatchdogThread() DLL callback. See comments in ScriptUtils.h.
[NM]
- Added some additional tracking of recently re-sent move packets to
players. If a move has been re-sent within the past 3-4 seconds, it
will not be re-sent. This should reduce bandwidth usage when a cluster
of move packets were lost, and generally bundle things better. Code to
do things like this was present in BZ2 at one point, but apparently
lost in some of the networking rewrites. [NM]
- Possible fix for AV in Utils::Ansi2Unicode(), noted on public
forums. [NM]
- Added throttling for chat messages in MP. Will reject messages it
considers spam. [NM]
- Canceling joins to servers should be handled properly once again.
[NM]
- Created ProxyList.ini, which contains the list of anonymous
proxies. Banlist.ini is now much smaller, and contains suggestions for
ranges to ban as found on the forums. Updated ProxyList.ini with latest
from http://en.wikipedia.org/wiki/Wikipedia: ... nge_blocks [NM]
- Possible fix for AV in ~Bitmap noted on forums. May be more bugs
hiding behind this. [NM]
- Tweak to session join code. If it got a full set of info from that
server, assumes a direct join is possible, and ignores
NatNeg. (I.e. hosting computer has manually forwarded ports.) If it
doesn't have a full set of info, uses NatNeg if that was
provided. [NM]
-- 1.3.6.4j build
- Reduce size of RakNet installed DLL by removing some unused (to BZ2)
pieces. [NM]
- Even more NULL pointer checks in DR2 code. Earlier checks weren't
fully sufficient; thanks for the logs on the private boards. [NM]
- Fix for AV noted in bugzilla #578 logs. More sanity checks on
ranges. [NM]
- Fewer type I errors in chat spam detection. [NM]
-- 1.3.6.4k build
- Eliminate terrain height editing from visual worlds. Found that
terrain-owning buildings could modify terrain heights in visual
worlds. Now, only lockstep world updates will actually modify terrain.
This change did *remove* the SeismicWave ordnance's ability to modify
terrain with MW on. I'm not willing to pull in the MW-aware terrain
code modifications from the 1.3.7.* codebranch that might help with
this.
Changes to terrain height (i.e. deploying buildings flattening
terrain) are saved and loaded in MP joins/resyncs. This might help
with MP resyncs, especially with late joiners. [NM]
- Added to PRIVATE builds only, 'network.monkeymoves' command. This
toggles replacing user inputs with random chaos. [NM]
- Fixed a case of clients doing an extraneous load/save on a resync.
This should make things a bit smoother for the client as it avoids
unnecessary work. This change might also reduce resyncs, not
sure. [NM]
-- 1.3.6.4l build
- Work on AV in RecentlyReSentMoves::ContainsMove() noted on boards.
More sanity checking of parameters. [NM]
- Reduce tolerance for possible chat spam. [NM]
- Fewer false positives on the "no sessions found, check if you've got
webshield" especially if connecting took some time. Note: I don't
believe that this will fix 'web shield' type programs (AVG is reported
to have a particularly oversensitive one) that completely block BZ2's
requests for matchmaking data. [NM]
- Session type filter for 'mpi' works reliably. Tries slightly harder
to get a game type for sessions without a direct information
connection (e.g. shows ??? for ping), such as those behind a NAT. But,
if there is no direct connection, then the map may appear only in the
'All' filter type. [NM]
- Fix for bugzilla #558 - fixed some errors in MPVehiclesGH.odf [NM]
- Fix for bugzilla #585, 587 - unified FF rules in all game
modes. Now, if friendly fire is OFF, then human and AI units should
not be able to damage same or allied team units. Hitting enemies
should cause damage. This simplifies a bunch of rules for friendly
fire logic, explosion damage, etc and may produce more expected
results. [NM]
-- 1.3.6.4m build
- Fix AV when a non-gameobject is entered in the editor. Non-public
builds had some checks to ensure an odf was of the correct type
(GameObject, Weapon, Ordnance, Explosion, etc). Now enabled this for
all builds -- should not be a noticeable speed hit. [NM]
- Fix for possible infinite loop in NextJoinOrResyncFrame() when
multiple resyncs are queued up. Also made it batch up resyncs more--
when one's already scheduled for 'soon', will join up with that. [NM]
-- 1.3.6.4n build