
2.1.0 gave the game a memory. 2.1.1 goes back and corrects it. Every star rating in the catalogue and every pp in the game were recomputed on a new formula — one that measures the hardest part of a chart instead of its average, and that pays a play from the server instead of trusting whatever the client said. Your totals moved. Some of your positions moved. There is a panel on your profile that shows you exactly what happened and why, and the rest of this patch is the game around it: a retry that takes five seconds instead of thirteen, a settings screen built for this game, and beatmap pages that can finally be argued with.
PERFORMANCE POINTS, RECALCULATED
Read this one. It is the reason your rank looks different.
The star rating measures the hard part now
The old rating divided by the mean of every gap between notes. A mean tells you how dense a chart is on average, which is not what makes anyone fail. RUSH E measured 103 ms when three quarters of its gaps are 47 ms or less. Its densest seconds are within 3% of a vibro chart's — 44.7 notes per second against 46.0 — and yet they scored 5.05 and 5.66.
- THE MEASUREMENT:
divided by the mean of every note gap ⇒ overlapping windows of 64 gaps with geometric decay, weighting each chart's hardest bursts - THE CEILING:
8.11 stars ⇒ 9.95 - THE MIDDLE: unchanged on purpose — the median of the 1,306 ranked charts is still 2.86 and 73% of them keep their colour band
- THE ORDER: RUSH E
5.14 ⇒ 7.05 · The Big Black 6.26 ⇒ 9.54 · Godzilla 6.02 ⇒ 5.26
The server decides what a play is worth
- WHO COMPUTES PP:
the client sent its own number ⇒ the server recomputes accuracy and pp from your six judgment counts, and rejects a payload claiming more judgments than the chart has objects - THE RESULTS SCREEN:
counted up to whatever it had calculated ⇒ animates an estimate and settles onto the server's number - THE CURVE:
one accuracy-and-difficulty curve ⇒ accuracy weighted the way the score weights it, so SSS is finally worth more than SS, on a curve with no cliff in it - NOT MISSING A SINGLE NOTE: worth nothing on its own ⇒ a ×1.02 step. It is the one place pp and score are allowed to disagree.
Slowing a chart down no longer pays
- DIFFICULTY:
one number per chart ⇒ one per chart and rate, all four speeds, so an easier chart is scored as the easier chart it became - A DECREASE SPEED PLAY:
paid 70% of its score ⇒ pays 37%, which is what it actually costs. 10,204 historic plays were rescaled by the exact ratio between their old and new factor. - MODS:
Hyper+HD+FI was ×1.452 of score but ×2.54 of performance ⇒ mods are worth the same in both, measured across the catalogue rather than picked by eye
The world ranking sums your best 200
- YOUR TOTAL:
a flat sum of everything ⇒ your best 200 plays with decay, plus a capped bonus for breadth - THE TOP SPOT CHANGED HANDS: the new number one has 52 charts and passes someone with 172. We went looking for an exploit and did not find one — it is the weighting paying for hard charts played well instead of for mileage.
- INACTIVITY:
you stayed on the board forever ⇒ dimmed after six months, off the listing after a year, and nobody is removed for not playing - EVERY BEATMAP BOARD is sorted by pp now, in the game and on the site, and the in-game row shows the pp it is sorted by
- AN ALL-MAX RUN set before the million existed is paid for it retroactively
And you can see exactly what it did to you

- THE PP RECALCULATION, on your profile: your total and your position before and after, per board, and the plays that moved most
- THE HEADLINE IS THE POSITION, not the pp — it is the only number there that compares you to other players instead of to a scale that moved for everybody at once
- PLAYS THAT PAID NOTHING now pay. In the profile above, three separate charts went from 0pp to 184, 209 and 248.
A RETRY TAKES FIVE SECONDS
It took twelve and a half. Nearly eight of those were silence.

