Idea of mod, automatic shuffle improvment.

BofBof Join Date: 2013-08-19 Member: 186972Members
edited January 2016 in Modding
Hi,

I will probably never have the time to do it myself, because first of all i know nothing about modding for ns2.
And secondly because shuffle already exist in a mod largely distributed.

However i would like to share the idea.

First what are my goals?
- ignore the commander level, the commander level has a big impact on the game but cannot be compared with player level. (mod option)
- make the players aware of an unbalanced situation
- ignore the default "f2" when players don't reply
- take account of AFK
- don't force RR/ spectator to join a team
- better player skill distribution
- let the player switch team after a shuffle but only if it doesn't break the shuffle.
- The system should be flexible and could be adapted to other skill data than hive.

How i would like to achieve that goals, here is the process i have in my mind:

(mod option) An optional vote occurs when a rookie commander jump in:
Warning, that commander is a rookie would you like to let him command the game?
(default answer is a mod option and must be visible if set, people who want to let him command can press f1/f2)

Note:
  • All of the below process is interrupted if a commander jump out.
  • Messages should be translated to the game language option of the player.
  • The scoreboard should be adapted to remove the commander skill on the average team score displayed.

A vote to shuffle will only occurs if all the following conditions are met:
- just before the game starts
- when both team have a commander
- When the skill difference without taking account of the player skill of the commander is above a tolerance value. (mod option)

the vote prompt the players with a simple question:
- The teams seem unbalanced <average skil T1> vs <average skill T2>, do you want to force even teams?
- Three answer are prompted:
- Yes but don't shuffle RR.
- yes but shuffle RR
- No
The vote will only take account of people answering, people not answering will not give a "default no".
The message will also display he following information:
"Note if you don't reply to the question above you will be consider as AFK and put in RR/spectator/kicked.
The shuffle will be based on hive / ELO / K/D / other"
The action and data source should be both mod options.

when the times has elapsed or if all players have answered, the server display one of the following message:
- The vote failed (with X% of No), enjoy your game!
- the vote passed (with Y% of Yes), a majority of players have vote to shuffle/not shuffle the RR (Z%).

Where X = number of NO / total number of vote
Where Y = the sum of yes for the two "yes" options / total number of vote
Where Z = number yes with RR / number of yes without RR.


Finally the players are shuffled (without taking account of the commander skill).

The shuffle system should take account of the player skill distribution.
What is skill distribution?
here is a simple case:
let's take 2 players with 2K skill
4 players with 1K skill
4 players with 0k skill

The shuffle result should not be:
T1:
2 players with 2K skill
3 players with 0K skill
T2:
4 players with 1K skill
1 with 0K skill

but:
1 2K player in each team
2 1K player in each team
2 players with 0k skill in each team.

Currently the shuffle tries to even the teams and try to avoid too many permutations of the players already in the teams.
I don't want to delete that preference totally however, from my point of view players already in a team have not more rights to be in that team than the players in RR trying to
join the team that has 1 more player.
if the average skill between team AND the skill distribution tolerance cannot be respected then permutations to even the teams occurs at all levels (RR and in the teams).

optional: To not allow the commander to break the rules, some restriction should also be put on the commander. ex: the commander could not have more than 10pres if he jump out. (except if ejected)


