Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Ripshaft

Pages: [1]
1
Feedback / What I personally want to see changed. [rev 6]
« on: April 03, 2010, 05:59 »
Intro


My suggestions so far deal with either optional commands that many will find useful - or that are too controversial to be made default - and general changes that would have little to no notable negative impact to the competitive player while providing large potential bonuses to all players.


... but that's not because that's just what I want... I just think that kind of stuff is needed. What I'd actually like to see done, what I'd do if I controlled the bots, is much more dramatic, and figured I'd get it off my chest, because it bugs the shit out of me almost every game.



The Changes:


First, remove !ping and !from completely.

Remove !banlast and !ban, auto ban all volountary leavers, except those who are leaving under reasons justified in the rules.

Remove !synclimit, !setlatency, add a 20 second delay after connection window pops up until host can use !drop.

Add a !voteteamunmute (only the player's team has to vote, only unmutes for team speak)

In the same way, have a !votemute and !voteteammute that work in the same way as above, but with muting. Also add a signifigant ban for teams of friends muting the odd man out, or just anyone muting without due cause, and broadcast this when !voteteammute is used.

Remove !muteall, or modify it so that it actually does mute ALL, and make it enterable only within the first 3 min or so. Add an equivalent vote function called !votemuteall which would be the same as the old !muteall, but requiring 60-80% vote.


[rev 6]With personal muting (see below) in place, there's really no need for the host or anyone to have muting power. Remove all mute commands other than the personal muting.


Votekick's abuse potential is always a problem as long as there is a vote, given the nature of the average dota player. To reduce this signifigantly, have only the host/owner able to call !votekick, paired with a signifigant ban for votekick abuse, and a message broadcasting this much to the players whenever a !votekick is called, with information on how to reach the forum.

Change the current scoring algorithm to remove the w/l ratio entirely, then apply the w/l ratio to adjust the score: 50% w/l no change, >50% w/l = reduction in score proportional to amount, <50% w/l increase in score proportional to amount. This is only a temporary change until a real scoring system is in place. This heavily normalize the scores and significantly reduce the score inflation caused by stackers. Obviously the goal of this is to reduce stacking, resulting in a higher amount of actual balanced good games.

Change the backdoor rule from 'there is not backdoor rule' to 'clear and plain backdoor rule' - there must be a uninterrupted line of creeps leading to the building, and creeps at the building, to attack it. An alternative would be to allow the host to declare and enforce the backdoor rule with cooperation from ban forum admins.

To deal with stacking in the shortterm, add !votescramble, requiring 50% votes to pass. While the vote is in progress, the game cannot be started. Think of it as waiting for spoofcheck but more like a stackcheck. The votescramble will not change the position of the player in slot 1/0 (blue). If the vote passes, another vote may not be made until the host uses !swap or another slot manipulation tool. Not perfect, just a damn good option.

[rev 2] Allow !hold to only be used if there is a slot open or closed (and not being held for someone), if there isnt one, display message saying to close a slot. When !hold is used, it will automatically close a slot. If the slot is opened, it will auto-re-close, displaying a message saying 'slot x currently held for player [playername]', after 5 seconds if the slot's attempted to be opened again the slot will open and the player will no longer be on !hold, and a message displaying this will be displayed. !unhold [playername] would also be an added command, who's use should be obvious. The above is easy enough to code in, for a slightly more advanced implementation, a dummy player, called 'HELD' or something similar, with a coloured name, could be used to hold the slot, to make it even more obvious that the slot is held for a player.

[rev 2] Add auto suppression text filters. Ie when the filter conditions are satisfied, the text is suppressed (does not get seen by anyone other than person typing it). I'm sure there's many that people can think of, but for absolute certainty in my mind... Any sentence containing: 'gg' at any point before end of game, 'finish' at any point. 'don't def/stop def' at any point, 'balance' at any point in a game with -so. Obviously case insenitive, bad grammar assumed, multiple permutations of the text .etc; just giving examples.

[rev 2] Add logging of !swap use in lobby, make intentional stacking a bannable offence.

[rev 2] Add personal mute options, ie !pmute [playername], mutes that player for you personally, does not echo the message, nobody will know you typed it. No vote, obviously. Also a !mutescourge !mutesent and !muteall available to all players not requiring vote and not echoing.

[rev 3] Suppress !sd messages, ie when someone types !sd [whatever], nobody else sees it.

[rev 3] Once the game is full (all slots occupied/closed) for 6 seconds, a full listing of players in order by slot and their abbreviated stats is echo'ed out for all to see. Should make it easy to identify stacks or just poorly balanced games. It would make sence to tack this at the beginning of the game log along with the other info (swap log etc) stated above as well.

[rev 4] if !shuffleplayers is used, disallow it to be used again until there has been significant disruption in the slots, ie 2-3 swaps/player leavings/joinings.

[rev 5] If a player 'loses connection' for any reason within one minute of dying, the host can ban. The host is obviously held responsible and banned if there's insufficient reason to believe the player plugged.





Some Reasoning:


Now, to explain some of my reasoning;

The removal of !ping and !from, is simply because these are completely useless commands. The bot auto pings, auto checks connection stability, the bot is better at this than any player will ever be, the average player has absolutely no concept of what a ping is or it's correlation with connection stability, if any. Also, where a player is from has as much correlation with their game performance as their colour of skin, it's an absurd discrimination that should not be made available.


The removal and automation of !banlast/!ban is fairly self explanatory, it's pretty silly that it's not allready automated.

The removal of !synclimit, !setlatency if for basically the same reason as removal of !ping, the people using these commands have no idea what they're actually doing, and they're used in completely unnecessary and damaging ways, !synclimit is really only ever used to !drop people, and it's effect on the player who is lagging means that now their hero can be killed while they lag, where without intervention they'd be safe. !setlatency is either never used or used only to show how 'pro' the host is by spamming commands available, I'm not sure if the bot auto corrects latency issues, but regardless, this is not something that should be controlled by a player, ever.

The !votemutes and !voteunmutes all deal with the current issue of the host having the only control over this very important function. If a person on your team is being a flaming jackass, and you're not on the host's team, you often will not be able to get him muted. This results in a signifigant negative impact on enjoyment of the game. Poor morale is responsible for 70-90% of fail in my experience, losers who are crying in the team about the team are responsible for most of this.

The removal of !muteall is fairly straightforward, communication between the teams and players on the teams is an important feature, to have it taken away without requiring a reason is absurd. If it's something everyone wants, then sure, you can vote for it with !votemuteall. Keep in mind many players are disconnected from bnet shortly after the game starts, most people don't know about the !private commands, meaning they have no known way to communicate with the host to indicate there's any problem if !muteall is used (something they never consented to).

The reasoning behind the votekick change is pretty much explained in the change notes. This of course doesn't prevent abuse, just reduces the accountability for it to one person, the host. The host would have to at least know about the playdota.eu channel, which already makes them a more aware player than most of the people who play on the bot, so they'd probably be more wary about getting banned for abuse as well. This combined with the notification of penalty for abuse of the system I believe would have a significant effect on reducing the current level of abuse of this command, which is more or less restricted only to !ragekick. This is a command that should be used incredibly rarely, only to boot players that are in clear violation of the rules and wanting to ruin the game.

The backdoor rule I just think is needed for proper sporstmanship. Almost every player understands the backdoor rule and why it's in, though they may not be able to explain it. I mean alot of people know that there's no backdoor rule on playdota, and we very rarely see it, that should say something. Most players will honor the backdoor rule without ever knowing about it or being told about it, they will however blatantly backdoor when they fear that they are going to lose, or when they're short on time. This is absolute bullshit in my opinion, which is why I advocate the change. I do not want to win due to backdoor. Ever. It's garbage.

[rev 2] Fairly self explanatory, should stop some of the abuse from bad hosts who don't know how to use !hold. This of course wont stop the people who don't even bother to use !hold, but it should stop the people who do from abusing it due to lack of knowledge.

[rev 2] The auto suppression is fairly self explanatory, it's meant to stop messages that provide absolutely no benefit but have great potential to piss off or demoralize players, thereby ruining a game. As I've said before, demoralization is responsible for 90+% of fail in dota that I've seen. Whining in text for contributes alot to this.

[rev 2] The swap logging and stack ban changes are very straightforward, they are meant to help stop or greatly reduce stacking. Ideally the swap logging can be present at the start of the chat log that's posted after a match. With a simple record of who was swapped with who to what slots, ignoring players who were not present for game start, and a listing of the slots with what players are in them at game start.

[rev 2] The personal mute options I had thought of many times before, but it's one of those things that's so obvious you forget about, so it missed the first posting. Very simple straightforward option, I would use it heavily, and I know many others would if they knew about it. Even with all the other votemute functions in place, this can be a faster and more elegant solution to your flaming/whining jackass problems.

[rev 3] Another painfully obvious thing, alot of people whine about !sd 'spam' now, simple solution is to suppress it, since all text handling is mediated by the bot.

[rev 3] I've made a suggestion like this before, and the reply I got was that it would cause flood, I asked what they meant and they did not reply, any form of flooding can be overcome with proper coding. I know that this type of function is possible as I've seen similar implementations on other bots, and there's no technical limitation that I am aware of.

[rev 4]This is something I just ran into today, a host repeatedly !sp'd - I'm not sure if he intentionally !sp'd until all the players on sent were good except the player in slot 1, but that's definately how it worked out. There's no reason to shuffle more than once when all the players are the same, and the type of abuse i just described is more than possible, so makes sense to stop that, this does that.

[rev 5]Pretty self explanatory, this should cover most rageplugs. It wont cover the 'cry/i give up/no chance plugs', but it should take some heat off the ban admins and help reduce the overall number of rageplugs.

[rev 6]Put the power to mute asshats where it belongs, in the hands of every player. If you dont want to hear someone, for any reason, you should be able to mute them. You also shouldn't have to deal with people muting other players to you without your consent. This solves all those problems and more. Zero chance of mute abuse, full responsibility on each player who uses it.


So yeah, I'll probably add more when I remember, but those are most of the main ones I think. Mabye you'll find some of them of interest.

Edit: added some formatting... might make it easier to read, who knows.
Edit: added a revision number to the title.
[rev 2] Edit: added revision notes for the added stuff.
[rev 3] I should also mention again, I am quite a capable codemonkey, I am certain I can code any of these suggestions I have mentioned, and would gladly do so if asked.

2
Feedback / Different approach: What is still needed/lacking?
« on: February 24, 2010, 01:09 »
Not going to bog down with a big intro, just gonna get right to it.

Things that are needed for playdota.eu bots


A way to quickly know if the game you've just joined is stacked for one team (pub stomp)
A way to quickly know if one team is a group of friends who almost always plays together (pub stomp)
A way to quickly drop or otherwise avoid noobs in a pro game.
A way to quickly drop or otherwise avoid pros in a noob game.
A realistic scoring system.


Now, for some more detail. Basically, almost every game I join that I'm not hosting myself is victim to one of those problems. When I do host myself, it's a very tedious duty to check every player that joins, knowing that about 40 will join and leave before the game even gets started. The bot can easily have the functionality to prevent these problems. It is highly unrealistic for players joining a game to be able to check about the above problems properly. You can join and start !sd'ing every player, but chances are the game will start before you get through more than 5 of them, and even if you discover the teams are stacked, there's nothing you can do about it unless the host cares, which is unlikely since it's near impossible to stack without the host's consent. Additionally it's not realistically possible to check for teams of friends in game, you can alt tab and look at their stats, and see if they share a ton of games together, but by the time you alt tab back, the game will most likely have started and the noobs on your team will be typing in -afk before you've got your hero, and then you have to sit through a steamroll.

****
Edit: Just fyi, awhile back I started intentionally joining stacks to discover the clearest criteria for how to identify what makes a stack. Now what it really comes down to is the following: A mega stacker will always have an incredibly unrealistic w/l ratio, due to the current score system strongly favoring w/l over all else, this also results in an incredibly inflated score.

Bottom line: Fastest way to avoid a stack currently is to first identify the owner of the game you've joined, and then check his stats, if his w/l ratio is completely impossible for a pubber, you're probably in a stack. To confirm, check the other players on the owner's team, chances are they will all/mostly have a impossible w/l ratio as well.

If you want to be extra sure, ask the host to shuffle and see the reaction =p or check the players on your team, they usually have severely negative k/d ratios.

However, it does seem from the results of my tests that there's not always an easy way to verify a definitive stack. Checking for a cumulative score difference of 100 between the teams generally means stack if it goes through, though I have had normal, and even good games where this is the case, the inflated stats of a few players can really throw off these numbers. Also alot of really good players have terrible scores, due to the scoring system explicitly favoring stackers. If the score is ignored, alot of stackers still have garbage k/d ratios despite how much they win. So yeah, like i said, not easy to properly define based purely on the score stats. In the end the w/l ratio is the best way I can see to properly identify them. A simple check like seeing if 2 or more players on the team have a win percentage of 70%+ would probably do the best to identify stacking.

Of course true stackers, who only stack to stomp noobs would have no real problem getting around this by intentionally reducing their w/l ratio. Ah well like i said, no perfect solution but I'm still thinking on it.
****

So... Now that the needs are somewhat clear, solutions;


As for the scoring system, I've read that they're currently working on it. The current system places a massive emphasis on w/l ratio, which is completely irrelevant, and influenced most by abuse of the system rather than any form of player skill. People with the highest w/l ratios tend to be the most unskilled of players, only playing noob stomps or otherwise arranged games. With a new realistic scoring system in place, it can be applied as a single stat of reference in many of the features I will suggest from this point in.


A way to quickly know if the game you've just joined is stacked for one team (pub stomp)

An average of the player scores for both teams should be compared when the host submits !start, or just periodically, if the ratios are all out of whack, the lower team should ALL have to consent for the game to start. All are required because in a noob stomp situation, most noobs just want to play and get experience, not realizing what it means to be in a noob stomp, 4/5 noobs would just agree regardless of what comes up just to get playing. It might be an idea to disable stats on these games regardless of the outcome, at least until the new scoring system is in place.


A way to quickly know if one team is a group of friends who almost always plays together (pub stomp)

This is an ideal function for a bot to handle if it can. I don't think game specific information is stored in the bot's dbs, if it could perform a remote lookup, it could check the past 10 games of each player, checking for other players on their team who are also commonly present on their team in the past. If this level of functionality is not available in the bot, it might be a good idea to add it in, it should be possible with minimal overhead, I'm not sure on the current structure of the db that ghost/pd.eu bots use, as I havent looked at it in awhile, but it shouldn't be too difficult to add in a listing of the players each player has played with on their team for 5-10 previous games. Then a simple compare could be done either at !start or periodically, and the opposing team warned. This one wouldn't necessarily require full consent from the other team to continue, as simply knowing that the opposing team has players that frequently play together is enough for most players to be more aware and play better, and be more motivated to kick their ass, knowing that the other team will expect to win.


A way to quickly drop or otherwise avoid noobs in a pro game.

A simple !pro command, available to the host would be ideal for this. Once typed in, the game will either block or boot any players who do not satisfy a  'pro' condition. If the scoring system is redone and works, this would probably be sufficient a check, simply disallowing anyone with a score below a certain threshold. Before that, or if the scoring system just doesn't work very well, then a k/d/a ratio check should work fine, for example a good check would be (k+a*0.5)/d > 1.25 or so. It's unlikely that anyone who doesn't satisfy that condition is any good. This of course doesn't guarantee the players joining will be pro, it just eliminates most of the noobs.

When a new player joins the game while !pro is enabled, they are notified in the join message. If the game is supposed to be pro, the new player can simply request it, if the host wont enable it, they can leave. Not a perfect solution, but it's quick and easy. It wouldn't take long before most players demand it, noobpros tend to take pride in how 'pro' they are, so they'd probably want it, resulting in pro games which do not use !pro commonly failing to start due to lack of interest over games that do have it enabled. Players that have either no games or a very small amount of games will be allowed, but a message will be broadcast informing the host or everyone that this is the case, at which point it's at the host's discression.



A way to quickly drop or otherwise avoid pros in a noob game.

My solution to this is basically the exact same as the !pro solution, except it's !noob instead, and instead of having to be above a certain threshold, now it's below. Additionally there'd have to be an emphasis on amount of games played, which is compared to their stats in those games. A player who has an ok score in noob games shouldn't be denied their ability to continue playing noob games until they've played a certain amount (10,20?), however, someone with an absolutely stomp score should be barred from noob games provided they have a few of these games under their belt (like 3 or so). So basically number of games is the primary check, with score being a secondary, if they pass the initial check, their score is checked, if it's far too high, they're denied. If their fail the initial check (the number of games), but their score is utter crap, they would also be allowed.

To put it into a pseudocode type format, to make it clear to anyone who can read that:

if (number_of_games < threshhold)
{
 if (Score >= CrazyHighScore && number_of_games > 3orso)
 {
  DENIED! boot/block
 }
 else
 {
  OK!
 }
}
elseif (score == crap)
{
 OK!
}
else
{
 Boot, deny.
}


I am sure that the !noob, !pro, and team stat check options are feasible and easily added, the others I'm not so sure about. I have an idea on a realistic scoring algorithm, but I need to run atm so cant write that in, might add it later if I remember. Just need to post this before I forget again =/

3
Pretty straightforward, I'd like a single command to list all the present player's k/d/a stats in the lobby, for pro games, to weed out the noobs without having to !sd every single player that joins.

Basically the output should be

!Allstats, !as, !pro, !procheck (suggestions)

[1] NameOfPlayerInSlot1 -- xx k/d/a
[2] NameOfPlayerInSlot2 -- xx k/d/a
[3] NameOfPlayerInSlot3 -- xx k/d/a
[4] NameOfPlayerInSlot4 -- xx k/d/a
[5] NameOfPlayerInSlot5 -- xx Not SpoofChecked
[7] NameOfPlayerInSlot7 -- xx k/d/a

The missing 6, 8+ is because there's no player there, ie it's open.
xx is the number of games played this season, I'm not sure how long the field could be before wraparound would occur, screwing up output, so I just left it without any descriptive text. This is obviously at the discretion of the programmer where space is allowed.


The reason for the listing by slots is to allow easy slot identification for opening or swapping. The reason for having the number of games listed is because the k/d/a stats gains perspective when compared to amount of games played. If the player has 97 games played with a k/d/a of 5/5/10 it's generally considered alot more respectable than someone with 3 games with 5/5/10.

Anyhoo that's my suggestion, pretty straightforward I think, you can play with the idea and modify as you see fit, I just think we need something like this.


If you sent me the bot code I could program this in myself for you, but that's of course up to you, and I certainly understand the reluctance of disclosing your hard work. Just figured I'd throw it out there, I'd like to help the playdota crew, I wouldn't be playing dota nearly as much without them.

4
Before I get into anything, I just want to say I love the idea of public bots, I would have done so myself if I had the resources to do it, but I don't. As such I am very, very greatful to the people who make playdota.eu possible, and regardless of any problems i list, it will still be easily the best thing to happen to eurobattle.net since I joined many years ago.

Now, the problems I'm going to list operate on the assumption that the playdota.eu bots exist and are made publicly available for the purpose of providing an easy to use, difficult to abuse bot service to the players as a whole.

With this in mind, I see the following problems, they all fall into the category of admin abuse, but some are less obvious than others:

1. Admins being able to freely kick players in the lobby for any reason.
 This one I see as a major problem currently, as a public bot service, it seems entirely unreasonable to give the admin this much power. How many of you have been in a game where you wait for 10 minutes, then the admin kicks you to open a slot for a friend. Or how many of you have just had to sit by and watch as a jerk admin constantly opens slots, kicking players, instead of just closing slots and using !hold for their friends? How often are people with perfectly reasonable pings kicked because the admin uses !ping 75 or some other incredibly unreasonable number?

Proposed Solution:
 In public games, but not private, after a certain amount of time, say 30 seconds, a player's position is secured, and they cannot be kicked by the host opening their slot. They will still be autokicked if their ping climbs above an autokick threshold (like 300), for more than a certain amount of time (10sec?). Also a limit on the number used in the !ping command should be put in, or just remove the ability for hosts to specify a minimum ping, 150 is more than reasonable, given the average pings of most users to the playdota.eu bots, though 200 would probably be better. To stop hosts from constantly kicking innocent people for the purposes of slotting (instead of closing the slot and using !hold) have a counter that counts the amount of times the host kicks a player within 5 seconds of them joining, at 2, it displays a warning message (ie 'You appear to be kicking players with no clear reason, if you're trying to make a slot, close the slot, and use !hold [playername] instead.), at 3 it displays the same message and additionally prevents the host from using !open for say 20 seconds. at 4 the timer goes up to 30 seconds or whatever the timer is set to for the secured position, ie if the player wants to play, they can play. I see it likely that a dick host might rage !unhost, to prevent this from affecting the other innocent players, have the host ownership transferred to the player who has been in the game lobby the longest in the event of an !unhost in a game with other players. The game should be automatically unhosted once the last person leaves under these circumstances, or if the host is idle for a extended period of time, if it isn't allready.

The end result is that admins will be forced to exercise responsibility if they want to host public games and play with friends, and the hundreds of innocents that get booted every 10 minutes will be significantly reduced.

2. The ban system has issues.
 First off, there's only 2 situations under which people can be banned currently. One, if they leave willingly, by exiting the game, and Two, if they are !votekicked. For both of these, they are still only banned if the host bans them, only the host can ban them, also, the host cannot be banned under any situation. You can apply for a ban on the forums, but I'll get to that later. So, to break it down into pointform;

-The host cannot be banned
-If the host leaves nobody else can be banned.
-If the host refuses to ban nobody can be banned.
-!votekick bans are becoming a popular alternative to ragequitting on playdota.eu bots, leading to wrongful bans. (a player will spam !votekick requests until enough people type !yes, then will harass the host until he bans them)

So, Proposed Solutions:
 Remove all ban power from the host, he's just another player like anyone else, why give him that easily abused power? Auto ban anyone who leaves the game willingly. Disable the use of !votekick while dead (if possible), and do not autoban players who are removed via !votekick, also add a limit to the number of votekicks any one player can make against any other player (in the same way that every player can only pause 3 times, I'd suggest 2 as a reasonable number). All other bans can be applied for on the forum. An argument against this might be that it would cause excessive work for the ban forum admins, but I think the amount of wrongful bans caused by the current system significantly outweighs the amount of people who would apply for bans against deserving people on the forums.