Restarting does not restart — it reloads the whole scene. Measured end to end, from asking for the retry to touching the first note, with the chart and the audio already in memory:
- THE WHOLE WAIT:
12.78 s ⇒ 5.19 s, a 59% cut - SILENCE BEFORE THE FIRST NOTE:
7.58 s ⇒ 2.00 s - HOLDING THE KEY:
a full second ⇒ half a second — which is only honest now that the counter is fixed - THE RESTART KEY:
never reset when you let go, so stray taps piled up until the game restarted a run nobody asked it to ⇒ half a second means half a second - ON A RETRY:
the whole title card again ⇒ the attempt number, one second, nothing else
And the card that was in the way
- THE ARTIST AND THE MAPPER:
shared the same vertical band, so any long artist name slid under the mapper's — neither could give way, because neither knew the other existed ⇒ one row per fact, each in its own band - A ROW WITH NOTHING TO SAY:
left a hole where a fixed position used to be ⇒ switches off and the group takes the space back - THE TYPEFACE:
Unity's factory font, which drew Japanese titles as boxes ⇒ Inter, falling back to Noto CJK — the same decision the pause card already made - ATTEMPTS: ⇒ counted per difficulty, on the card itself, from the second try onward
And the round after that

- THE RETRY CARD:
fired before the curtain finished lifting, so all 1.2 s of it could play out behind the black ⇒ fired on the first line that runs with the curtain gone — measured live at alpha 1.00 against a curtain at 0.00 - THE TITLE ANIMATION:
90% closed a third of the way in, so it was over before it was opaque ⇒ short fade, long close — the letters are still three quarters apart when the title becomes readable - THE ATTEMPT NUMBER: ⇒ on the pause card too, under the credits, in the same amber, hidden on the first try
- YOUR OWN AVATAR IN THE RANKING:
the one face a player is sure to look for was the only one drawn wrong — your row came back empty from the server and fell to the default icon ⇒ drawn from your own session, which had it all along - “PRESS TAB TO HIDE THIS MENU”:
the factory font autoscaling from 4 to 32, under a list stretched over the whole panel and drawn after it ⇒ Inter at 18, grey, and on top
SETTINGS, REBUILT
The screen the game shipped with was a 1,316-line asset somebody else wrote.

- RESOLUTION AND REFRESH:
one arrow stepper over a merged list, so size and Hz were a single decision ⇒ two dropdowns, sizes deduplicated and sorted large to small — so the first thing you see is 1920 × 1080, not 640 × 480 - THE REFRESH RATE:
shown, saved, and thrown away when applied ⇒ actually applied - WHAT GETS SAVED:
a row index, which expires the moment you change monitor — a saved index of 176 against a list of 20 entries crashed the game on launch ⇒ width, height and rate, by value - IF THE SAVED MODE IS GONE:
fell to index 0, the smallest resolution — first launch at 640×480 ⇒ falls to the nearest available mode, with a 15-second confirmation that reverts itself - WINDOW MODE:
a yes/no toggle whose first click did nothing ⇒ three real modes — exclusive, borderless and windowed - THE AUDIO TAB:
existed and was completely empty, with the volumes over in General ⇒ the volumes, read as percentages — 78% instead of −17.5 dB - TWO WINDOWS:
Settings and Customize, with one setting living in both ⇒ one card, seven categories, each with a face of its own, and a search box over all of them - THE LANGUAGE:
a row in General, in between the volumes ⇒ in Display, with the rest of what you see - THE GAMEPLAY TAB:
note speed and note height meant different things in 2D and in 3D, and the panel never said which one it was talking about ⇒ one panel answers to both cameras, and every row says when it applies
The key screen is the playfield

- BINDING KEYS:
a row of grey 200×200 rectangles with a letter underneath, the seventh reading "Semicolon" ⇒ the real lanes with your skin, notes falling in a loop, and the key on each lane lighting the way it does in a run - LANES 6 AND 7:
could not be rebound at all — the listeners were commented out ⇒ rebindable, by clicking the lane - A KEY CLASH:
detected globally, so binding J in Mania 4K collided with the J of Standard 3K/5K ⇒ detected per layout - YOUR KEYS: ⇒ read back on launch
Fourteen layouts, in two questions

