published 07 Jul 2015

Today I started to tackle the few remaining areas where our new draw hierarchy was still failing: input and options. In the process, I learnt that osu! currently has almost 400 different unique options in the options menu. That’s quite a lot.

The current options menu is probably also the most advanced UI system in the whole of osu!. How do you guys like it? Are you making use of the search-anything functionality it offers? Do the tabs serve their purpose in allowing quick access to specific options groups?

We we are finally approaching the stage that this branch can be merged into master and pushed to cutting-edge for public testing! All that remains to fix are some gameplay issues (resizing of sprites based on active mods, flashlight overlays, sliders).

This turned out to be quite a huge project, but is a necessary evil to fix before open-source is considered (not to mention a prerequisite for osu!next design implementations!).

I’d show you more videos of breakage, but everything is working as expected ;).



published 06 Jul 2015

Between continued work on fixing the remaining issues with the new draw hierachy and working through behind-the-scenes maintenance tasks, I find myself pretty tired by the end of a day. Then I realise I haven’t written a blog post yet!

I guess I’ll share with you what I got done today in a very raw fashion for a change! Enjoy some git logs :).

Hope everyone is having a productive start to the week. Here’s my current background music of choice: some amazing new age piano I came across while working from a cafe. Been enjoying some quieter music recently; I may have worn my ears out overdosing on Zedd over the last couple of months ^^;.


20150705 /answers-4/

published 05 Jul 2015

Happy 4th of July to those Americans out there! I learnt this was a special day yesterday while enjoying a pretty amazing ‘murican bbq burger. On with this week’s batch of questions!

@ppy although it’s irrelative but did you think of co-opperating with konami ? –alexle41

Unless I was looking to get osu! into arcades, I can’t see a reason to (not sure they’d be interested anyway; they have plenty of games already).

@ppy Any plans on adding "hold notes"? –ProxyPvP

@ppy Will we see hold notes any time soon? –001thefish

Yeah, this is relatively high on my priorities. Pretty easy to implement too. Not sure if I want to hold off until the new skin design though.

@ppy why did you choose rhythm game to progamm? –orangekmc

Why not? I worked on other projects, but this one attracted people so I stuck with it.

@ppy Which forum engine did you use for the new forums? I recall the old ones were based on phpBB. –BerriUQAM1

It’s a new engine codenamed dinoBB. We are writing it from scratch.

@ppy Interesting! What challenges did you face while designing it? –BerriUQAM1

Will be covering that in a future blog post!

@ppy are you considering developing methods to protect against spin hackers who don’t spin in a clean circle? (most) –aerouk_

What makes you think we don’t already have countermeasures?

@ppy Are you going to implement an update button for all diffs simultaneously in one map? It’s so anoying to update every dif individual :p –SlipKo0oRn

That process will completely change in the coming future, yes.

@ppy Could you give an estimate as to when teams will be implemented? –xasuma

@ppy Hey! When will teams/clans appear in osu ? :o –Erodote

Nope. But we are making rapid progress with the new web (which is a prereq. for teams)!

@ppy Are you going to make the cheapest store purchases to be bought by another way than paypal ? (Just like supporter) Sorry for my english –Nekomi_osu

That’s coming in the near future, yes.

@ppy did you intend or expect osu! to become as anime/Japanese centric as it is today? –Ubercakez

@ppy are you okay with osu! being filled with mostly Japanese songs? Or was it your intention from the beginning? –piruchan_

People make osu! what they want it. I have no issues.

@ppy is DT patch for mania coming out soon ;o? –arrtamarrta


@ppy Any chance to see a ctb editor or a banana counter? –Svper_san

This has already been designed, but not yet implemented.

@ppy 公式にうんこっていわれたんですがそれは –ps00m


@ppy Do you think you’ll reach the point where you have to say: "Im done with Osu! I cant make it better now."? –SimonImboden

Never. Not in my lifetime, anyway.

@ppy Why do you have to click a couple ms before slider end, in addition to start circle, every tick and the end itself, in order to SS it? –YaLTeRz

Because that’s when it judges you? It would be pretty silly if you only had to click the start (why even have sliders?).

@ppy What is your best piece of advice to write proper and clean object-oriented code? How do you know, whats the best way 2 abstract things? –ren3_14159

Best advice is to keep improving, and always take heed from others; they probably know better than you :).

@Ppy is a doublepostmerge going to implemented aswell?(forum) –Miterosan

Interesting concept. Not sure if it’ll happen. That said, deleting the second post and manually merging is pretty snappy with the new forum engine already.

@ppy will you make it possible the scroll to the middle of a long post it jizz? –Miterosan

As in a permalink? Probably not.

@ppy how much emails per day do you get? –Miterosan

Between 20 and 100 that I actually read (after filtering).

@ppy skype or teamspeak? –Miterosan

I don’t really use either, but Skype is the better software IMO.

@ppy \me sees the empty rep on github ….. …. will the changelog (history of commits) uploaded too? –Miterosan

I presume you mean for the osu! client after open-source. If that’s the case, no, there will not be history. It would be too much effort to clean out history for public consumption.

@ppy What did you use for the ui of osu? (wpf or a certain render engine) –OlivarusK

It’s pretty much a custom engine from ground-up, running on DirectX / OpenGL.

@ppy why is there a questionmark behind the 2015 in the trailer? –Miterosan

Because I asked flyte to add it to throw you off. And because nothing in life is certain.

@ppy when do you check your emails? –Miterosan

As they arrive.

@ppy how does the legal issues report system work? –Miterosan

We comply to standard DMCA procedures.

@ppy can a mouse player be as good as a tablet player? –Dood13332


@ppy Favourite tv series/anime? –Hebryswag

Kodomo no Omocha.

@ppy just wanted to say I’m actually pretty hype you’re open sourcing osu! can’t wait to check it out –rrisx

I can’t wait to share it with you!

@ppy What kind of things do you do in your spare time? If you even have spare time… ;) –samahx

Sleep, drink beer, ride my bike around Tokyo.

@ppy What do you think about the increased centralization of computing and data storage through services like AWS and DigitalOcean? –Ameobea10

I was strongly against it until a couple of years ago. Now it’s basically all I use. You learn over the years that managing your hardware is definitely not worth the headache of failures, dealing with remote-hands when something goes wrong, upgrades etc.

The only remaining reason not to use virtualised computing is the cost overhead. As long as you are willing to pay, it’s by far the superior option.

@ppy Not a question, but thanks for keeping up with Osu! and its community <;3 –NabsTheCracker

You my sir, are most welcome.

@ppy How can players in general become a part of the staff? Do you have certain rules and whatever on who you select to be a mod? –TheBigWhite__

Bsaically stand out from the masses. Do stuff that improves osu! as a whole. Don’t ask to be staff, but pretend you are, and help out in any way possible.

@ppy Will my question be answered? –osu_poseidon

I think so? Did I miss it?

reading old osu#pt posts… @ppy’s internal nick used to be pepsi. –901117

That it was, in certain parts of the community. Not sure where it came from, but I do enjoy a pepsi (but not that artificially sweetened crap).

@ppy ever thought about supporter giveaways once in a while? –JahinPromit

I’m not against it, but it does go against the principle of supporter tags actually supporting the game.

@ppy could you dedicate a blog post to describing in general your class hierarchy in osu! ? –Sharamall

Sure, I’ll try and get to that (although it’s still a bit messy!).

@ppy What is the fabric the osu! shirts are made from? My skin is sensitive ;-; –parkjisooosu

Pure cotton.

@ppy Will any new mod appear in Osu Next? –Ornsteins_Gate

Possibly! Who knows :).

@ppy what’s your favorite chat text replacement? (Curse words, ^, etc) –iotku


@ppy what has your work on osu! taught you about game development in general? –mcpowr

I still don’t really consider what I do game development. It seems so different from what other people that develop games focus on. I’ve been to many an independent game developer event and the focus is usually on story, game mechanics, monetisation etc.

osu! is a pretty specialised game, and most of the work I do on it is less game developement and more online community management / systems to support the central game.

@ppy when do you think osu clans/teams will come out ? –Kisetsunotori

This year, for sure.

@ppy what challenges did you face when you first started developing games? –simonpls

I can’t remember any. Challenges come up every day, so it’s nothing special. Just work through them and overcome them.

@ppy Do you like waffles ? (serious question) –SkyMoonson

I’m not a huge eater, and waffles are usually quite thick/heavy. I won’t decline a light waffle with some fresh cream, though.

