Problem: Stackers

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

  1. Shinzon

    Shinzon Member

    Messages:
    3,610
    Likes Received:
    0
    Trophy Points:
    0
    It really doesn't help when one team gets that nub who thinks he knows everything and keeps spitting into his mic "FFS, DO AS I SAY! YOU FING MORONS! UNGH!"

    *shudder*
     
  2. -Mayama-

    -Mayama- MANLY MAN BITCH

    Messages:
    6,487
    Likes Received:
    0
    Trophy Points:
    0
    Hey Goose! France is on the phone, it asks if you can give its lordliness back.
    It needs it for the summer holidays to handle with the tourists.
     
  3. KMFrog

    KMFrog Member

    Messages:
    63
    Likes Received:
    0
    Trophy Points:
    0
    Ghost clan is a pleasure to play with. They do not stack. They do not moan. They just get on and enjoy the game....
     
  4. Reef

    Reef Member

    Messages:
    795
    Likes Received:
    0
    Trophy Points:
    0
    Guys there is an important question, wether We want algorythm to be greedy or not.

    The greedy algorythm:
    • Assigns players one by one
    • It takes less than a 1s to put player in a team
    • In certain cases it can produce stacks (less stacked than the old KM balancer, but still). Good example is 5 skillers vs 13 noobs.
    • It will sometimes switch You
    The non-greedy algorythm:
    • Assigns players in groups
    • It needs to wait until there will actually be a group of players willing to join a team, so it can take like 15 or 20 seconds waiting for team join
    • It will always never switch You. If You want to join stronger team, it will try to wait for a ~equally skilled player that wants to join the other team (or auto) and then it will put You both on Your desired teams.
    • It's closer to the perfect assigning algorythm than the greedy one. It tries to ensure that there are skilled players on both teams, so 3 skillers and 5 noobs VS. 2 skillers and 8 noobs.

    In my opinion, it doesn't really matter for players. You usually dont want to choose a team. You rather want to choose who You play with. Am I right? And how do we solve this issue? Buddy(tm)?
     
  5. Scikar

    Scikar Member

    Messages:
    66
    Likes Received:
    0
    Trophy Points:
    0
    I think I prefer the sound of the second option, but I think you're right in that it would be better if you could instead tell the system who you would like to play with or if you don't care. You could perhaps treat players with the same clan tag as a group?
     
  6. Reef

    Reef Member

    Messages:
    795
    Likes Received:
    0
    Trophy Points:
    0
    I am really pissed off. I joined KM server today, played two maps, both were stacked.

    Using pairs of players is doable. Using groups of players is extreamly hard to implement and it's INSANE. Let's suppose CWs or Ghosts or any clan that has more than 4 players on the server at the same time configure themselves properly to force the plugin to put them in the same team. It would be extreamly hard to prevent stacking when You have something like that. Greedy algorythm cannot do that.
    If We have a configured pair and one of the pair chooses NF and the other chooses BE, what do We do?
    If one of them has a much faster CPU and joins quicly to BE, then someone highly skilled suddenly disconnects from NF (and BE becomes stacked), then the other player from the pair wants to join a team. What do we do? Stack even more, or move both players to NF? What if moving both of them to NF would cause stack too?

    (hint: there are no good answers, whatever I'll code, it will still confuse some players)

    For now I am dropping the player groups/pairs.
    This is all very hard to implement and has a low value for the gameplay. Players will not moan more than they moan today. Current balancer is preventing 'playing with a friend', yet I don't remember players moaning about their inability to play together in the same team.

    Guys. How often do You play with a friend? I don't mean the people You meet on the server when You join there, but someone who is Your real friend and You always try to play the same games at the same times etc. Does it happen like once every 3 months? 4 months? (clans have no voice here, as it's usually clanners who cause stacks).
    "playing good game (potentially against a friend)" > "playing shitty game with a friend"

    We need the working plugin like... NOW, so I have to cut functionality. It was crap anyways.

    Current plan is:
    1. AutoSkillWeight - I'll be thinking about it tomorow, hopefully I'll code it up soon
    2. The sql queries - I have like 3 new queries but I need data to test them. The data that we collected on sunday is corrupted because of the bug that caused some events (like kills) not being logged. I schedule next testing session to 20:00 CET today (it's in 18 hours counting from now). Join KMBalancerTesters steamgroup for automatic notification.
    3. Map win and map loose events - technically thease are not needed for the plugin but I bet We will need this data some day. I need a good, patient actor (like mkoll or blight) to come half an hour earlier for the testing. I also have an idea on making few other plugin hooks (tickets counter, res counter, stuff like that) and We will check some possibilities during this test.
     
  7. Shinzon

    Shinzon Member

    Messages:
    3,610
    Likes Received:
    0
    Trophy Points:
    0
    There was talk about keeping stats a long time ago; no one actualy got around to doing it; so kudos...

    It would be ineteresting to know some hard statistics...
     
  8. Reef

    Reef Member

    Messages:
    795
    Likes Received:
    0
    Trophy Points:
    0
    I wanted to play with my friend the other day and the randombalancers blocked us from doing this. It annoyed me much, so I decided to implement the 'buddy' feature in the balancer plugin.

    I need a help with the concept, though. I will describe it as I understand it and You guys tell me what could be fixed.

    To be recognized as a fixed pair with Your buddy, You both have to set eachother as buddies.
    The first interface will be a console prototype, where You type "buddy <clientid>" in the console, f.e. "buddy 17" if the client You want to set as buddy is 17. Client numbers can be obtained by typing "status" in console, it then displays something like #17 Reef STEAM_ID_0:0:1234567 10 5 151. The thing we are looking for is "17".
    Maby We will implement the fancy menu where You can choose a player from a list. For now I cannot even display a stupid panel, so it'll stay as console command until someone tells me how to do it or I'll figure it myself.

    So You both come to server and set Yourselves as buddies through the console. Then the map changes.
    There are few possible situations that may occur next:
    1. There are less than 8 players on the server. Buddy feature is not active.
    2. Enrique connects normally, but Nick has just timed out OR left the server f.e. because he hates emp_sinking. We just let Enrique join the team like he would not be paired with anyone.
    3. Enrique and Nick join the server, but Enrique has faster CPU and he joins a team before Nick's Empires loads the map. We display a message to Enrique like "Your buddy is joining the server. You will join the game automaticly when he will enter the team". Then we wait for Nick. If he times out, we try to put Enrique in a team like he wouldn't have any buddy set. Now there is a problem, we have two modes:
      • Mode 1
        • If he joins and chooses a team, We put both Enrique and Nick in the same team. Preferably a team of their choice - if it wouldn't cause stack.
        • If Nick joins and chooses to be a spectator, we force Nick to join the game and put both of them in the same team.
        • If Nick enters the game but he went to kitchen to make sandwitch, we are fucked. Enrique has to wait until Nick will get back, or he has to disable buddy.
      • Mode 2
        • If Nick joins We put both Enrique and Nick in the same team. Preferably a team that Enrique chose - if it wouldn't cause stack.
    4. Enrique and Nick enter the game and think about choosing a team or join spectator. Then one of them decides to pick a team.
      • Mode 3
        • we wait for the other one to choose a team and then put them both on the same team (preferably... etc)
        • If the other one is asleep or in WC, the one that chose a team must wait or disable the buddy system
      • Mode 4
        • When one of them chooses a team, we put both players in the same team (preferably... etc)
    Modes 2 and 4 seems to be much better than Modes 1 and 3. Am I right?
     
  9. Superlagg

    Superlagg Member

    Messages:
    620
    Likes Received:
    0
    Trophy Points:
    0
    This is just ridiculous. You dont need a script more complex than the Source engine to make up for the fact that some people arent as good at the game than others. You learn by having your ass kicked, by watching your vastly superior enemies do something amazing then doing it yourself to the enemy team while they're off somewhere else. Its been show throughout several games, most of which I cant remember off the top of my head, that skill balancing doesnt work and only serves to piss people off who want to have fun with their friends. If the game wanted us to be forced onto a team that a script feels we'd be a little more helpful towards, why bother giving us the "Choose your Team" dialogue?

    And besides, would K-Zone feel that this would be worth coding? Making a hugely complex algorithm based on the stats of a player, modified by console commands and unseen variables buried in a manual, that would make choosing your team pointless, just to make it so that the players get the illusion of balanced teams.

    And this is only ever a problem on clan servers, Pubs get enough players cycling around that if there is a bunch of great players on one team, it'll probably solve itself by next map. Mittoes never seems to have the problem last more than a few maps, but then again with the problem, it lasts for several map changes, equivalent to around 3-4 normal games.

    Its not as bad a problem as you think, and "fixing" it would just make it worse.
     
  10. Reef

    Reef Member

    Messages:
    795
    Likes Received:
    0
    Trophy Points:
    0
    Lies! Ask anyone who played on a server with the balancer We are developing here. It works! I am sorry that it's the first working teambalancer You have ever met with. I hope You will know more working teambalancers in the future.
    Currently on servers like KM You are forced to a team that server chooses.
    This plugin can not make it worse.
    However this plugin can make it better.
    You will be forced to join the WEAKER team, not to the team with less players. So You are still forced to join a team, but now it makes sense. It's done for a reason.
    The ADVANTAGE of this solution is that if the teams are fairly even, You can actually CHOOSE A TEAM OF YOUR CHOICE.
    • With the old solution You know from KM, You could NEVER choose Your team.
    • With the new emp balancer, You (sometimes, but not always) will be able to choose a team that You want!
    The ANOTHER ADVANTAGE of this plugin is the new Buddy(tm) feature I am implementing. It will actually allow You to choose a buddy that You want to play with, so You will ALWAYS play on the same team with Your buddy (provided there are more than 6 players on the server). That way You can play with Your friend! On the old solution, You couldn't!
    The plugin will try to put You and Your buddy in the team of Your choice! It will try to keep the teams balanced while doing that!
    You will actually be able to have FUN playing NOT-STACKED game WITH Your friend, because of this plugin! I cannot understand why are You opposing creating it? You should yell at people who don't support the plugin creation, as other solutions force You to play with the random team, split You with Your buddy and produce miserable, stacked games.

    We have the problem on KM server every single day (look at the first post of this topic). That is why We are trying to fix it. Plugin's main task is to minimize the frequency of stacked games and as we have tested, it actually seems to know what it's doing. It produces challanging games for both sides. Clanners can find it feeling weird, as it might be new for them.

    We have a full democracy. If You don't like the plugin, You can simply not install it on Your server!


    Okay, now back on the development topic. I am implementing the buddy feature, I think I will need it to be tested tonight or tomorow.

    I noticed two more problems about Empires.
    1. There is a problem with choosing a commander.
    2. There is a problem with the game quitters.
    It would be good to take care about commanders, to prevent the situation where all good commanders are in one team. There are a few problems, though:
    • How do we detect a good commander?
    • Should we assume that someone commands on one map/side better than on the other map/side?
    • How do we care about cycling the commanders, so it's not always choosing the best commander, but it takes care about if he commanded recently and if so it chooses someone else?
    • Should it choose a commander automaticly by faking client commands or what? Should it suggest who to vote for?
    • If someone knows that he will be leaving in 10 minutes, how does he tell it to a plugin? He is not a good material for commanding this particular game. How do we deal with it?
    • How do we handle players that command good, but have never commanded on this server?
    Problems with quitters:
    • how do we distinguish ragequitting from simple quitting?
    • What do we do when we detect a stack made by quitters? Suggest someone to toggle teams? Force someone to toggle teams?
    • Who do we suggest to toggle/force to toggle? People with less time from join to team? People that if we toggle would balance the teams perfectly, so if it's like 30 vs 20, then we switch someone with skill close to 5?

    I need a discussion on this. Do We want this to be left to random or do We want it to be controlled by a plugin?
     
  11. manhunt0r

    manhunt0r Member

    Messages:
    354
    Likes Received:
    0
    Trophy Points:
    0
    well since i cant give you a perfect solution on comm choosing i shall provide my parameters for a good comm:

    -lots of marked targets

    -continuos research(res have to be considered while evaluating this)

    -NOT getting ninjaed (player that gets killed by infantry in less than minute from first damage received shall get a huge decrease to his comm value)

    -going for tanks be4 armor/engine shall give a comm value decrease(except arteh maybe)

    -building baracks in begining of game shall increase comm value

    -getting turret kills

    -driving ppl over

    -placing walls in close vicinity to enemy comm

    -placing baracks close to enemy baracks/vf that get built up

    -giving defend orders on buildings with <=50hp to engineers in close vicinity



    maybe let people vote for their comms ability at the end of the round with a command like evaluateComm '0<x<10'
    (can see huge problem with retards fucking around, so let vote value depend on voters "xp" value, also maybe display vote results with player names but i can see a shitload of bureacracy resulting from comms moaning, i think i would moan in case of unfair votes)


    let the other comm give a rating, i cant think of comms hating or loving each other, so it should be pretty nonsubjective
     
  12. LordDz

    LordDz Capitan Rainbow Flowers

    Messages:
    5,221
    Likes Received:
    0
    Trophy Points:
    0
    Post that in the good coms thread.
     
  13. Metalhead

    Metalhead Member

    Messages:
    232
    Likes Received:
    0
    Trophy Points:
    0
    I think you shouldn't change this with the plugin.

    If you show points of commanders somewhere, the guy with the most points will allways get voted. Less experienced commanders won't have a chance to be commander anymore. In my opinion you shouldn't even balance teams based on commanding skills. Sometimes it's good if someone else has to be comm.

    I think there s no way how to detect rage-quitting and I prefer a stacked game over being switched to another team during the game.
     
  14. Reef

    Reef Member

    Messages:
    795
    Likes Received:
    0
    Trophy Points:
    0
    I have covered it by "cycling commanders". It would be a feature in the plugin that would take care about NOT suggesting the guy with most points, but it would also take into account how recently did the guy commanded. If he commanded on the last map, or map before the last map - he will not be suggested as a commander (unless he states that he don't mind commanding map after map, though some menu or something).

    If You have joined the game and after 2 minutes it had become stacked by Your team, You might be switched and it's not that big deal.

    Rage-quitting can be detected, f.e. if the team with the lower skill has 0 tickets and a player disconnects/goes to spect - then probably the team with lower skill is ragequitting.
    If the team with less research has less than 1/3 refineries on the map and more than one player disconnects/goes to spect in 2 minutes - they probably ragequit.
    If skill of spectators that were in teams but quit to spect is much larger than the skill diffrence between teams - probably a ragequit took place.
    Don't tell me there is no way to detect ragequit. There are many ways.
    I need to know what conditions are necessary for a ragequit and what conditions are sufficient for a ragequit.
     
  15. Empty

    Empty Member

    Messages:
    14,912
    Likes Received:
    11
    Trophy Points:
    0
    Reminds me of something that happened:
    Cpatton [via fluke] got banned from comming on Mvalley, I had to step in.
    Twas a bad day for NF

    First, we were just plain losing, comm difficulties at start [a griefer got comm, then when we votebanned him, he hopped out and patton jumped in, just in time to get kicked.] and while we sorted that out, nobody was expanding, getting refs or anything. We ran out of res, I got ninja'd by my own kitten [he jumped on my leg!!!!] then after we repaired the CV from the kitten invasion, the power went out at my house. Bad, bad, day for NF.
     
  16. Reef

    Reef Member

    Messages:
    795
    Likes Received:
    0
    Trophy Points:
    0
    About rating commanders, I think we could display a menu (after the end of the map) with simple questions like:
    • Did Your commander give targets? (always, often, sometimes, rarely, never)
    • Did Your commander inform the team about research? (always, often, sometimes, rarely, never)
    • Did Your commander react to what the enemy was doing? (always, often, sometimes, rarely, never)
    • Was Your commander using a microphone? (yes, no)
    • Was Your commander giving direct orders? (yes, no)
    • Was Your commander pushing players at the start of the map? (yes, no)
    There would be a clever algorythm to detect liars. Haha. Imagine that: You lie to the plugin. Then on next map, when You spawn, it slaps You for 20 damage and writes on chat: "that's for lying the plugin about how often the commander was giving targets. He gave targets 34 times in a 20-minute match and You said 'never'! How cheap is that.", boom, slap for another 20: "that's for lying about the commander pushing players. Ronnie and Bonnie were moving with the velocity of 20mph for over 10 seconds in the first 30s of the map." etc, lol... Fortunatley, I'm not that bored to write it.

    The buddy system is mostly coded, the only thing that is not ready yet is the command or menu to tell the plugin who is Your buddy.
    The buddy system was not tested.

    I am frustrated because of the number of admins (3) who said they would install the plugin but they don't do it.
     
  17. Degenatron

    Degenatron Member

    Messages:
    41
    Likes Received:
    0
    Trophy Points:
    0
    I've read through this entire thread and I've come to a conclusion that you will probably not like:

    You are over-thinking and over engineering.

    The simplest solution is usually the best.

    The best fix (IMO):

    1. Disable team choosing.
    2. Randomly assign players at round start.
    3. Randomly choose players to move to the alternate team when balancing is needed.
    4. Rinse, repeat at round start.

    Why is this best?
    It's easy for players to understand and it is completely fair.

    D-Gen
     
  18. Reef

    Reef Member

    Messages:
    795
    Likes Received:
    0
    Trophy Points:
    0
    It gives unsatisfactionary results. Have You read the opening post of this thread? Frog enabled random team putter on KM and it has FAILED. Ok we can put all unassigned players in teams at round start, but I bet it will not solve the problem, because players have diffrent ability to make they team win (it's called skill).
    Currently the plugin is semi-stable (it's running fine on Windows servers only). I am waiting for some linux server admin to give me ability to debug the plugin on linux server (it fails - probably because of stupid sourcemod compilator).

    I have implemented the buddy feature, but it doesn't have a menu yet. It has been tested, bugs have been detected and fixed, we should test it again.
    Currently, the balancer plugin gives satisfactionary results. It's much better than the one installed on KM. It can still be tweaked, though.


    EDIT: Is it fair to put You with 3 noobs against 4 ghosts? If there are 4 ghosts, You and 3 noobs on the server, then it's possible that random assigner will put You like this, right? Well I took my time and checked what is the probability to make fair teams by randomly assigning players. It's LOW.
     
    Last edited: Apr 30, 2008
  19. Degenatron

    Degenatron Member

    Messages:
    41
    Likes Received:
    0
    Trophy Points:
    0
    Ghosts - theres your first problem.

    Ghosts are empty slots thats should be filled by REAL players. They count for nothing when it comes to priming a server. If I join a server that says it has four players and there's really no-one playing in it (Real or Ghost) then I leave and I note that I can't trust what that server says about the number of players on it. Counter Productive.

    So, once you remove the possibility of ghost slots being asigned to any team, you are given much better odds of having a "fair" team.

    Yes I did read the first thread - and the original problem was simply whiners crying about 1) not getting on the team they want and 2) not getting to play with their friends.

    If you are going to calculate odds, then calculate the odds of ANY player being on WINNING team over say...10 rounds. That is where the rubber meets the round because THAT is what causes players to drop - being stuck on a team that loses over and over again and that player having no chance of getting a winning round.

    A simple system of randomly asigning players will net any given player a 50/50 chance of being on a winning team on any given round. And the server admin gets a nice easy MOTD:

    You will be randomly assigned to a team.
    You cannot switch teams.
    You may be switched at any time to keep the teams balanced.

    Any system beyond that can and will be exploited.

    D-Gen
     
  20. Reef

    Reef Member

    Messages:
    795
    Likes Received:
    0
    Trophy Points:
    0
    Since I have actually written and tested a working teambalance system and You didn't, I'm just gonna ignore You. How can my system be exploited (provided that the buddy system is disabled)?

    Ghosts are players from the clan GhosT. BSID players are the same problem. They are pro, compared to emp_recriuts and it causes skillstack.

    Your method of calculating skill was covered in this topic. It fails. I am not going to repeat myself.

    The problem with Your system would be that it will actually work on an infinite amount of samples, and my system would be good even on small amount of samples, because it takes care about every game, not about an average of infinite amount of games.
     

Share This Page