The current release is version 2 beta 1 with the following new features:
- beta 2
- The SHA1 hash used for storing PPH data will now be explicitly sent by the client when stats logging is disabled. If the client did not configure stats credentials, a random hash will be generated clientsidely. This random hash will be stored on the client and sent every time instead of an actual hash until the client configures a stats username and password.
- A potential fix for players voice chatting to the wrong team after a switch is included, although I could not really test it.
- Another potential fix, namely for players being able to undo a forced team switch, is included in this release as well. It can be configured with the new UndoSwitchCheckTime option.
- The selection of balancing candidate players was modified. Now players from the bottom of the scoreboard should be preferred.
- The RecentBalancingPlayerTime option was not available via webadmin. It is now.
- beta 1
- PPH storing now uses the SHA1 hash of players' stats identifiers, which is essentially based on the player's CD key, stats name and stats password
- the inactivity time after which a player's PPH record is removed can now be configured and defaults to 30 (instead of just 2) days
- PPH storing no longer relies on the EvenMatch package name; in other words, starting with this release, stats will survive version changes
- players who join the winning team, either from spectator mode or from the team that is currently behind, are now reliably switched (back) to the other team that needs them more
- some fixes related to Accessed None and Array out-of-bounds errors
- some improved config option descriptions and in-game messages
- alpha 9
- PPH is now accumulated over more than one match. All older PPH values together and the current match PPH each contribute 50% to the value that is used to rate players during shuffling. This 50%/50% contribution is persisted at the end of the match, which causes older match PPH to be faded out gradually.
- The team shuffling algorithm was completely rewritten from a very time-consuming optimal solution to a relatively simple approximation that still gives very good results. This should prevent even the slightest chance of "runaway loop" crashes during shuffling.
- Fixed soft balance delay not being applied. Now when an imbalance between teams is detected, Even Match correctly waits for the soft balance delay to pass before doing anything. If automatic balancing is disabled an manual balancing is requested and necessary, the soft balance delay is not applied.
- Exported sources should now be compilable without any error regarding a missing ProgressArrowRotator resource.
- All user-visible messages should now be localizable.
- alpha 8
- renamed config options to hopefully make them easier to understand:
- MinDesiredRoundDuration -> MinDesiredFirstRoundDuration "Minimum desired first round length (minutes)"
If the first round is shorter than this number of minutes, scores are reset and the round is restarted with shuffled teams. - bShuffleTeamsFromPreviousMatch-> bShuffleTeamsAtMatchStart "Shuffle teams at match start"
Initially assign players to teams based on PPH from the previous match to achieve even teams. - bConnectingPlayersBalanceTeams-> bAssignConnectingPlayerTeam "Assign connecting player's team"
Override the team preference of a connecting player to balance team sizes. - bAlwaysIgnoreTeamPreference-> bIgnoreConnectingPlayerTeamPreference "Ignore connecting player team preference"
Ignore player preferences for a team color, allowing the game or Even Match to pick a team.
- MinDesiredRoundDuration -> MinDesiredFirstRoundDuration "Minimum desired first round length (minutes)"
- new config options:
- bBalanceTeamsBetweenRounds - Whether to always apply balancing between rounds.
This isn't total shuffling, but just moves the bottom players of the bigger team to the smaller team until player counts are balanced. If player count is odd, the behind team gets the remaining player. - bBalanceTeamsWhilePlaying - Whether to auto-balance during the match if teams get uneven. (Turn off if you only want balance on player request.)
- bBalanceTeamsDuringOvertime - Whether balancing (auto or requested) should happen during overtime. (disabled by default)
- bDisplayRoundProgressIndicator - Whether the team progress HUD indicator should be displayed.
That indicator off by default now. If Even Match assesses the game state correctly, that indicator will not provide any useful information for players. As mentioned before, I will probably remove it for the final version. - TeamsCallString - The chat message text players can use to call for team balancing instead of the "mutate teams" console command. (not set by default)
While a round is ongoing, players and admin spectators can call for a team balance check. Non-admin spectators are excluded to prevent abuse. Even Match will do a quick check to see if the call is allowed and seems justified. If so, regular soft balancing will start as configured and will be followed by forced balancing if necessary.
- bBalanceTeamsBetweenRounds - Whether to always apply balancing between rounds.
- Added Linux emitter crash fix. (This will only be applied on dedicated non-Windows servers.)
- Added some more debug logging. (Enabled by default for now.)
- Fixed an array index out of bounds error, which also partially broke soft-balancing.
- Excluded bots from top-scorer ranking.
- Added more "key player" criteria:
- Double damage with >5s left
- Super weapon with ammo in inventory
- Using Linkgun to heal things
- Added "criteria downgrades" for repeatedly unsuccessful forced balancing attempts. The "key player" criteria are turned off in the following order: nearby node check, UDamage, super weapon, linkgun, vehicle passengers, important vehicle, valuable player.
- Improved team shuffling algorithm's computational complexity to reduce the risk of runaway loop crashes with many players and known PPH records.
- renamed config options to hopefully make them easier to understand:
- alpha 7
- Initial "you are on ..." message is no longer dropped because of "Play!" announcement.
- Bots are ignored from any mid-game balancing by default.
- Balancing can be disabled for small player counts.
- There is a HUD indicator now that displays Even Match's assessment of which teamn is how far in the lead. This is mainly for debugging the alpha version and I'll probably make it configurable and disabled by default for the final release. Please send me a screenshot with a short description if you think the indicator shows something blatantly wrong in a certain situation.
- Rewrote the team progress assessment code. The previous code seemed to make sense when I wrote it, but it turned out to be way, way off in relatively common situations.
The new logic considers core health and the enemy's distance fro mthe core, node numbers and health and the own distance to the enemy core, as well as whether cores are vulnerable or the game is in overtime. - Interaction between the "Connecting players balance teams" and "Always ignore team preference" options was changed:
"Connecting players balance teams" now doesn't simply disable a connecting player's team preference, but actively sets a team number. In combination with "Always ignore team preference" this also happens if no active rebalancing is strictly required. - Fixed forced team switching not killing live players, which caused weird effects. For example if you were in a vehicle and switched from red to blue, you'd still drive a red vehicle that could even contain other red team members. Force-switched players now respawn properly and their death message reflects the reason.
- Fixed the "switch to winning team" protection sometimes kicking in for force-switched players. (Pointless, as they didn't chose to switch themselves.)
- Extended the "important player" check to exclude drivers of vehicles with passengers from forced switching.
- alpha 6
- Tweaked short round results message after end of match to say "first round", not "previous round".
- Excluded configurable percentage of top-scorers from mid-game balancing.
- Excluded players from mid-game balancing that are currently contributing to their team's progress, e.g. by driving a key vehicle or healing or attacking a node.
- Allowed the size difference to become larger if the smaller team is further in front.
- alpha 5
- Changed PPH cache to use Unix timestamp.
- Added a message sent to a force-switched player to notify about the switch.
- alpha 4
- Fixed random initial side switch. (Power node list was not fully initialized at that point yet.)
- Small fixes to recent balancing player detection.
- alpha 3
- Fixed players spawning in old team colors for new team after a switch.
- Added logic to prevent the same player from being switched back and forth again and again.
- Added logic to prevent players from switching to the larger/winning team.
- Player PPH from previous match is remembered based on the entire IP address now.
Download
Readme