Had to catch up on administative/accounting tasks today, but still managed to attack a part of the draw hierarchy code reform (and completely drained my brain of any extra energy in the process). Also spent some time following up the next incoming shipment of tablets, which was delayed a few days and has therefore required rescheduling at our end.

So what is this “Draw hierarchy” thing I keep mentioning? Let me try and sum it up in a way that’s easy to understand:

Until now, to sprites in osu!, you add them to a SpriteManager . This SpriteManager contains some global information like their offset position on screen (to allow for scrolling views and such), but the sprites themselves contain what we call “field” information. A sprite’s field determines what coordinate system is used for the mapping of position and scale of a sprite from input (code) to output (screen).

While this is relatively felxible, there are some very large shortcomings which I already addressed in osu!stream (which was a rewrite from scratch), namely that SpriteManager s can only contain Drawable objects, but SpriteManager s are not Drawable themselves. Fixing this is the main goal of the current restructure. It means we can move a lot of the complex calculations out of the Sprite level and also allow for more easily grouping many sprites together (think groups inside groups).

It’s an ongoing effort, and while I am working on it I’ll likely have little interesting to talk about since it’s REALLY mundane and complex stuff (if you aren’t completely familiar with the internals of osu!, reading me rant about it will mean nothing). For that reason I’m not even sure if it’s worth streaming coding this week, since I question the value of it as a form of entertainment. Let me know your thoughts.

I leave you with the most broken view of osu! you have ever seen: