Developer postOriginal post (opens in a new tab)

Holodance V0.7.6: Browser-Polishing and Timing-Fixes (especially with Sliders)

I'm still recovering from a fairly nasty flu - but this version now has so many bugfixes that I felt it's best to put it on the default branch. Those are the changes from three alphas (V0.7.6a1, V0.7.6a2, V0.7.6a3).

In case you're having trouble with this release that you didn't have with the previous release, you can always use the "previous" branch to revert to V0.7.5 - but be sure to let us know about it on the forums.

Here's the full list of changes since the last release to the default branch:

  • Added statistics (how many songs, beatmaps and so on) to the text field while browsing alphabet and songs lists
  • Add a new grouping: Tags. This is very powerful when you have large libraries ... or when you're browsing all songs that for which beatmaps exist (coming soon ;-) ).
  • We're now doing testing with a "full" osu library: almost 12,000 songs, 30,000 beatmaps (osu! shows 45870 beatmaps, still investigating what makes the difference). Some of the sorting / filtering procedures take way too long.
  • Changed the fonts to provide a lot more characters which should help with unicode artists and song titles
  • With huge libraries, we got some rather severe hiccups when changing the filters (Holodance getting "stuck" for several seconds, throwing you out of the game and into the compositor). We're now handling such longer term operations outside of the main thread, like we already did it with file operations. That way, you should have stable framerates in VR, even when you have to wait for a moment until you get the filtered results.
  • Significantly reduced allocations caused by osu! filebrowser. This can still be further optimized but at least this was a big step.
  • UI Audio: Widgets that are not interactable should not trigger sounds on hover and other events. They did. But not anymore.
  • I've just seen a bug that caused the folder path detection from the osu! installation to always fail. Fixed ... and feeling very sorry that I never saw this before!
  • Optimization: When we don't have any filters active, i.e. we're looking at the full library, running through the filter takes a lot of time (~150ms) and doesn't have much benefit (we do always filter out "broken" beatmaps, so there is a bit of filtering that we lose if we don't apply a filter). In this case, we don't run the filter logic at all now. Another benefit: If you disable all filters (Game types and difficulty), you will now see beatmaps that were excluded because they were causing errors.
  • Fixed bug when grouping was disabled and we had no songs (because of filter settings) which resulted in an exception being thrown and an old list being displayed instead of the refresh buttons.
  • Optimization: We're now building the full list of tags only the first time, until the number of songs in the library changes. This operation took 15+ seconds and now only happens one time (and again when you add / remove songs to your library). This turned the tag-grouping from "not usable" to quite usable.
  • Added new grouping by genre. Originally, I thought tags would be sufficient but there's 5000+ tags even after some filtering / optimizing (the full osu library has almost 20K tags and that doesn't even include the single-char or other obviously useless tags). We now have a list of only 27 genres. This is not perfect because our genres are based on the tagging of the osu beatmaps which is far from reliable or great. But it's good enough to find some interesting songs based on the genres.
  • Pause-Menu: Renamed "Restart Level" to "Cancel Session", which makes more sense. "Cancel to Menu" is now called "Main Menu".
  • Added cleaned up title and artist for sorting and grouping. Also, for sorting/grouping we now always use the ascii titles because that makes the sorting / grouping much easier to navigate. We have Unicode artists and titles stored separately now and will add an option to use those in the lists instead. (edited)
  • Finally fixed a bug that made 15000 of the 45000 beatmaps in the full library disappear when synchronizing with osu!.db. This happened because many of the beatmaps don't have beatmapID set, and then those beatmaps would collide and overwrite each other.
  • Fixed framedrops that occurred when using the Refresh from Cache / Rescan Songs Folder buttons (probably only when having the songs on a file share because that's what took a little long).
  • Fixed several other issues concerning beatmapIds and beatmapSetIds, which unfortunately are often not set in older beatmaps.
  • Fix for the issue where sliders were too long; cause was that the correct timing point was not used when the slider and the timing point occurred exactly at the same time (this is a bit unusual but does happen frequently when timing points change a lot, like almost one new timing point for each new slider). Now this case also works.
  • Fixed "zero-length sliders", a phenomenon that occurred in old beatmaps where sliders appeared as a kind of "double-orb" instead of having an actual slider path. This was caused by timing points not having the correct flag indicating that they were "not inherited" and therefore being incorrectly used as "inherited" timing points. That threw off quite a bit of logic - but not anymore.
  • Timing points indicating tempo changes should now be used correctly. We are now also using the offset defined by timing points which should fix issues with asynchronous light effects (in the clubbing environment) as well as issues with the automatic camera switching (in Streamer Mode). Finally, Slider ticks should now be correct (and also start with the first Slider tick instead of starting with the second one).