published 13 Nov 2015

And so ends another week. Yesterday’s performance gains were so good that I had to push out a new stable release. While we most definitely haven’t solved 100% of frame stuttering, I feel like we are gradually gaining and understanding of how this is happening and should be able to eliminate it completely in the near future. Let’s just say at the end of the day it may have nothing to do with OpenGL itself (but rather the implmentation of SwapBuffer on different manufacturers’ drivers).

How are you guys finding the latest update?

Today I also finished the last stage of the build propagation graph: it now shows individual stable builds rather than clumping them all together. The graph will now be a lot smoother to look at, and will show the gradual switching of users from one version to another, rather than a sudden drop each time there’s a new release.

OWC Round Of 16 happening this Sunday, so we’ve been busy preparing and stabilising the streaming setup. It looks like we’ve been able to find the cause of the problems last weekend, so things should be a lot nicer to watch this time :).

I’ll likely be merging some more osu!web changes in this weekend (specifically affecting the forum design) so keep a watch over there too!



published 12 Nov 2015

Went a few days without blogs. Sorry about that!

Performance Issues

I’ve been working long and hard with anyone still experiencing performance issues in the new osu! releases, and don’t plan on stopping until every last person is happy. Finally we’re making some good forwards progress with this, too!

  • Fixed a number of thread scheduling issues.
  • Moved all threads created in osu! to pools to avoid thread creation overhead.
  • Reduced overall GL call count per frame.
  • Removed all redundant GL calls (state changes where not needed etc.).
  • Removed all deprecated GL calls.
  • Improved texture colour conversion performance (should help with videos).
  • Made changes to net code to (hopefully) fix all remaining cross-thread contention issues.
  • Improved messaging in options when compatibility mode is being used.
  • Added a multitude of debug toggles to cutting edge so users can help us test various scenarios.

Plenty of breaking fun along the way!


We also released osu! World Cup profile banners over the weekend, which have been met with astounding enthusiasm! Thanks to everyone who is supporting this effort; it helps us make sure we can provide the best tournament experience and also give back to the best players out there. I’ll be releasing stats on the banner sales, including a ranking of which countries got the most financial support a bit later on!

We did have some issues with streaming matches due to a weird bug which surfaced causing osu! and OBS to crash in one huge mess. We’re working on a fix for this, and also ensuring we have dedicated streaming hardware from this weekend onwards. Make sure to tune in again this weekend :).

Made it to the 10th year anniversary live of Chatmonchy yesterday. Was an amazing concert! Ended with heart-shaped paper planes raining from the skies!



published 06 Nov 2015

  • Pushed a few further fixes to cutting-edge for stuttering. Still tracking down some of the more common causes (a bit hard to pinpoint them!).
  • Adjusted the new combined Unlimited FPS setting to be more friendly to users who want to stay in unlimited fps throughout gameplay. Now maintains unlimited throughout breaks and intro time (and also for replays).
  • Busy with OWC preparations. Hopefully we’ll have something to surprise you guys with tomorrow! Hope you guys are hyped for the tournament; it’s gonna be the biggest ever!

Replaced my key caps recently, so enjoy some photos of my custom layout as a consolation for the short update post!



published 05 Nov 2015

Dedicated a good portion of today continuing performance debugging with testers. Made some forward progress and fixed stuttering caused by texture creation that was previously happening far too often when sliders are being displayed (and created some weird ghost sliders in the process – will be fixed tomorrow!).

Also continued improving performance.log output, which now contains relatively accurate call stacks when a spike is detected! This is basically the gold-mine for debugging performance issues, so I was thrilled to get it working. Also added many new stats and switches which may help us help you fix your performance issues.

I’ve already asked many times, but make sure to share your performance.log whenever reporting stuttering issues. It is of incredible value. Note that it’s still only available on cutting-edge (and even going forward, will not be available on stable releases due to the slight overhead incurred).

Yes, today continue in a chain of boring blog updates. I’m making a lot of important forward progress, though! Don’t forget OWC is starting this weekend, too!



published 04 Nov 2015

Another day dedicated to fixing performance regressions on stable40. Spent quite a few hours debugging with users, but after making little progress began to work on more visibility of diagnostic information when a stutter frame is encountered.

Since quite a few builds ago, the Cutting-Edge stream has had a performance.log file (along with many other varieties of logs found in the new “Logs” folder – how appropriate!). As of the latest release, each time a dropped frame is detected (indicated by a little square next to the FPS counter), a decent amount of statistics will be dumped to this file.

The FPS meter is quite liberal with what it considers dropped frames, so this file may get a bit busy over time. Fortunately, the format is quite easy to process and is fully timestamped.

If you are one of those people still encountering stuttering frame-rates on the new releases, now more than ever before can you give us what we need to help solve your problems. Note that this implementation isn’t complete yet; more statistics will be added over the coming days.

We are also building up a fairly comprehensive knowledge base of what hardware, software and drivers can possibly cause issues with osu!. Going forward, I hope to have osu! detect apps running which can negatively impact performance and alert the user.

While we have some very helpful people on public slack helping with testing (special thanks to DPL for his time), we could always do with more! Get on over and watch or participate!