- THE LAYOUT PICKER:
fourteen layouts in one flat list ⇒ two families — Mania asks how many lanes; Standard asks for a rhythm count and a melody count, and draws both on the same field - THE PREVIEW:
kept whatever skin it had loaded with ⇒ redraws itself when you change skin
NOTE HEIGHT
Some people want a shorter note. Now they can have one.

- THE SLIDER:
did not exist ⇒ Note height in Settings → Gameplay, 0.20x to 1.50x in steps of 0.05, paired 3D/2D like the speed above it - THE 2D DEFAULT:
the same height as 3D ⇒ 0.70x, thirty per cent shorter. 3D still starts at 1.00x, the height the game always had. - APPLYING IT: ⇒ instantly, on the chart already on screen, with no restart — so you can tune it while looking at the track
- THE NOTE'S GLOW:
drawn unscaled, so at 0.70x the halo spilled out above and below ⇒ follows the setting, vertically only
A NEAR MISS COSTS ONE NOTE, NOT THREE
The miss was right. What happened after it was not.
A press between 125 and 175 ms out is a miss — that part is correct, and it is what osu!mania does with the gap between its last scoring window and its miss window. What it did not do was retire the note.
- THE LANE AFTER A NEAR MISS:
stayed dead until the note was overdue by min(gap to the next note, 175) ms — about 345 ms after a press 170 ms early ⇒ the counter moves on the press, the same way a hit moves it, so the next note in that lane answers immediately - WHAT THAT COST YOU:
on a sixteenth stream at 180 BPM one mistimed key also swallowed the two or three notes behind it — forty health off a bar of a hundred and fifty, for a single press ⇒ one press, one note - A PRESS FURTHER OUT THAN 175 MS: still ignored, exactly as it always was
THE HEALTH BAR REMEMBERS THE HIT
The red block behind your health was always there. You had just never seen it.


The same hit — 45 damage out of 150 health — one frame later on top, a third of a second later underneath.
- RED ON SCREEN AFTER LOSING 30% OF YOUR HEALTH:
0.3% of the bar ⇒ the whole block, held still - THE WHITE BAR FALLING:
0.50 s at one flat speed ⇒ 0.30 s, out-quad — it leaves with the hit and settles - THE RED HOLDING:
0.50 s counted from the hit, which is exactly how long the white took to arrive — so it was zero ⇒ 0.45 s counted from where the white lands, restarted by every new hit, so a burst of misses reads as one block of damage instead of erasing itself - GIVING IT BACK:
1.25 s at one flat speed ⇒ 0.55 s, in-quad — slow first, so the block is still legible on its way out - DYING MID-ANIMATION:
the red froze wherever it had got to, over an empty bar, for the whole defeat screen ⇒ both bars land at zero - THE RED ON A NOTE YOU HIT:
healing snapped the red straight to the new value while the white bar still took 0.30 s to get there, so a red edge reappeared and ran on every note you hit ⇒ only damage can put the red ahead — healing drags it up with the white bar, a frame at a time, never past where the white already is - THE TWO BARS:
were not drawn the same length ⇒ they are - NEITHER BAR LANDED ON ITS VALUE:
the loop ended on a frame boundary and left a remainder, so the bar drifted from the health it reports, one hit at a time ⇒ both set the final value explicitly
THE GAME SPEAKS FIFTEEN LANGUAGES
The site has spoken seventeen since 2.1.0. The game spoke two — and its picker had been disconnected from the translation engine since All Settings Pro was retired.

