published 18 Jun 2015

Good morning! I managed to code myself to sleep, and thus am posting today’s entry roughly 4 hours late. How did we fare yesterday?

  • The new username change system is now completely live. Getting it to support free purchases is a bit convoluted for the moment: because there’s no paypal transaction involved, the paypal callback (where the actual username change happens) couldn’t be easily called. Wouldn’t be a problem if the callback logic was already in the new osu!web, but it isn’t ready to be moved yet. Thus I am using a bit of a hack to skip the paypal checkout but still call the callback directly from the new osu!web (it’s secure, but still hacky).
  • Put some time into OS X compatibility with nekodex. Trying to get packaging working well with the new .NET 4 / GL release. For those interested, things are already running pretty much perfectly, but there’s still quite a bit of work to be done on getting it into a distributable (and automatically-updating) package.
  • We converted all the javascript in the new osu!web to coffeescript, so I spent some time learning it (most of that time was me attempting to adjust to two-space-tabs, which I’m still not done with). Mmm, now I want some coffee…

Thanks to everybody using the new username change page! Has been under pretty large initial demand (sometimes in weird ways, thought I foresee that decreasing as those of you that were waiting for their second name change for years finish making use of it. As the new system is now live for all cases, I will begin redirecting to it for all username changes from today onwards.

Oh, and now would be a good time to mention that we also changed the inactive username calculation method. New formula is (0.5 + play_count / 500) years from last login. For a user with a play-count (combined over all modes) of 680, you’d have to wait 1.86 years – or 678 days – from their last login. This replaces the old rules, where users must have had a fixed combined play-count under 500. Should allow for some of the manual requests for usernames on-the-verge of being inactive to be automated.

Tomorrow (later today) I want to do a comprehensive write-up on the current situation of the GL release (cutting-edge and beta); where we are and where we want to be. The short answer is that we are still quite far away from being able to release it, but it’s safe to say it’s in a better shape than ever before.



published 17 Jun 2015

I think going forward, the hardest part of doing these daily posts is going to be coming up with a unique word for the title. Maybe I’ll stop, or just skip today because I got nothin’!

Another long day of dev. I really look forward to days I can code, so for me this is the best kind of day.

What’s new?

  • I spent half the day tidying up some of our admin interfaces and internal systems, adding new features people that help out have been requesting for a while. While I can’t go into the specifics, let’s say that it makes their jobs easier when dealing with the heavy workload of keeping the peace in osu!.
  • Letterbox mode got some further work put into it. Still ironing out some issues with specific hardware and configurations, so it won’t be on cutting edge just yet, but we’re close.
  • Paid username changes are now live on the store! For now, free changes (first change) are not properly supported, as the store still sends you to paypal to make a payment, but the old name change page still works for this (or you could buy some merch on the side to make it work!). Taking of inactive names is also not available yet, but will be tomorrow.

countries countries countries

Another shortish post today, but let me share a small bonus with you! Here is a look into the kind of detailed stats we track to make sure we know how osu! is being used, and how to best service the community. This page shows a realtime feed of of which countries users are connecting from. The left-hand side is showing cumulative averages for the last 24 hours, while the large graph shows the full running details for the same period. I’ll leave this up for at least a few days; keep it open and it will update automatically as the day goes on :).

Not really going to read into these statistics today, but it’s safe to say that osu! is a very global game!


20150616 /boxed/

published 16 Jun 2015

letterboxed osu!

Another quick update:

  • Finished implementation of the username change system. It’s live on the osu!store but I’m not allow actual changes until some further testing tomorrow morning. Currently doesn’t allow stealing inactive usernames, but that will come with time!
  • Got most of the technical implementation of the coming “Letterbox” setting completed (with some help from trusty Tom94 and smoogipooo). This will allow you to have osu! running full-screen (borderless or exclusive) but only taking up a smaller portion of your screen, centered in the middle. Getting this working actually required quite a bit of work behind the scenes in the departments of RenderTargets, input handling, editor and general resolution change handling.
  • In the process of implementing letterboxing, cleaned up some pretty ugly code.
  • Tracked down some further fixes and improvements for the QAT group user. It will now have a proper post count, as a bonus!
  • Added an interface for admins to store /mp/ link results permanently (for things like world cups).
  • Finished preparations for the next tablet shipment to arrive safely. This is a huge relief.

I’m sure some of you will be asking “why letterbox? i can just run in a window!”. Well, as of Windows 8 it is very hard to disable the Desktop Window Manager. While the DWM helps make your desktop esxperience as smooth as it can be, it hinders windowed games by adding an amount of latency to them (usually around 16ms). By running in exclusive full-screen mode, games can bypass the DWM and run to their full potential.

While full-screen has worked fine until now, there are an increasing number of users upgrading to larger displays, and having issues playing osu! when it runs at such a huge physical size. Letterboxing will allow you to combine the best of both worlds, choosing a smaller game display size but also bypassing the DWM.

We are still figuring out a few kinks, but it should be live tomorrow on cutting-edge for your enjoyment.

Hard to keep up with full-on interesting blog posts at the end of a long day of coding, so please don’t mind the occasional shorter post like this :).


20150615 /catchup/

published 15 Jun 2015

Hey guys! Coming back at you with a quick catch-up post. Things have been quite hectic so I don’t have time for a long post today. Here’s a look into what’s on the plate:

