[Mutator] Even Match (Onslaught team balancer)

Anything about UT2004 mapping, Uscripting & more
User avatar
Miauz55555
Posts: 2025
Joined: Sun 7. Jun 2015, 22:12
Description: https://discord.gg/X4V8THM
Location: Germany

[Mutator] Even Match (Onslaught team balancer)

Post by Miauz55555 »

I always appreciate your work and comments. And I also think all players do the same.. also when they are silent.
You are always wellcome here.. and if you want to share anything we would be happy when you do it here, too.

What do you think about a pick up game.. ONS.. AS.. or Jailbreak. I think we could grap a few players together. :D
Image
User avatar
Hyden
Posts: 233
Joined: Thu 9. Jan 2014, 03:57
Description: Eastern Coast Canadian, gamer
Location: Canada

Re: [Mutator] Even Match (Onslaught team balancer)

Post by Hyden »

I'd like to say I appreciate the efforts of people like Wormbo & others who are trying to make the game a better experience. I realize it can be a thankless job but I'm glad someone makes the effort!
Crazy_Eddie
Posts: 11
Joined: Tue 10. Jan 2017, 15:40
Description: Never learns.

[Mutator] Even Match (Onslaught team balancer)

Post by Crazy_Eddie »

Hyden wrote:I'd like to say I appreciate the efforts of people like Wormbo & others who are trying to make the game a better experience. I realize it can be a thankless job but I'm glad someone makes the effort!
Well said, Hyden!

Thank you all - you've done more for the game than anyone, and you kept it going 13 years (so far)!
:clap:
User avatar
ThunderCat
Posts: 221
Joined: Wed 15. Jan 2014, 00:24
Description: Swiggity swooty
Location: Norway

[Mutator] Even Match (Onslaught team balancer)

Post by ThunderCat »

Hyden wrote:I'm glad someone makes the effort!
You're right, Hydez! Been playing here for so many years -- I realized I've never really put much thought into how it all works behind the scenes :O The modders and the mappers truly are our unsung heroes of the online gaming community.

So a much belated but sincere thank you for your contributions is indeed in order :clap:
Image
User avatar
EmanReleipS
Administrator
Posts: 3327
Joined: Wed 2. Oct 2013, 23:18
Description: Pancake Fairy
Location: Germany

[Mutator] Even Match (Onslaught team balancer)

Post by EmanReleipS »

I know it's terribly late, but since Wormby is still stopping by from time to time and there may still be some questions about this...

We've finally managed to finish collecting and compiling the stats for the various versions of Even Match. Below is the average round time for a selection of maps over a 31 day period which haven't had any gameplay changes between versions/settings and which reflect a wide range of gameplay styles.

A: EvenMatchV2a5 (05 2015)
B: EvenMatchV2b2 - bBalanceTeamsWhilePlaying=True (11 2015)
C: EvenMatchV2b2 - Map repeat rate 20 - DeletePlayerPPHAfterDaysNotSeen=31 (02 2017)
D: EvenMatchV2b2 - Map repeat rate 27 - DeletePlayerPPHAfterDaysNotSeen=31 (04 2017)
E: EvenMatchV2b2 - Map repeat rate 27 - DeletePlayerPPHAfterDaysNotSeen=7 (05 2017)
Map A: B: C: D: E:
ONS-Ahebban 21.1 16.8 20.8 19.1 19.6
ONS-Alien 16.6 17.2 17.9 16.6 19.9
ONS-ArcticStronghold 15.7 17.8 17.4 16.6 17.4
ONS-BitchSlap-With-Slap 18.4 19.2 19.4 19.1 19.3
ONS-Kingdom 14.2 18.8 19.4 19.2 17.4
ONS-MagicIsle 13.8 17.8 22.6 18.6 18.4
ONS-MasterShower 15.5 18.7 20.0 18.7 16.8
ONS-Pandemonium 10.4 13.9 14.0 14.4 13.3
ONS-Primeval 9.3 14.3 13.6 12.0 12.7
ONS-SlatedWorld 16.8 19.2 23.2 27.6 19.8
ONS-SpaceCargo 19.4 19.4 23.0 22.6 20.4
ONS-SpankJox 16.3 19.0 21.2 16.9 17.3
ONS-Spiffingrad 17.3 21.2 21.5 20.1 24.0
ONS-Torlan 13.7 19.1 19.6 19.5 21.0
ONS-VK'S-PLAYGROUND 24.6 24.6 25.4 24.2 23.8
Total 243.1 277.0 299.0 285.2 281.1
The high total round time for C is most likely due to the same type of map being played in a row and players being more familiar with them. Setting PPH data to 31 rather than 7 does produce better results. However, if even a single map such as SlatedWorld was removed from this statistic, then the opposite would be true (setting PPH data to 7 would appear better than 31), so we can consider this setting to have very little or no impact on the balance of the matches.

