20150609 /bans/

published 09 Jun 2015

So let’s have a talk about something quite relevant today: bans and the way they are handled in osu!. Firstly, they are not handled by me except in edge-case scenarios (where unique circumstances exist and other team members cannot make a judgement on their own). I used to handle ban enquiries but the workload has increased to a level that is basically full-time work for one to two people.

you're 99% fucked if you see this

There’s far too many intricacies to how we handle bans and appeals, so I’m going to address what I think are the most important facts in a very general way this time. If you want more information on a particular facet that I haven’t explained, then let me know in the comments below and (assuming I am able to without giving out confidential information) I will respond in a future post.

Firstly, while we throw the word “bans” around, it is very rarely that we ban accounts on osu! anymore. There are two levels of account restrictions which are silenced and restricted flags. Internally there are many other finer controls over how a user is limited, but we rarely use them anymore.


The one which most of you are familiar with, silenced mode, puts a user in a muted state. They will be unable to respond on chat, join multiplayer games or post on the forums, but can continue to submit scores, check rankings, read chat and browse the site as per usual. We use this mode to warn people when they break rules, or when we suspect the user is about to do something that we can prevent with preemptive action. The most common offences to warrant a silence are chat or forum vandalism. Using BanchoBot commands we are able to stop users in their tracks before they harm the experience of others. Quite often this is done automatically by our trusty BanchoBot.

Silences start at five minutes in length, and double each time the user re-offends. In rare scenarios we do apply more than five minutes on the first silence, if we think the user is highly likely to reoffend straight after that five minute period is over (or if they have done something much more serious). They stack for up to four weeks, after which they disappear from the user’s profile. After going four weeks without offending, the user’s history will be reset (to the public) and with it, the length of future silences will also be reset.


Restricted mode on the other hand is a much more serious flag to be applied to a user’s account. On top of it applying all the restrictions of the silenced flag, it also stops the user from appearing to others in score rankings, while also stopping performance points updates and other various internal processes. This mode can be applied by admins, but most of the time it is automatically set by our foul-play detection systems.

When we used to apply actual account bans, I didn’t want to make any mistakes and falsely destroy people’s legitimate accounts, so there were no automated bans placed. With the introduction of restricted mode on the other hand, we could put accounts into a frozen invisible-but-preserved state. This made automation possible, and changed our workload as admins from applying bans to removing false-positive restrictions. With the number of restrictions we see, this makes a lot of sense.

The restricted flag is used primarily for cases of foul-play. These are the ones that cause community drama (cheating, multi-accounting, account sharing, boosting, sale of accounts etc.). It is applied when we need to act in order to protect the core values of osu!.

How does the automated system apply restricted flags? That’s not something I can share with you, for hopefully obvious reasons. What I can say is that false positives are well under 1%. On releasing accounts from restricted mode, they are returned untouched with all newly set records correctly applied. When we fail to resolve a false positive in under 24 hours, we’ll at very least be highly apologetic, and in extreme cases reimburse the user for their lost time.

So then, why do you all see so many complaints about people being banned when they are innocent? About people being falsely accused of multi-accounting when they are saying they actually have siblings? Usually, they are lying. In the cases they aren’t lying, they are usually omitting information (ie. they insist they aren’t cheating, but they have 20 accounts hidden away).

So the, why do people say the osu! support staff are ignoring them? Usually, they are repeat offenders, trying to come back for months or years on end while hiding their identity each time. Why do they say we are rude to them? They probably deserve it. I closely monitor the responses to tickets by our support team, and trust me, I bring attention to even the smallest mistake (I’d tell you to just ask one of them, but we protect their identities to avoid harassment!). People are very quick to contact me by email if they think they were dealt with unfairly, and if they were, I will fix the situation to the best of my ability. 95 times out of 100, I will tell the user what the support team told them: to fuck off.

We try to give honest responses where other game support teams would simply ignore the user. This means that our responses seem “unprofessional” in many cases, but hey, would you rather “unprofessional”, or silence?

I plan on covering individual topics in more detail, such as why we don’t allow multiple accounts, in what cases we use special means such as score rollbacks, what counts as cheating, when appeals are given extra priority and much more. I’d like to clear up this stuff so it’s not taboo, in a hope to stop people putting so much time and effort into creating discussions around it, and instead enjoying the game for what it is.

Today’s Worklog:

  • Managed to severely break the osu! client build server with some changes to php error reporting. While trying to track down the issue, I added a new bug which saw me spending almost two hours actually figuring out the underlying issue. Quite depressing, as I wrote this particular system to be resilient to any error. Except this one ;).
  • As I recently hooked up the old (current) osu! web to sentry (we use a self-deploy as the pricing of the hosted service is stupid), I spent some time doing general maintenance based on the most prominent error reports. Fixed some lingering issues in the process, like profile A/S/SS ranks not being reverted when a map is disqualified.
  • Added a toggle in the osu! client to choose whether automatic downloads include videos. Live on cutting-edge.
  • Updated the localisation updater build tool to correctly OAuth with the google sheets API. They shut down the basic auth API last week, and while I already solved that for bancho (it uses it to fetch the FAQ), the localisation updater tool was still a tad broken.
  • Followed up the next tablet order. Figuring the logistics of how we are going to store 2,000 tablets this time, as opposed to the usual order of 1,000. On top of that, the person I have helping me with the store is on holiday for a couple of weeks, during which the tablets are likely to arrive!! Lots of planning to be done…