Anyways other than that the system works well I think. I'd like to say again these changes are directed at public games only, if you want to abuse admin in a private game with your friends, well what the hell go for it. These suggestions are out of concern for the power abuse that's common currently, and the overall health of playdota.eu.

So yeah, I know some of what I have to say may not be too clear, sorry that's just how I roll, if you want more clarification feel free to ask and I'll try to provide. If you see problems feel free to bring them up, though I'll just ignore them if they're baseless. I am a programmer, so if the people in charge decide the changes might be cool but don't know how to implement them or just think it'd be too much work for the benefits, I'd be happy to lend my services if you're interested, for free of course, though I might take a little while, depending on how busy I am at the time.



Edit/Further Info:

'But what about people who are just assholes in the lobby after 30sec or whatever?' or 'what about people who try to ruin the game later?'

I've played probably almost a thousand games of dota since I started (sad i know =/), with thousands upon thousands of different players, and of all of them, only about 30 or so were truly disruptive to the game. Of those 30, 20 would be taken care of by the !mute command (/hideminimapsignals is often useful too, was my favorite feature once they added it). Of the other 10, there is no good way currently or previously to deal with them, they've decided they want to ruin the game, and will give the enemy items, their life repeatedly, or destroy their items. I do see the value of votekicking the purposeful feeder out, so I take back my suggestion on disabling after 20 minutes, and replaced it with disabled while dead (if possible, not 100% sure if the bot can read that, I think it can tell when they die, but doesn't know how long they're dead for, a 30 seconds after death denial of !votekick, that also uses their !votekick chances would probably catch 90% of the rage !votekickers). The resulting log and replay from the game would make it an airtight case for permaban.

So, the answer in pointform, to save you from the wall of text:

- !mute verbally abusive players
- !votekick intentional greifers in game if necessary.
- report on forum, should be easy case for permaban.

Pages: [1]