- LANGUAGES:
two, English and Spanish ⇒ fifteen, each with its flag and its own name — never translated, because somebody hunting for 日本語 is looking for 日本語 - PICKING ONE:
wrote a key and changed nothing until the next launch ⇒ changes the screen - THE LIST: the site's list in the site's order — Latin, then Cyrillic, then the Asian scripts
BEATMAPS HAVE A COMMENT SECTION
The page was read-only. You could see that 9,128 people had played a set and had nowhere to say anything about it.

- COMMENTS:
no table, no endpoint, nothing ⇒ threads one reply deep, with emoji reactions, on the set - WITHOUT AN ACCOUNT: you read all of it — the reaction pills are counts and the composer is the way in
- DELETING: soft, by the author or a moderator, and a deleted comment with live replies stays as a headstone so the thread still reads
- THE PAGE:
header and leaderboard ⇒ difficulties as a strip, the board across two thirds, the conversation down the right — and a wide screen is finally allowed to be wide

- VOTING FROM THE SITE:
the game already wrote to the ratings table, but the site had no door ⇒ like and dislike over the leaderboard, on the difficulty you are looking at, and it shows up inside the game - YOUR OWN VOTE:
nothing said which difficulties you had rated ⇒ marked on every difficulty row - THE COUNT: on the beatmap header, in the listing, and in the downloads panel inside the game. A set with no conversation draws nothing, not a zero.
REPORT WHAT IS WRONG
Everything used to go through Discord.

- WHAT YOU CAN REPORT:
nothing ⇒ a set, a difficulty, a run or an account, from the page where you see it - THE REASONS change with the thing: copyright, low quality, broken audio, wrong metadata and duplicates for a set; cheating and impossible scores for a run; hacking, names, avatars, harassment and spam for an account
- ON A BEATMAP PAGE the dialog asks first whether you mean the set or the chart you are looking at
- LIMITS: one every thirty seconds, twenty a day, one report per thing per account — and you cannot report your own
YOUR GRADES ARE FILTERS

- THE GRADES PANEL:
seven numbers and nothing to press ⇒ seven buttons; press the S and you get all 87 maps with that letter - WHAT YOU GET:
only the plays that happened to fall inside one board's top hundred ⇒ one row per chart across everything you finished, so a lone SSS or an off-board key count finally has somewhere to appear - A GRADE WITH ZERO:
clickable into an empty list ⇒ disabled, because a zero is not a control - FILTERED ROWS carry no position and no weight — a grade is a catalogue, not a slice of the ranking
HOW MANY PLAYS ACTUALLY FINISH

- EVERY DIFFICULTY CHIP:
name, stars, BPM, length and notes ⇒ a third row with a bar and the percentage of plays that reach the end - WHY IT IS THERE: stars sort charts by difficulty; this says how hard that difficulty turns out to be for the people actually playing it. 34% on a 4K EZ means something next to 18% on the same set's 7K.
- HOVERING shows the two numbers behind the bar — 1,859 of 5,413
- A CHART NOBODY HAS PLAYED:
would print 0% ⇒ prints nothing, because a rate needs a denominator
BUGFIXES
- The restart key no longer counts stray taps toward a restart nobody asked for.
- The results screen waits for the server's pp instead of counting up to the wrong number.
- A board shows the run it actually ranks, not whichever tied row came back first.
- Ranking movement arrows are drawn against a week ago, not against yesterday.
- The game stopped assuming a set's audio is always an mp3.
- The link listener is let go when the game closes.
- The music player finds a song by either of its names.
- The player bar lights on the beat, and a set row shows its tempo.
- Song selection loads the covers the scroll is showing, not the ones around the selection.
- Discord says which beatmap you are playing.
- A beatmap page no longer opens on "beatmap not found" for a moment — it plays a loading animation and then loads properly.
- The activity graph's hover points at the day under the cursor, and the day that has not finished yet is no longer drawn.
- The site finds a beatmap by the name the game shows.
SEE YOU ON THE PLAYFIELD
Found something broken, or want to tell us what to build next? We read everything — and now you can report it from the page it is on.
Join the Lynium Discord
lyniumgame.com