What Valve Could Easily Do for Team Fortress 2.

What Valve Could Easily Do for Team Fortress 2.

Or, I guess they could always remove Sniper from the game.

Suing bot hosters, invasive anti-cheats, scrapping their matchmaker altogether? Lots of ideas have been suggested for Valve to deal with the bot problems in Team Fortress 2, and Valve has done none of them. It’s not a priority, or they don’t want to play whack-a-bot-hoster, so the players simply suffer.

Over the past year or so my thinking about the bot problem has evolved somewhat, so with the latest community organized attempt to spark Valve action (see duckduckgo: search: “#FixTF2”; also Save.TF) I thought I’d write up where my head’s at these days and (as the title says) what I think Valve could easily do (for some value of easily; nothing is easier than planning someone else’s work for them. What I mostly mean is that a few weeks work by a small team of developers could implement the suggested changes.). If you want to see my previous thoughts, go to 26 January 2022: “Team Fortress 2: Surviving Bots”.

Bots aren’t the bigger problem.

I started thinking about what the problem really is. There are situations other than bots that make the game unfun. Toxic assholes. Regular human cheaters. Skilled players that eat your lunch. The bigger problem is unfun, in all its forms. If Valve couldn’t touch the bots, but could simply stop the game being unfun, that’d be a solution, right? (Worth noting, this obviously applies to casual. In competitive, in games where you care about integrity, per se, simply solving to avoid unfun isn’t sufficient. Most of the TF2 playerbase doesn’t care that much about integrity, but cares a lot about fun-versus-unfun.)

I thought of one type of unfun I don’t see much of these days: lag. On the modern internet with fast connections and relatively-nearby servers, my pings aren’t the hassle they were back in the dialup days on QuakeWorld Team Fortress.

So you do the thought experiment: if latency weren’t directly measurable, how would developers deal with the problem? They would need to have some way to figure out that this weird lag thing is causing adverse gameplay experiences (also known as unfun). They would need to develop a way to let players express, “That was unfun,” to record that fact, and to try to avoid similar circumstances in the future. That would likely take the form of bucketing players into what the servers could best-guess weren’t bad match conditions.

So that’s my conclusion for the general bot issue (in non-competitive settings): it should be solved by a general player-bucketing solution that would naturally send bots into a bucket real players won’t fall into. It would also bucket players based on them being generally toxic, or being of very high skill, into other buckets, so that they would tend to play with people in the most similar buckets. You would generally stay in the same bucket, with occasional out-of-bucket matches to see if everyone’s where they belong.

But that’s not something Valve could easily do. I don’t think they would take this option, unless it came out of a magic wand, partially because it would require more resources than they’re willing to put into the problem, and partially because it’s a harder thing to do anyway. It requires an algorithm similar to pagerank, but where you don’t have the existing web of links to use as inputs to judge which players will get along and which won’t. (That is, if people always linked to players they enjoyed playing with or against, and never linked to players they didn’t enjoy playing with or against, you could use pagerank.)

It also wouldn’t solve for integrity particularly well, which is something Valve wants in any general, expensive solution. Their biggest games are competition-oriented, so building something that doesn’t satisfy those cases is low-priority.

The only thing that has worked.

There’s an open secret that the only thing that has been successful in dealing with the bots is the players themselves. Sometimes that’s been by creating community servers with human moderators keeping things cool. Community servers tend to come with their own problems: limited map selection, limited player selection, divergence from vanilla (including server mods that add new bugs to the game), difficulty filling a server, and limited server space, to name a few. The closest thing to a solution has always been individual players on casual servers being vigilant and kicking the bots.

Indeed, after #SaveTF2 (the previous protest and cry for Valve to do something about the problem; see, e.g., IGN: 26 May 2022: Rebekah Valentine: “Valve Responds to #SaveTF2, Says It’s Working on Improvements”), the biggest change was allowing both teams to kick at the same time, making it easier to kick bots.

So that’s what Valve should and can easily do: give players better tools to deal with the bots ourselves.

The rest of this post will outline a few possible enhancements worth considering. But first the requirements.

As mentioned, there are toxic players and bots in the game, so whatever tools you give real players can and will be abused by toxic players and bots to disrupt gameplay.

Votekicks are often abused by bots, and sometimes by malicious players, to kick regular people. In the case of bots, this has two reasons:

  1. It disrupts the human players, which is the whole goal of bots: to be unfun, to spread unfun.
  2. It prevents a votekick being called against the bot, at least temporarily.

With that in mind, one of the keys to empowering real players is giving them better tools that don’t really help bots to disrupt things more.

The existing tools players have are:

  1. Ways to track bots.

    This is mostly a third-party system. People have compiled lists of bots, and some software (on Windows) tries to warn the server of the issue. Not broadly used.

    The same can be somewhat replicated by muting bots (which I do), but the in-game muting system leaves a lot to be desired.

  2. Removing bots via votekicking.

As that’s all there is, Valve should continue to improve them.

Tracking the bots.

Letting players track bad players is a great early-defense system for playing on a server. If you know a bot is joining, you can be ready to kick it quickly before it can do much damage. If you don’t know, you have to wait until people catch on.

The built-in mute system is better than nothing, but it has a couple of big flaws:

  1. You can’t tell why someone was muted.

    This means sometimes you can’t tell if it’s a bot, a cheater, or just a toxic player. Occasionally, you don’t want to listen to someone playing music on voice chat, but that doesn’t make them a bot.

  2. You can’t tell at-a-glance if players are muted.

    You can use the scoreboard menus, but they are fiddly. An actual scoreboard column with an icon or checkbox would be better.

  3. You can accidentally mute yourself.

    If you are clicking on the mute menu on the scoreboard as a player is kicked or leaves, the game automatically switches the target of the click to your own account. And there’s no easy way to unmute yourself (as it tries to prevent you from muting yourself in the first place, but for the bug).

    This is GitHub: Valve Software: Source 1 Games: Issues: 5459: “‘tf_scoreboard_mouse_mode 1’ Mutes Player if selected Player disconnects while panel is opened”.

  4. You can only mute players while they’re connected.

    If a player or bot drops from the server (or gets kicked) before you can mute them, it’s very difficult to manually mute them later.

A new system would keep muting as its own thing (though fix that bug). Add a new tool that lets players mark bots and other malicious or highly toxic players they don’t want to play with or against. By default, adding someone to that list would mute them, but it would be its own list. If and when the technology exists to bucket players, that data could be taken into account.

There’s only minimal counterplay in this. Bots and cheaters can already track players to the extent they need to, often by external tools, and toxic players either also do so or won’t care to.

The other big piece of identifying bots is as a spectator. This is severely limited in modern Casual TF2. You can only spectate your teammates while you are waiting to respawn. And you can’t easily extend your respawn time to get a good look. Depending on the map and mode and circumstances, by the time you have swapped around to spectate a suspicious player, you may have already respawned.

Valve should rethink the spectation system, with an eye toward making it easier to find bots and cheaters. There’s no real counterplay here. Cheaters and toxic players and bots won’t benefit from stronger spectation, while real and honest players will.

Improving the kick system.

There are several areas open to improvement here. Foremost, the information you get when a kick is called is very limited:

  1. The calling player.

    Sometimes this is bugged and simply says Player. In that case it’s useless.

  2. The player being voted on.

    In earlier times this was worse because of name-switching bots that would impersonate someone on the server, but it’s mostly functional now.

  3. A reason for the vote.

    This can be for cheating, griefing, scamming, or being idle. Or it can be omitted.

But if you want to know details, like the fact the player is class Sniper and has ten kills and no deaths, and they joined five seconds ago, so it’s definitely a bot? Go look at the scoreboard (for kill-death ratio, class), and then at the mute or kick menu (for time on server).

Adding in more context would be a huge win. While there are cheaters that play as Demoman or Pyro, they aren’t common. That alone would reduce the likelihood of kicking an innocent player when a bot calls the vote.

The more context the better here. If they could play a clip of the last kill, for example, an aimbot would be easy enough to spot in most cases. But the less Valve has to implement, the more likely they would. So even just filling in the info that the game already has (only not there and then on the votekick popup) would help.

And if a tracking system is added, show if they’re marked. And you if you’ve muted the player being voted on. That would help, too.

Again, no real counterplay. Showing people more information isn’t going to make bots better at kicking humans. Toxic players won’t benefit. But real players will be better at kicking bots if they can tell more about the person being voted on.

Real-time, player-directed bucketing.

If Valve can’t or won’t either improve anti-cheat measures or let players influence who they play with (some form of automatic bucketing), all that really leaves is giving players on a server more control.

So let the players bucket themselves, server by server. If the players find themselves on a half-bots server, they shouldn’t have to kick each bot, one at a time. They should be able to crawl into a communal lifeboat and launch into a new server, jettisoning themselves away from the bots.

First it’s worth mentioning that it’s not clear why casual matchmaking works as it does. It was built alongside the competitive matchmaker, but whether it’s trying to balance matches, and how much so, is unknown. We also don’t know how much of it was built prospectively, hoping to gather data to refine it, which never happened. All of those development decisions, along with the current priorities, would influence how feasible this proposal is.

That said, this feature would build off the party system casual already has, but it wouldn’t require the players to all become friends or plan ahead. A lifeboat organizer would put up an offer similar to a vote, open to both teams, and the players who want to ditch would opt-in. The organizer would have control to weed out any bots that also wanted to join. After a minute or so, the new group would all go to a new server, leaving the bots behind.

(The details of how this would work are wide-open to design. This brief description is probably not the way to implement it, but the basic idea seems useful: let a group of players on a server decide to jump ship together, without the need for a bunch of friend requests or other hassles.)

The only thing that’s even slightly kept bots in check has been the players on the servers using their limited tools to save themselves from this blight on gaming.

It’s something that’s easy enough to do in the real world. Say you’re at a bar and you meet some nice people, but there’s a lot of noise and some bad vibes, too. It’s simple enough to say to the new-formed group: “Let’s all go somewhere else.” While it would disrupt the server when the group left, it would usually be used in circumstances where the match was already busted to begin with. The human players had the seeds of a good match, but the weeds of a bad, bot-riddled match, so they moved to a greener pasture.

I don’t like the design of letting one player decide who’s in the lifeboat, and there’s an open question of when the lifeboat vote could be called, by whom, how frequently. Ultimately that would be something for the professional designers to come up with, implement, test, iterate, and ship. I think there’s something workable there.

The only thing that’s even slightly kept bots in check has been the players on the servers using their limited tools to save themselves from this blight on gaming. Maybe these particular ideas wouldn’t help that much, but empowering the players seems the best bet, and Valve should acknowledge that by attempting solutions in that vein.

The risks of counterplay? Not much. The worst case is that a group of players ditch you and leave you with the bots. But if a group does that to you, it’s hard to see they were worth server-hopping with in the first place. Bots could leave together. Good riddance. I don’t see a downside. There may be some, but they aren’t obvious to me.

Other options are limited.

There may be some minor technical measures that could help. Bots recognize each other by their Steam IDs through some sort of network they connect to; looking at ways to disrupt that would mean at the least bots on different teams would attack each other, which would reduce their effectiveness a little.

There’s a good chance bot hosters would find a way around any such limitation, though, which puts things back into the cat-and-mouse treadmill that Valve has used an excuse to avoid attempting to fix the problem.

But while giving players more control on one server will make that server a little better, it won’t really put a dent in the larger problem. Valve badly needs to solve the problem of bucketing. It’s elegant in that it can work against any given version of unfun, where anti-cheat doesn’t solve for toxic players or for gross skill mismatches.

Even these minor attempts to improve the situation may not be something Valve feels worth the effort, or at least not enough to see the manpower to make them happen. But giving the humans better tools to fight back against an invasion of bots is the obvious choice. The addition of concurrent kick votes for both teams was a welcomed improvement that has helped. Valve should look for ways to double-down on that kind of empowerment.


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.