web store out of action

  • Logistics for putting the web store into hibernation for the next month. The team member responsible for shipping all your goodies out is on holiday and there’s no one else around to take over. Scheduling delivery of tablets to storage facilities (the next batch is coming in over the next couple of weeks, so we still have plenty of stock).
  • Placed an order for replacement pens for osu!tablets. This seems to be a point of failure, regularly due to users dropping their pens on hard surfaces. The price of replacement pens on amazon etc. is a bit high, so I am doing a bulk order to offer replacements at a reasonable price.
  • Finished implementing username availability conditions into the new osu!web. Just need to work out the pricing system and do some extensive testing and we should be ready to go live – this week for sure!
  • Reviewed and merged the code behind forum posting on the new osu!web. This is now live for testing, so go check it out if that kind of thing interests you! Feel free to tweet at me if you come across any bugs. Keep in mind we are still working heavily on the user experience of posting, but feedback is still welcome.
  • Added a central QAT identity so individuals are no longer targeted when maps are disqualified. Giving this some testing to see how it affects people’s attitudes towards disqualification (hopefully in a positive way). We should all have a common goal here, after all!
  • Looked into a few different approaches to allow users to run osu1 in exclusive full-screen mode while adjusting the actual display size of osu!. I hope to get something in to cutting edge this week for user testing. This should be the ultimate solution for users wishing for the lowest latency but have massive monitors they are sitting far too close to, forcing them to resort to windowed mode to make their osu! gamefield a usable size.
  • Continued to fix newly discovered issues via the recently added (old) web sentry hook. Adjusting database data types to fix truncation in some text fields, fixing out-of-bounds issues with unsigned numericals etc.
  • Finished migrating high score replay availability to its new home in the database. Added server and client-side support, now live on cutting-edge. You can now watch replays in selected-mod, friend and country scoreboards as long as the replay is in the top 250 global scores for the map. This number will likely increase in the future, too; the important part is that this system is infinitely scalable. Also a surprise new benefit of being supporters can soon be realised with this change. More details will follow :).

I leave you with a photo I took on the weekend at an ajisai (hydrangea) festival I visited. Absolutely amazing colours.


20150612 /answers/

published 12 Jun 2015

I’ve decided to make every friday a Q&A day. I receive quite a few questions via email, and many of them get repeated over and over again. Seems better to get them out there in the public so I can just link people to a post rather than writing up answers for them each time. This week’s questions are from Avishay.

Hey Peppy!

First of all, I want to thank you for writing those blog posts, I (and most likely more people) really enjoy reading them daily. So, before I continue on with the questions, I’ll quickly introduce myself. My name is Avishay, 17 years old, I play / edit maps on osu almost daily, nothing too special. You seem like an interesting & successful person and I want to ask you some stuff, I hope you don’t mind:

How knowledgeable were you when you started working on osu? Knowledgeable of programming, software and such?

When I started work on osu!, I had been working as a software engineer for a couple of years (Java / classic asp / ms sql server). I studied computer science at university, but I can’t say that really taught me too much. Most of my knowledge came from personal projects over the years. From writing text-based games and programs in BASIC back on a Commodore 64 when I was 4-7, to using Klik & Play and The Games Factory during primary school to make slightly more graphical games. Also made a good number of Nintendo game fan sites back in primary school; some of the first you could find on the small internet that existed back them.

I spent a good portion of my high school life working with databases, hacking around with stuff, building PCs both for myself and as a private business, running events involving large network setups, designing dynamic webpages for local businesses using Frontpage/Dreamweaver (they were pretty rare back then!). Ran arguably the biggest Windows XP resources site and forums out there during the year leading up to its release (design is a bit broken in the link).

During the later years of high school and the beginning of university, I ran several Ragnarok Online sites/systems (anonymously) that were integral to the whole game community. One still exists to this day (I passed it over to a good friend). I also played far too much of that game, but learnt the Japanese language while doing so - arguably not a complete waste of time!

Did you have any previous projects that helped you to develop osu? Or did you learn most of what was needed while developing / starting to develop it?

I’d argue that everything I’d done before osu! helped in some way. Running a game like osu! single-handedly requires a vastly broad range of knowledge. Software, hardware, networking, databases, front-end design… you name it. I strive to be able to potentially do everything myself. If I can’t do something, I will sure as hell learn how to. The positive outcome of this is that if I am disappointed with someone else’s working (or they are slacking off) I am able to fill in myself.

Any tips you’d give to younger self when you just started with the project?

Nope. I don’t really think back like that. Forward is the only way :).

Any tips you can give to me? I really love programming and a lot of computer-related stuff and I try to study by my own to increase my knowledge, most likely I won’t be able to develop a successful game like yours by myself in the next few years, so I really want to see how your perspective changed, from back then, when you just started developing osu, compared to now.

Do. Do anything. Make a start. Don’t stop. Don’t sleep. Find a source of infinite motivation.

Thank you for your time, Avishay.

Most welcome, Avishay.

For future Friday posts, I will likely accept questions on twitter the day before. Please don’t spam my email; I will announce it on twitter when it happens :).

Oh, I got the complete username change system working today. While it may look quite simple, this change allows us to have:

  • Custom store product pages.
  • Products with infinite stock.
  • Products which don’t rqeuire shipping.
  • Products with custom user data (in this case the requested username).

The start of much more to come. Make sure to check out flyte’s latest post over on osu!next if you haven’t yet; it has some big reveals!