Problem: Stackers

Discussion in 'General' started by KMFrog, Mar 9, 2008.

  1. KMFrog

    KMFrog Member

    Messages:
    63
    Likes Received:
    0
    Trophy Points:
    0
    I'm playing with ideas on how to stop some of the epic stacking that goes on in EMP (at least on the [KM] server anyway).

    What I've done so far is force people to auto-assign. It works well for the normal pubbers - but the clans all join spec and slowly stack up a team once the teams become even by spamming the jointeam commands.

    So, to combat this, I introduced a 60sec "cool down" time after any team change is made, where the only team you can join is spec. For example, if you joined BE, you would have to wait 60sec before trying to join NF. Likewise, if you join spec to try and jump into a slot, you will have to wait 60 seconds before joining a team again.

    For normal people this works great - instead of messing around people just join a team and get on with it.

    However - Now the stackers start moaning.

    Quotes:
    "i never join the team i want"
    "ffs damn waiting time"
    "ffs it told me 60 sec to join nf and when i waited it packed me to bren ffs!"
    "damit it always puts me on other team"
    "ffs teams are f***ing even why i cant join nf?!"
    .... etc

    clearly people trying to get on a specific team are getting raged by how they are hindered. I understand how people like one team more than another, i have preferences myself - but all these people do is wait around in spec trying to get on a team.

    So my question is this:
    What could I do to try and help fix this situation?

    The options I see are:
    a) remove restrictions and just hope people dont stack ever again
    b) remove the time limit and hope people dont spam jointeam commands ever again
    c) leave it as it is and hope people learn to get on a team and have a good time

    I'm worried about C as people may just go and find another server with no anti-stacking-features so they can stack all they want - I'm trying to improve the enjoyment of the server for all so people will stay & play, yet i dont want to drive people away with too many restrictions.

    Help me find a balance... and please do make suggestions.
     
  2. Evan

    Evan League Commissioner

    Messages:
    1,807
    Likes Received:
    0
    Trophy Points:
    0
    you can do mp_autoteambalance 0 to turn off autobalance
     
  3. Private Sandbag

    Private Sandbag Member

    Messages:
    7,491
    Likes Received:
    0
    Trophy Points:
    0
    as far as i saw, i pressed "auto assign" when i joined, it put me on spec and made me wait 60 seconds to join either team
     
  4. KMFrog

    KMFrog Member

    Messages:
    63
    Likes Received:
    0
    Trophy Points:
    0
    that's not normal and may be a bug.
    The way it works is by forcing you to press the auto assign button if you press anything other than spec - If you press spec it sends you to spectator.

    Please assume if that is a bug, its fixed - and original problem still remains.
     
  5. Deiform

    Deiform Member

    Messages:
    2,492
    Likes Received:
    10
    Trophy Points:
    0
    Ban spec?

    That is, for most public occassions which you can turn off for special events or when you feel like.
     
  6. Z100000M

    Z100000M Vithered Weteran

    Messages:
    9,120
    Likes Received:
    70
    Trophy Points:
    0
    The pain is if you are trying to unstack teams (9 vs 6) and join the loosing one , u still need to wait 60 seconds which is ridiculous imo.
     
  7. gezor

    gezor Member

    Messages:
    612
    Likes Received:
    0
    Trophy Points:
    0
    hey, i said that!

    some mad suggestions to prevent stacking:
    1. dont allow clan tags on the server
    2. save steam IDs of claners and dont allow them to join only 1 side
    3. write a uber AI plugin that analyses player skill and divides players equally up, accourding to their skill lvl (and the ress waster noobs get negative skill points)

    joke aside, i dont like this new system. yes, stackers are a problem, but i think this system is more annoying than helpful. and what about the people who prefer one side? they can barely join their favourite side. for example i prefer NF (because i hate the evil space nazis! :mad: ), but it nearly always puts me to BE.
     
  8. Z100000M

    Z100000M Vithered Weteran

    Messages:
    9,120
    Likes Received:
    70
    Trophy Points:
    0
    only 1? mines are #3 and #5 /sarcasm
    1No Tags? Clanners know each other wery well so thats fail idea
    2 Oh , this can be really buggy , it can put some random tag guys at be and Old timers at nf for example
    3 Is it joke?

    the best solution atm is to set the max stax (i dunno the command) to 1 person, and to have admins on so they can fix teams.
     
  9. Evan

    Evan League Commissioner

    Messages:
    1,807
    Likes Received:
    0
    Trophy Points:
    0
    The ranks plugin will eventually give players scores
     
  10. Reef

    Reef Member

    Messages:
    795
    Likes Received:
    0
    Trophy Points:
    0
    For now, I think we should return to the previous system that didn't annoy people. As far as I understand it's currently set so when You try to change a team, it holds You for 60 seconds and You cannot play.
    That is very, very bad.

    I would like to state, that randomly assigning players to teams with the scoreboard disabled (so You cannot stack by pressing AUTO in the good moment) WOULD produce stacked teams in most of the times. Math prooves it. When I actually took a while with Excel to check it, I thought of a pretty complex system that would solve this problem on KM server, so here it is.

    1. We need to track players skill somehow. The only methods I know are "kills per death" and "kills per minute" (the latter seems to be better in Empires). I know it doesn't reflect skill perfectly, but we must have a way to sort an array of players by skill. We could ask Krenzo to add some events that would help us get good statistics.

    2. The antistack plugin would block joining teams for first 60 seconds of the game and then it would automaticly assign all connected players.
    Why wait? Players have diffrent PC's, some join faster, some are late. We need have most of the players waiting on the server ready to join a team to assign them properly. This only will work on large servers (KM is a large server, hopefully)

    3. At the expiration of timer (after 60 seconds from first player try to join a team), we have two arrays:
    - players willing to play NF
    - players willing to play BE
    - players that pressed "auto"
    we also have dumb players that didn't try to join a team, and we have spectators.

    We also have a database of skill, let's simplify it to "steamid:float" dictionary.

    A team prototype is a set of two arrays (be and nf players).
    The function is_prototype_fair() sums BE and NF skill arrays of the prototype. If the skill level of both teams is pretty equal (there has to be some tolerance, 15%? ), it returns true, else, it returns false (that means that the prototype is stacked).

    We assume that some players chose auto. If not, we assume that there were no fair prototypes and go straight to level 3.
    We must keep a record of "a best prototype met" in level 1, so if we had a 100 vs 125 and it was our best shot, we keep it in the memory as a good guess for level 2 assigning.

    We make level 1 prototypes like that:
    start state:
    Code:
    NF-willers array:
    [NF]Player1
    [NF]Player2
    [NF]Player3
    
    BE-willers array:
    [BE]Player4
    [BE]Player5
    [BE]Player6
    
    auto-willers array:
    [auto]Player7
    [auto]Player8
    [auto]Player9
    example of an assign:
    Code:
    NF array:
    [NF]Player1
    [NF]Player2
    [NF]Player3
    [auto]Player7
    
    BE array:
    [BE]Player4
    [BE]Player5
    [BE]Player6
    [auto]Player8
    [auto]Player9
    A guy in the second row raises his hand
    - this algorythm is 2^n, so it has to process 2^40 combinations if all players take the autoassign option. That's 1 099 511 627 776. Even if the server would process 100000 prototypes/second, it would take up to 127 days and 6 hours to assign players.

    Well, yes, that's a problem. The "check all possible combinations" algorythm heavily fails when many players choose autoassign. We can simulate that some of them pressed BE or NF to get a lower number of auto-players, but then if we fail to get a fair prototype, We meet the same problem again at the level 2. As far as I know, the only way to speed it up, is to make an artificial intelligence algorythm. It can be dumb or smart. A dumb one is not that hard to implement.

    If we find a good prototype, we force players into teams like the prototype said and the game starts. Note that number of players doesn't have to be equal, it can be 5 clanners against 9 pubbers and it's fine for the system. is_teamassign_prototype_stacked() function can do some tricks here to prevent situations like 1 clanner against 10 n00bs.

    The BIG problem is when there are no fair prototypes of level 1, f.e. everyone pressed BE on emp_money and 3 players pressed auto.
    BE overskills NF in every level1 prototype.
    That means the players would stack the game and it would be miserable (we can accurately predict who will get the pain, it's better than a ScoutMeter! ).
    Someone has to go to the other team than he chose to. The algorythm should minimize the amout of players that would be forced to the team of their not-choice. This part of the algorythm I didn't think of, but it has to be AI too, to prevent the 2^n problem.
    In level2 We get the "best prototype till now" and try to find a player (or two, or three, or...) in the stronger team that we could toggle to the other side to match the skill of both teams. F.e. if BE skill=1200, NF skill=1000 and there is a Private Sandbag in BE with skill of 50, we can toggle him and it will be BE=1150 NF=1050, so 9,5% of skill diffrence, so it's fair! Hooray!
    In level3 we try toggling some players from BE to NF and from NF to BE to make the teams even.

    Pros:
    • this would let the players play the team that they want, if it's possible
    • this would produce fair teams if possible (on a large server it means==always)
    • this can be improoved to track commanders to ensure that there is at least one player that:
      • played as a commander and won
      • didn't command more than 3 of last 5 games
      • etc, this is easy to code
    • this can be improoved to balance the game, f.e. 5% skill bonus to NF to counter lousy tanks and hudge rax
    • this can be improoved to check if the teams are fair f.e. every minute. If it's not, it can try to do a level2-balancing of a player that died in a stronger team (like in teambalancers used in CSS, CSS Deathmatch, Day Of Defeat, Battlefiend series)
    Cons:
    • Awesomly hard to code (but not impossible, and I personally think it's worth it)

    I didn't start to code it because someone said there is a guy from alliedmodders that is willing to make his (already implemented for other game(s)) teambalancer compatible with Empires.
     
  11. gezor

    gezor Member

    Messages:
    612
    Likes Received:
    0
    Trophy Points:
    0
    dont take this suggestions serious. i said they are mad. just random, bad ideas which i wrote down in about 1 min.

    stacking is a big problem. it can ruin the game, because an organised, skilled team can pwn the CV before the enemies notice that it is under attack. also a few noobs can make u loose if they steal your APCs, or waste ress on crappy tanks and things like that.

    but its difficult or even impossible to fully prevent stacking
     
    Last edited: Mar 10, 2008
  12. manhunt0r

    manhunt0r Member

    Messages:
    354
    Likes Received:
    0
    Trophy Points:
    0
    fuck stackers, keep all as is, i cant see how someones side preference is more important than the overall game balance.
     
  13. -Mayama-

    -Mayama- MANLY MAN BITCH

    Messages:
    6,487
    Likes Received:
    0
    Trophy Points:
    0
    First the 60 sec wait time after joining spectator are really a pain.

    Second it doesnt prevent stack, it just delay the stack.

    Third, if I crash go accidential spec or whatever can i rejoin my
    team without delay?

    A steam ID binded rank would be nice. Not a real ranksystem more a breakdown into bad / average / good / pro
     
    Last edited: Mar 10, 2008
  14. Evan

    Evan League Commissioner

    Messages:
    1,807
    Likes Received:
    0
    Trophy Points:
    0
    The rank plugin will calculate skill based on points from buildings, points from commanding, points from squad teamwork, points from reviving, points from destroying buildings, points from sabotaging, etc.
     
  15. Evan

    Evan League Commissioner

    Messages:
    1,807
    Likes Received:
    0
    Trophy Points:
    0
    Any coders that are interested in helping, please PM me.

    Right now the prototype website for the Empires Admins is http://bans.empiresleague.com
     
  16. KMFrog

    KMFrog Member

    Messages:
    63
    Likes Received:
    0
    Trophy Points:
    0
    very good point - I will change it to allow you to join if the teams are not even by more than 1 person.
    I may also change it to use a "buffer" (say, 2 changes) as the main goal of the "cool down" is preventing people changing team 20 times in a row to try and join a specific one (which does happen!) - I'm not 100% on that though as it could still be abused.

    I also love reef's idea, but there is a very large problem of there not being any events implemented for tracking "stats". Currently only kills & deaths are logged which is not helpful in EMP.

    One thing any system would need to take into account is any unbalances within the game (which reef has covered) but also unbalances in maps.
    Lets take escort for example. BE players would get slaughtered and their stats ranking would drop fast - however they still may be great players - its just the map they are on which means they die a lot.
    In the long run, this could break any system that attempts to be "balanced".
     
  17. dizzyone

    dizzyone I've been drinking, heavily

    Messages:
    5,771
    Likes Received:
    0
    Trophy Points:
    0
    why not get some more active admins ;o
     
  18. KMFrog

    KMFrog Member

    Messages:
    63
    Likes Received:
    0
    Trophy Points:
    0
    to do?
     
    Last edited: Mar 10, 2008
  19. gezor

    gezor Member

    Messages:
    612
    Likes Received:
    0
    Trophy Points:
    0
    Frog is always on KM when i play there. cheaters and griefers get banned quickly (and even annoying mic-spammer fatties (i dont want to say a name here...)). but this doesnt solve the stacking problem.
     
  20. knighttemplar

    knighttemplar Member

    Messages:
    2,786
    Likes Received:
    0
    Trophy Points:
    0
    The problem with some anti-stacking measures is that they can stop players who do wish to stop stacking. I've auto'd to the better team before, just because they were one person down.

    I don't see a way around this atm
     

Share This Page