published 05 Jun 2017

It has only been a week, but it feels like a year since my last post!

A lot of progress has been made, even though I personally feel less productive then usual – I’ve been spending a lot of my own time getting everything in place for the Anime Expo 2017 event space we are going to run.

There’s a crapload involved to make an event run smoothly, quite a lot of which is falling on me to make happen! I hope to write up the journey of getting things prepared once the storm passes, but for now let’s continue with the development theme.

Since it has been exactly one week since the last post, I can include some overview stats and drill down on a per project level


Channel listing display

You can now view and join channels by clicking the new ‘+’ button on the chat overlay. Noe that they aren’t yet restored when you open the game again!

Also, loading channels for the first time should be a much smoother experience as it is now done asynchronously.

Thanks to DrabWeb and Jorolf (reviewed by me).

Raw Input and Cursor Sensitivity

This relies heavily on the framework changes found here.

As with stable, sensitivity adjustments are only available if raw input is turned on. We have tested this implementation on both Windows 10 and macOS Sierra to successfully bypass OS mouse acceleration and provide accurate positioning data.

Note that this may not work correctly for tablets or other absolute-position pointing peripherals. Support for such devices will be added soon, along with per-device configuration and toggling.

Implemented by me (reviewed by Tom and smoogipooo).

Triangles optimised a further 15%

Gains another ~15% of overall performance in song select for me. Remaining overhead of triangles is around 5% on update and 15% on draw (likely due to fill and not due to CPU overhead), measured by disabling generation of triangles.

Thanks Tom (reviewed by me).

“Daycore” mod added

Think nightcore, but for half-time.

Thanks to Shawdooow (reviewed by smoogipooo).

Improved tooltips

Tooltips have been moved to the framework so other projects can use them. There have also been a few improvements:

  • They now avoid the mouse cursor better than before.
  • They move even more smoothly in osu!.
  • They handle screen boundaries better.

Here’s an example of a scenario where you can see a lot of this magic happening:

Never-repeat random for song select

The new default random mode for song select is to never visit the same beatmap twice until all beatmaps have been exhausted. Of course, along with everything else in lazer, this is still customisable if you prefer true random!

Other stuff

  • Fixed some textures rendering incorrectly on linux/macOS (missing sRGB colour profiles) #903.
  • The skeleton for the replay settings overlay was completed by Evast. As it doesn’t have any functionality yet, let’s leave its reveal for a later post #785.
  • Increase timeout in TestImportOverIPC #887.
  • Allow for variables in storyboards #866.
  • Fix user dropdown menu item chevron alignment #886.


Most of the framework changes were already covered above, but allow me to mention a few that we skipped over.

Event-based input handling

While raw input was also added (and discussed above), I also took the opportunity to change non-raw mouse and keyboard input to use events rather than poll. The benefits of this are likely minimal (slightly lower CPU usage and maybe ~0.5ms improvement in latency), but it’s still a step forward.

Work was done by me and reviewed by smoogipooo.

Focus rewrite

In a combined effort between myself and Tom, we revisited input focus, rewriting it in a way we could both agree on. Until now, while focus has worked correctly it has been a complicated system to describe. Now we have a very succint implementation that should match what you’d expect from an operating system.

It’s still a bit complex to explain in this section, but I’m sure we will revisit it sometime in the future.

Other stuff

  • Scrollbars were slightly improved visually, adding padding and switching the blending mode so they fit better in different background scenarios #767.

Try it yourself

2017.605.0 is now available from github releases (or via auto-update if you already have lazer installed)! Keep in mind that this is still very much an alpha release. We do not offer support for it just yet!