@ppy What’s the approx order of feature developing after the graphical (both internal and UI) overhaul? –RomanSandu

Haven’t thought that far ahead. Will figure that out as we go.

@ppy Are there going to be more leaderboard countings like the coins from April fools. –XGennLABs

That could be a possibility, if coins are brought back.

@ppy Any update on the new ui overhaul I saw teased not too long ago. –DekarianOsu

@ppy is there news about new a game mode ? –Anolj

Updates will be posted to this blog as they come.

@ppy Favorite place to ask/search something up when you don’t know something? (coding-wise) –Yoshiap1

google (which usually leads to stackoverflow).

@ppy are there any plans on the horizon to give osu! more exposure outside of word of mouth/whoever streams it on twitch? –H4ppySt1ck

Nope. You are free to do so, though.

@ppy Why the BAT and the MAT were removed if after all, the QAT and the BNs works as the same way than them. I don’t get the idea. –okuuloid

Just had to change the name so we could change the size of the groups, and slightly alter their purpose.

@ppy In which language do you program Osu! ? btw thanks for the awesome game ^-^ –IgnitionZer0

c#, php.

@ppy 今度の土曜日は何曜日ですか?:D –megatencho


@ppy Are there any plans for unranked leaderboards in the works? –JeeZeh

May happen at some point.

@ppy What do you think about making a mapping helper in game ? Like patern example, advices… –Oreemo_osu

Sounds cool if done correctly. Like an extension to the existing AiMod system.

@ppy Do you have any plans on allowing multiple scores per map? If you are, when about will it be implemented? –zargotlewl

There’s a few areas that need some overhauling before this can go live, even though most of the infrastructure already supports this.

@ppy will there be more osu! Keyboards? –NepXUni

Yes. We are working on the next version with several improvements. No ETA yet, but it’s in progress.

Until tomorrow, signing out!



published 03 Jul 2015

Thanks to everyone for their questions on twitter today; some fun ones in there! I will be going through them tomorrow over some drinks and posting tomorrow evening (my time), but I don’t come empty-handed! Here’s one amusing example of how the new hierachical sprite system can be used to achieve previously impossible results.

Note that while rotating and scaling excessively, the main menu still performs (and handles input) how it should. Pretty fun stuff! Now we are officially on-par with osu!stream flexibility, as I explained yesterday.

Hope you’ve already checked out flyte’s latest, with a reveal of the new hitcircle design.

Have a great Friday. More at you tomorrow!


20150702 /nesting/

published 02 Jul 2015

In order to explain what we are currently doing to the osu! graphics framework, I’d like you guys to take a look at the osu!stream UI. A lot of you are probably not familiar with this iOS-only release, but I wrote it from scratch several years ago, fixing all (most of?) the mistakes I made in the PC version you are used to.

Pay special attention to the movement of groups of sprites and interface elements on the screen. Although this video isn’t 60fps nor super high-quality (sorry, couldn’t capture it nicely in a quick moment), you should be able to notice the vibrance of the tweens, which react in a way you haven’t seen yet on the PC version of osu!.

Observe how the main menu is transformed on an overall level as well as an individual per-item level; how the header and footer in song select smoothly disappear off-screen (and back on); how bounces feel… more bouncy! Honestly, osu!stream feels so much more polished than osu! (everyone in the office today agreed) even though so much less time and effort was put into it over the years.

This is what the goal of the current framework changes is. In short, the ability to have nested “drawables”. A drawable can be anything from a sprite, to a primitive, to a collection of many more drawables. Each drawable can have Position, Scale, Rotation, Colour and Clipping applied to it. As you’d expect, these transforms will apply to all children drawables, which can lead to very dynamic movement of elements on the screen.

So you may then ask: what have we been doing until now in osu!? In the most basic terms, drawables could not be nested. A SpriteManager could contain many drawables, but that’s the end of the chain. So for elements like osu!direct, Online Users, song select panels etc., the movement of groups of sprites that are related to each other has been a bit clunky and cumbersome.

There are a few more intricacies to what the current changes we are working on are changing (and fixing), but trying to explain them without going into amazingly minute detail would be quite hard. Maybe we can do that another day, if you are so inclined :).

Making these framework changes are both imperative to implementing the osu!next design and also to open-sourcing the osu! code-base. Because there’s no way I would want to expose the masses to the current state of the code!