The teams are now even, the players are blocked in their teams or in spectator/RR for the duration of the round.
if someone want to join a team or switch a team, he can request a switch (with some key shortcut/menu).
A message is periodically displayed in the chat all/other and just after a successful shuffle to invite the people who want to switch team to use the menu/shortcut in place.
For the RR, the players who cross the "gate" will be put in the list. the menu should also display an option for spectator / RR player: "I want to join any team".
Player stay free to go back to the RR if they really hate their team (it's better to have someone in RR than having an AFK in the field)

The servers checks periodically (eg: each 5sec) the list of players, if some of them or all of them can be permuted or can join without affecting too much the team skill average/skill distribution than the server proceeds and do the switch.

Optional: To avoid too many unsatisfied players the server will wait X more seconds (10-15) and do a first periodical check before the game can finally start.
==> one more time, the information about what is going on must be displayed and the shortcut put in evidence.

In addition to avoid a round to start too soon, a delay should be put before allowing the game to start after a change map.
This will let the time to the player to connect back to the server / smoke / other. (mod option)

The scoreboard should also be adapted to underline players in all teams (aliens/marines/RR/spec) who want to switch teams with some color code/text or other.


Comments

  • Person8880Person8880 Join Date: 2013-01-02 Member: 177167Members, Squad Five Blue
    Shine's shuffle already handles most of your points at the start through various options. It can ignore commanders, spectators and move AFK players into the ready room before balancing. It can even be set to automatically shuffle right before a game start, without moving the designated commanders.

    There's also nothing that ties the algorithm to the Hive skill at all, the same method is used for KDR, points per minute and could easily be added to for any other kind of "skill" value you can think of. The algorithm also already handles skill distribution in the way you've described, i.e. trying to make sure the difference in team skill standard deviations is minimal.

    The only difference is that you're suggesting a more forceful approach to enforcing teams (i.e. block new players from joining teams for a while and try to push people into always shuffling). I don't think pushing a vote on people is a good idea. People should be free to determine if they want a shuffle at all without being delayed from their game. The other problem with this approach is that players leave the game. When they do, balance is almost certainly lost, and often the only way to get it back would be to reshuffle completely, which would mean games never really get very far.

    Try as hard as you like to keep the teams the way they are when the vote is cast, there'll always be times where people leave (and sometimes intentionally to try and get on the other team). The plugin's only current defense against that is to try and place the returning player back onto the team that needs them most, but it's not perfect.

    I don't think an automated solution is the answer to this problem, as it will always be either frustrating (blocking teams) or confusing (a team switch queue). The switch queue raises a number of questions:
    • When does it pop? If they're right in the middle of defending a key area, is it fair on their team to suddenly move them out?
    • What if they change their mind? More commands or buttons to remember.
    • How do you communicate this effectively, especially to rookies who suddenly can't play because it's telling them? They'd more likely just quit.

    People should be aware that they have a role in keeping games balanced, and that fighting the system is probably the number 1 reason why so many games after a team balance still feel unbalanced. Anything more than that, and you end up frustrating and confusing players more than helping them.
  • BofBof Join Date: 2013-08-19 Member: 186972Members
    edited January 2016
    Shine's shuffle already handles most of your points at the start through various options.

    That's perfectly true and it will also probably easier to improve that mod instead of making a new one.
    Honestly it is not clear in my mind what's the best way to proceed. making a new mod or asking the developer(s) of the vote random part of shine to add more options.
    It can ignore commanders, spectators
    Ok i was not awere of that option.
    however the option don't exist for RR.
    and move AFK players into the ready room before balancing
    I don't see that on the github page https://github.com/Person8880/Shine/wiki/Vote-Random .
    I think that you speak on another part of shine the AFK kick part:
    https://github.com/Person8880/Shine/wiki/AFK-Kick

    The problem is that the "AFK kick" need some amount of time to detect AFK.
    That amount of time is greater than the usual duration of a vote, and thus can difficultly be used as a way prevent shuffling AFK.
    (It might prevent against some AFK, but not all of them)

    The algorithm also already handles skill distribution in the way you've described, i.e. trying to make sure the difference in team skill standard deviations is minimal.
    Thanks again, i just discovered that option, it's totally hidden from players view.
    The only difference is that you're suggesting a more forceful approach to enforcing teams (i.e. block new players from joining teams for a while and try to push people into always shuffling). I don't think pushing a vote on people is a good idea. People should be free to determine if they want a shuffle at all without being delayed from their game. The other problem with this approach is that players leave the game. When they do, balance is almost certainly lost, and often the only way to get it back would be to reshuffle completely, which would mean games never really get very far.

    Yes I want to enforce the team, and no i don't want them to be force to shuffle. But I want them to be aware of a stack situation and if it is the case i want to force them to vote for or against shuffle.
    Currently the option AlwaysEnabled=true, don't ask anything to the player, the normal vote is not known from rookies, and people who don't press f1/f2 vote for f2...
    Try as hard as you like to keep the teams the way they are when the vote is cast, there'll always be times where people leave (and sometimes intentionally to try and get on the other team). The plugin's only current defense against that is to try and place the returning player back onto the team that needs them most, but it's not perfect.

    That's why a buffer of people who want to join/switch team can improve the situation.
    Because when people join 1 by 1 the teams, the system can only restrict them based only on their own skill. If you have a buffer you are more flexible.
    I don't think an automated solution is the answer to this problem, as it will always be either frustrating (blocking teams) or confusing (a team switch queue). The switch queue raises a number of questions:

    When does it pop? If they're right in the middle of defending a key area, is it fair on their team to suddenly move them out?
    What if they change their mind? More commands or buttons to remember.
    How do you communicate this effectively, especially to rookies who suddenly can't play because it's telling them? They'd more likely just quit.

    Good point. It might be better to do it only for spectator and peoples in RR. It also remove the additional buttons.
    When you try to join a team in the RR (marines/aliens/random) you are put in the buffer.
    The buffer is displayed on a board (you can close and reopen it later).
    If you change your mind and decide to cross the opposite team gate, then you are also switched in the buffer.

    If the buffer find 1 or more players than can join a team, it place them into the teams.

    People should be aware that they have a role in keeping games balanced, and that fighting the system is probably the number 1 reason why so many games after a team balance still feel unbalanced. Anything more than that, and you end up frustrating and confusing players more than helping them.

    People, except rookies are aware of their role. But if 10% of them decide to troll the system and stack they can do it.
    On Gplay server (one example) i am often confuse because on each round start the teams are shuffled without any adverts.
    And when the shuffle is done the skill average difference is most of the time not good. (because the shuffle is not based on hive, but the score displayed are...)


    I see that type of shuffle as a mod, because I don't want it to be on all servers. So people who want to keep stacking or play only in their favorite team can go on another server.
    I also don't think that this mod is suitable for rookies, because rookies don't care about balance, they just don't want to be raped by veterans.
    And any shuffle system don't prevent vet to play on rookies servers.


  • Person8880Person8880 Join Date: 2013-01-02 Member: 177167Members, Squad Five Blue
    Bof wrote: »
    Shine's shuffle already handles most of your points at the start through various options.

    That's perfectly true and it will also probably easier to improve that mod instead of making a new one.
    Honestly it is not clear in my mind what's the best way to proceed. making a new mod or asking the developer(s) of the vote random part of shine to add more options.
    The developer would be me. :smile:
    Bof wrote: »
    and move AFK players into the ready room before balancing
    I don't see that on the github page https://github.com/Person8880/Shine/wiki/Vote-Random .
    I think that you speak on another part of shine the AFK kick part:
    https://github.com/Person8880/Shine/wiki/AFK-Kick

    The problem is that the "AFK kick" need some amount of time to detect AFK.
    That amount of time is greater than the usual duration of a vote, and thus can difficultly be used as a way prevent shuffling AFK.
    (It might prevent against some AFK, but not all of them)
    It moves people that the AFK plugin believes have been AFK for over a minute into the ready room automatically when performing the shuffling. It's an always-on feature rather than an option (providing the AFK plugin is also enabled).
    Bof wrote: »
    Yes I want to enforce the team, and no i don't want them to be force to shuffle. But I want them to be aware of a stack situation and if it is the case i want to force them to vote for or against shuffle.
    Currently the option AlwaysEnabled=true, don't ask anything to the player, the normal vote is not known from rookies, and people who don't press f1/f2 vote for f2...
    Yes, the always enabled option was made by request so that it never gave a vote. I wouldn't personally use it though. I do agree that there needs to be some indication of imbalanced games, and I think most people rely on the NS2+ mod's average skill information on the scoreboard for it at the moment.

    There is also a less known command you can run in the console (sh_teamstats) if the server's using Shine's Hive skill shuffle mode. It prints out anonymous team skills, the average for both teams, and the standard deviations of both.
    Bof wrote: »
    Good point. It might be better to do it only for spectator and peoples in RR. It also remove the additional buttons.
    When you try to join a team in the RR (marines/aliens/random) you are put in the buffer.
    The buffer is displayed on a board (you can close and reopen it later).
    If you change your mind and decide to cross the opposite team gate, then you are also switched in the buffer.

    If the buffer find 1 or more players than can join a team, it place them into the teams.
    I still think this is a little awkward. Stopping people from joining a game would be something most people would find annoying. It would allow greater flexibility in assigning and keeping balance, but I'm not sure the cost is worth the gain.
    Bof wrote: »
    People, except rookies are aware of their role. But if 10% of them decide to troll the system and stack they can do it.
    On Gplay server (one example) i am often confuse because on each round start the teams are shuffled without any adverts.
    And when the shuffle is done the skill average difference is most of the time not good. (because the shuffle is not based on hive, but the score displayed are...)
    I think people will still troll even with the queue. By leaving the game and reconnecting, they throw balance out the window for their team while rejoining and queuing back in.

    I don't want to sound dismissive of your ideas at all, just I've gone over ideas like this before when working on the shuffle plugin (which has seen a lot of revisions over the years!) and this kind of stricter enforcing of joining/reconnecting players was something I gave up on because I didn't want to overly annoy legitimate players.
  • BofBof Join Date: 2013-08-19 Member: 186972Members
    Person8880 wrote: »
    The developer would be me. :smile:

    in this case, would you be favorable to add an option to display the standard deviation in the scoreboard? :p
    (with some color ex: green= ok, red: bad)
    It might help players to decide if they want to shuffle or not.
    I don't want to sound dismissive of your ideas at all, just I've gone over ideas like this before when working on the shuffle plugin (which has seen a lot of revisions over the years!) and this kind of stricter enforcing of joining/reconnecting players was something I gave up on because I didn't want to overly annoy legitimate players.

    I understand your point of view and even if I don't share it, the shuffle (as it is now) is one of the best improvment for ns2.



  • Person8880Person8880 Join Date: 2013-01-02 Member: 177167Members, Squad Five Blue
    Bof wrote: »
    in this case, would you be favorable to add an option to display the standard deviation in the scoreboard? :p
    (with some color ex: green= ok, red: bad)
    It might help players to decide if they want to shuffle or not.
    I can do this when I get time, though I'd need to make sure it doesn't clash with NS2+'s scoreboard change.
  • woozawooza Switzerland Join Date: 2013-11-21 Member: 189496Members, Squad Five Blue
    I think easier would be to modify the NS2+ "Showavgteamskill" function (Enabling team average skill on top of scoreboard) and add some colours that indicating if it is very unbalanced(red) or not(green)?
  • SupaFredSupaFred Join Date: 2013-03-03 Member: 183652Members, NS2 Playtester, Squad Five Blue, NS2 Map Tester, Reinforced - Supporter, Reinforced - Silver, Reinforced - Shadow, WC 2013 - Silver
    wooza wrote: »
    I think easier would be to modify the NS2+ "Showavgteamskill" function (Enabling team average skill on top of scoreboard) and add some colours that indicating if it is very unbalanced(red) or not(green)?

    That might be a good idea to get people to not focus on the average skill not being exactly the same. Just make it green if they are within 50-100 points or something.
Sign In or Register to comment.