Overall, EvenMatchV2b2 produces much more balanced matches then V2a5 regardless of settings. Thanks to Wormbo for the tons of work that have flown into it! :yippiiieh:

Hope that answers any questions our players have about Even Match and it's different versions. :)
Image
User avatar
Pegasus
Posts: 1312
Joined: Wed 4. Nov 2009, 23:37
Description: ONSWordFactory
Location: Greece

[Mutator] Even Match (Onslaught team balancer)

Post by Pegasus »

Had to check the thread to make sure because I was initially going off of the later date it was added to my cache, and it seems I missed it by a couple of days. Either way, yesterday marked the passing of two years since the balancer's latest version, EvenMatchV2b2, was released.

A quick read of the first post of this thread - or, indeed, skimming through the first 7-8 pages - should be enough to remind anyone of the labourious and sometimes contentious development this mod had gone through to reach its current state, with plenty of improvements and additions along the way. Still, if the stats reflecting its performance on CEONSS as laid out by Cat, Ema and other staffers in posts here are any indication, EvenMatch has consistently proven itself a force for good, helping improve ingame experience for hundreds upon hundreds of players through more balanced teams and beyond (linux server crash fix, voice chat team switching help, etc.). With the benefit of substantial ingame input received on the subject and my own 2 years' worth of experiences having played hundreds (thousands?) of matches curated for balance by EMv2b2 to boot, once again in this thread today I feel compelled to thank Wormbo for all his persistent effort in delivering such a fine piece of UScripting work.

So, what does one get for its second birthday to a mod that has everything plenty going for it then? Why, the gift of suggestions for some more improvements based on collected notes from all this time, of course :p. Below you'll find 4 such items, plus an extra idea:

1. "teams" calls shouldn't bypass key/valuable player checks: as covered elsewhere in this thread, EvenMatch can apply nuanced selection criteria for swapping players during rounds to restore balance, employing the concepts of "valuable" or "key" player to do so (one's scoreboard rank being above a certain percentile in the former's case, having special tactical advantages like carrying a dmg. amp or superweapon in the latter) based on countdown timers that remove these filters bit by bit as no suited candidates are found and the count nears zero. Handling "teams" calls can help when it expedites a rebalance check that could otherwise be coming 30secs or more later, but catering to prior "instant gratification" expectations of certain communities has come at the cost of the mod immediately jumping to "panic mode", picking someone with little regard to their situational team value from the bigger team. Rather than zeroing ForcedBalanceAttempt in Timer() after a valid "teams" call, why not instead show a "Rebalancing teams in a few seconds, please hold" message to tide over the impatient and give the mod those precious 7secs to work through its process, ensuring that, say, the team's mino/dragon/falcon or other VIP vec driver won't randomly be snuffed out when they're most needed?

2. Add an anti-Ping-Pong logic check: EM already employs a RememberForcedSwitch function to track recent switches and so prevent uncooperative players from quickly moving back to their previous team after a rebalance. Trouble is, it's been witnessed in some cases that the same player will be shifted from one team to the other and later back again during the same match, and there's no mechanic to track or prevent this sometimes necessary but still very dispiriting situation; on rare occasions, I've heard people say that's happened to them even three times in a match. Including an additional table to track a match's switches in general and a rule that would exempt from further swapping any player already subjected to 2 switches seems as needed here as it'd be straightforward enough to implement.

3. Protection for swapped drivers' vehicles: the way EM currently swaps not-dead players that have been marked for team transfer is by simply calling the standard Died() function for them, which, in the case of players controlling a vehicle pawn means the vehicle gets blown up, along with any additional passengers on it, too. Hampering other team players' progress and depriving important team resources along with the excess player that gets moved, especially early on in a round, doesn't seem like a fair proposition (or a good look for the mod) just for restoring team balance, and that's even before considering that the most loaded vecs are usually the more important ones. To offer an example I witnessed myself, seeing a mino blow up with all 3 players on board just a few seconds after a match starts and it pulls off its spawn point because someone from the other team, already down by 1 player, lost their connection and the mino driver was randomly picked after a "teams" call can get people pretty angry and cause EvenMatch to be regarded more as the Grim Reaper than Lady Justice.
All that would need doing to fix this would be to add a single line before MutTeamBalance.uc:625 that would eject the doomed player from the vec, leaving the other passengers and their ride intact, then instead of calling a Died for the vehicle, follow with what the next "else if" does and call it for the newly evacuated xPawn; if doing so in the same tick wouldn't be feasible, the other option might be to use a new bool flag there, and call a Timer, say, 0.1secs later that, with some added code, would do the Died() deed. Alternatively and possible within the same tick I think, Died() could be skipped for vehicle drivers and the mod could instead momentarily change the vehicle's DriverDamageMult to 875.0 (that's 350/0.4), followed by dealing 0.4hp damage at the driver's location, enough to kill a 199hp plus 150 shield player without causing 1hp damage to the vehicle, then, finally, restoring the damage multiplier to its default value.

4. Delay delivery of pre-match teamsay messages: the longer the server pre-game duration, the likelier players are to start discussing team strategies. Trouble is, you can't tell which team you'll end up on before the match actually starts because a last second arrival could lead to EvenMatch arranging teams differently. This has led to the category of players more familiar with the issue simply not discussing strats during pre-game - aka the point when it'd otherwise be most useful to do so - and the rest that opt to blurt out where they'll be taking what vehicles to most likely end up handing out tips to their opponents, making both teams resemble the latest U.S. White House situation: leak central.
While the first half of the problem, i.e. restoring team organizing utility to the pre-game window, can't be helped due to the impossibility of acquiring necessary future information at the present, the second part revolving around protecting what's supposedly said in team confidence could be addressed by suppressing and delaying delivery of all non-spectators' teamsay messages, optionally displaying to senders a relevant "Withholding team chat until match starts" note, until the match starts. EvenMatch already uses EvenMatchTeamsCallSpectator as an ingame text monitoring resource for "teams" calls, so tacking on some PreBeginPlay functionality and using a reasonably sized array (say, 20-30 entries) to temporarily hold players' teamsay strings (max 127 chars each, IIRC) until match start seems doable enough.

* (Bonus) Anti-marathon ONS scoring feature: using the quick round feature, EvenMatch has managed to ensure servers can get at least one balanced round out of any map, sometimes that being preceded by a shorter (max 7mins on CEONSS, I believe) stacked first round. For communities that want to get more than one balanced round out of their maps, however, the stock game only offers the option of raising GoalScore to 3 and playing to reach that via RT or OT round wins, with all the associated gameplay baggage that brings along, namely the worst case scenario transforming from a 7-10min, 1-round drive-by to that of an exhausting 65-75min, 5-round marathon. The only way to break out of this bind is to bend the default (ONSOnslaughtGame) rules, say, by making all round victories add only 1 point to teams' score regardless of the time it took to get there, and then bringing GoalScore down to 2. While this sacrifices some gameplay nuance (renders winning early meaningless), this affords a minimum of 2 rounds in a map and a maximum of 3, bringing down the worst case scenario of being trapped in a map from 65-75mins to a much more tolerable ~45min ceiling.
Since a mod that allows just that to work has been employed on the DW server for eons, namely DWOnslaught.u (Nov. 2018 edit: after reviewing its code, it turns out this isn't the mod responsible for customizing the RT/OT scoring rule; a DW serveractor not available to clients is the likelier factor), and EvenMatch already has functionality that monitors round completion time as well as can potentially alter/reset teams' scores if needed, embedding the former's extra bits into the latter could be a way to expand EM's value to the UT/ONS community without having to design any new tool or resource from the ground up. While I don't recall what impact running the DWOnslaught such a mutator might have on a server's whitelist status, embedding it in EM would certainly help such a server stay there if nothing more exotic was also in use.
Lastly, the aforementioned gameplay nuance loss problem arising from the apparent equalization between regulation time and overtime wins under DWOns rules is something that's been gnawing at me for a good long time. Out of several ways I've considered possible to restore some difference between the two while still giving only 1 point, the one I now believe to be the best, in terms of complexity to develop vs. tactical depth and non-bias, has to do with reducing the core health of any team that lost an RT round at the start of all remaining rounds by a non-insignificant amount ranging between 10% and 15% (or 500 to 650-ish hp out of a 4,500 max). Adding this last bit just as food for thought here.


Before anyone asks, I'm well aware of Wormbo's last statements regarding the probability of him returning and doing further work on this or any other UT project, but since the odds of me trying to do this myself and ahead of all the other ONS stuff I've already got on my plate (my own, comparatively diminished, UScript fluency notwithstanding) are about as good, I figured I might as well post this in case it serves as inspiration for anyone else passing through with enough experience and coding time on their hands to take this up for everyone's benefit - Crusha maybe, who knows?

Regardless of what comes of these ideas, I think it merits wrapping up this celebratory feedback post by thanking Wormbo once again for all he's delivered so far on this front and many others. Whatever you're doing these days, I hope it's equally meaningful and brings as much excitement to people as your contributions have done for the UT community, sir :).
Eyes in the skies.
Image
Zon3r
Posts: 575
Joined: Thu 7. Apr 2011, 07:46
Description: Don't shoot at me!

[Mutator] Even Match (Onslaught team balancer)

Post by Zon3r »

Pegasus wrote: EM already employs a RememberForcedSwitch function to track recent switches and so prevent uncooperative players from quickly moving back to their previous team after a rebalance
Well that part is not working,
Sana switched back in less that 15 secs
Image
(alt link)
Image
User avatar
Pegasus
Posts: 1312
Joined: Wed 4. Nov 2009, 23:37
Description: ONSWordFactory
Location: Greece

Re: [Mutator] Even Match (Onslaught team balancer)

Post by Pegasus »

Perhaps some more info and context could help understand what went on there. Specifically, was this a switch back to the old team during a rebalance - i.e. in the middle of a round - or, say, right after a short round restart with the teams reshuffled based on PPH (the terms used matter here); not 100% sure without checking, but it's possible the EM feature I mentioned doesn't attempt to prevent the latter behaviour.
Additionally, and assuming EM debug mode has remained enabled on CEONSS, relevant realtime commentary by the mod could be found in the server log output for that match and be studied to help reach some conclusion as to why RememberForcedSwitch wasn't involved, so... which one was it, specifically, and when did it take place? Here's CEONSS' ut2004stats page, as a convenient place to get started finding that reference.
Eyes in the skies.
Image
User avatar
laboRHEinz
Administrator
Posts: 1268
Joined: Fri 4. Sep 2009, 13:28
Description: Old Fart
Location: Hamburg

[Mutator] Even Match (Onslaught team balancer)

Post by laboRHEinz »

gotta support Zon3r on this one, witnessed it myself: Sana has been auto-switched to balance teams in the middle of the match but then switched back by hand.

Server logs don't show anything. Here's the stats (mind 16.4 pls):
http://ut2004stats.epicgames.com/matchs ... h=67976109
sana.PNG
You do not have the required permissions to view the files attached to this post.
Zon3r
Posts: 575
Joined: Thu 7. Apr 2011, 07:46
Description: Don't shoot at me!

Re: [Mutator] Even Match (Onslaught team balancer)

Post by Zon3r »

i was left alone in the team at that time, everyone left cause of the hopeless match(you can see the state of the game on the minimap on the screenshot), blue had 2 players extra i think, sana was switched to red in the middle of the game(after antman left), said bb all (didn't want to play on the losing team), then realized he/she can switch back, so didn't leave.
Image