2016-03 Meeting Notes

published 05 Apr 2016

Hi again! Ephemeral here, back again with more delicious development developments this month following from our promise in March to make these meetings a more regular thing. There’s some exciting stuff on the horizon, and our summary for this month will only cover a little bit of what’s actually going on behind the scenes.

This time, our conversation was held in voice over text - this meant that a lot more got discussed. That being said, there is a lot more to go through this time around, so let’s get stuck into it:

  • Modding v2 development is progressing at a reasonable pace. The goals set from the last meeting were not fully met due to other distractions on the development end of things, but a lot of work has been made and the first usable prototypes of the system have entered internal testing. The system hinges on a lot of internal web changes which need to happen first, but they are getting done at a pretty quick rate, so the future looks promising. Don’t believe me? Here’s a screenshot of the current internal testing build. Yes, this all works.

  • The push to move the client to open-source proceeds at a great pace. Affectionately dubbed “LAZER” by the devs working on it, this new development branch aims to bridge the gap between the current client and the refactored codebase that will ultimately support both osu!next and a “legacy” compatibility layer for the old client design. This will ultimately enable external developers to start contributing to the development of the client, and paves the way well towards full osu!next implementation.

  • Due to the large number of changes slated for osu!next, a “seasons” based ranking system is being considered. While this is a fairly big thing to mention off hand, it is very much in the early consideration stage of things for now. Don’t hinge too much on it. (peppynote: this basically means everyone agreed it would be cool, not that we are actively working on it.)

  • More artists need to be sought out to produce osu! exclusive tracks that are available for all beatmappers to use. There’s also a composition/remix contest in the works that should be going live within the next month. If you know of any artists who would be interested in making music for osu!, please let us know in the comment section below!

  • Achievements are receiving a massive overhaul and many new ones are slated for release within the next month, with the artwork of over 40 new medallions already complete. These new achievements will be released in “packs”, hopefully each week. Each pack will probably contain 4 progression achievements (attain x performance rank, score, etc), 2 high-level achievements (attain x score on difficult map with/without mods), 2 mid-level achievements (attain x score on moderate map with/without mods). We will also no longer be enforcing a “no-discussion” rule on hush-hush achievements, but will continue to release such achievements. You guys need to work together to figure out what you need to do to attain them.

  • CtB’s editor mode is not sufficient for serious mapping as it currently stands, and changes are slated for the future to fix this. This has been a known issue for a long while now, particularly regarding slider creation. While it isn’t a priority in the current development environment, it is a noted issue and will be addressed at some point in the near future. aka: Soon(tm). (peppynote: it’s not a hard thing to fix, but we’re also redesigning the editor from ground up. might as well make that happen first rather than redoing everything twice.)

  • Concerns were raised about the general state of the mapping meta and strong encouragement from the community for mappers to map high-reward pp rather than fun-to-play maps. Efforts will be made to promote alternative mapping styles by showcasing unique and enjoyable beatmaps in osu!news features, hopefully encouraging more people to experiment with styles that are not made solely to produce high pp or star rating scores.

  • A recent overhaul to the GMT’s leadership fronted by shARPII is proving quite fruitful. Moderators will be scheduled to cover specific timezones and forums, leading to greater overall availability and a better, more consistent coverage of chat and forum channels across the day. Additionally, osu!news features with some prominent moderators are being considered in an effort to help the community better know who is handling chat, and to dispel some common misconceptions about these people or what moderators do in general.

  • A new video series on the History of osu! is slated to hit the osu!academy within the month, followed by fortnightly video releases of assorted content thereafter. The osu!academy (and YouTube presence in general) has proven very popular and there has been a wide demand for more of this content, especially considering the absence of updates made to the channel in previous months. ztrot will be adjusting his focus to align more on producing content for the osu!academy, which should hopefully yield more cool stuff for everyone to enjoy.

  • Improvements in support staff internal policies is significantly cutting down the average wait on ticket response times. We hope to improve this further in the coming months further by introducing a new means of handling ban appeals and restrictions in general which will massively free up the support team to handle issues at a far greater pace than before.

On the community front, more effort is going to be made to bolster the comparatively small sizes of the non-standard gamemode teams - particularly osu!mania. The team formerly known as the “Ranking Criteria Council” has also been put to work facilitating discussion in the Ranking Criteria subforum as per their new role. They’ve still not decided on a name for themselves, so I’ve decided to officially dub them the Criteria Friends until they manage to think of one. We also hope to hold up the great work of various members of the community who write guides detailing the sometimes complex ways that osu! operates as a whole by making their work far more visible than before, possibly featuring them in a new portal on the wiki, as well as some way of giving them proper attribution and credit for their work. As you can tell, it’s been a pretty hectic month, and they’re only going to get more packed as we start moving towards osu!next in the coming months. If there was ever a time to get excited about the future of osu!, now is probably it.

On that note, that’s about all for now. See you next month!

comments

2016-02 meeting notes

published 01 Mar 2016

Hello everyone! I’m Ephemeral, and following from our previous promises to be more transparent about our vision and choices for the community going forward, I’d like to present something new to you today!

For the first time in a long, long while, the development team all sat down together for a good hour or so and hashed out a series of short-term goals for osu!’s future. To put a long story short, here’s what we came up with:

  • More communication needs to happen inside #dev as a whole, instead of people conversing between themselves for individual projects. A chief issue with recent events in particular was this very problem, and by addressing this in full, we can be certain that similar problems will not happen in that same manner again.
  • More support staff are needed to handle the influx of new tickets and reports. Broadening the team is essential for keeping up with community demand. In light of this, one existing support member was given a broader set of permissions to help tackle foul play offenses, and one entirely new support member was recruited to help out.
  • Development focus continues to be primarily on getting the OpenGL client up to scratch performance and structure-wise. The four core active developers have pledged their efforts to this focus. Completing this overhaul will leave the codebase in a much better state, and will serve as a very important step on the way to open-sourcing the game client.
  • The ranking criteria adjustments to beatmap difficulty spread will be dropped in their current format. However, later adjustments to a maximum cap on difficulties per mode will be put forward for community discussion and consideration at a later date.
  • The “Ranking Criteria Council” concept will be adjusted considerably, and also renamed. The group will continue largely as they do now, but their role will be simplified to that of an advisory nature, centered on giving targeted feedback and proposals for community consideration. The new name of the group is yet to be determined, but it won’t be anything “council” related.
  • Ranking criteria change proposals should be vastly simplified going forward. They must be conveyed in a single sentence, followed by a short explanation of why the change is for the best. Larger changes should be split into multiple smaller changes, and all changes will be put before the community for consideration and feedback before implementation.
  • We are rapidly developing new beatmap modding tools to streamline the modding process. This is being done internally as it’s a fairly complex system, but you should see it make an appearance over the coming weeks.

On the community front, a number of proposals regarding gamemode-specific criteria changes are slated for the horizon, as well as the recruitment of more QAT, and a full-scale rework of the current Global Moderator Team.

As far as the development front goes, completion of the new drawing hierarchy and framework in the coming months will pave the way for open-sourcing the client code as a whole. Once this has been accomplished, we hope to work towards the implementation of a new, more efficient system for handling ban appeals and restrictions.

We plan to hold these meetings every month going forward. Depending on how things go, audio transcripts of our conversations may be made available, but at the very least, we will continue to have these summaries of our goals for the next month made available here.

See you next time!

comments

Sprites and Containers in osu!

published 27 Feb 2016

I recently posted a video showing the progress we are making with a huge overhaul of how osu! draws objects on the screen. It probably didn’t mean much to most of you, so I thought I’d take a few minutes to explain what we are trying to achieve (and why it is so important).

Let’s dissect one single component on the osu! main menu!

Firstly, let’s split out all the different components and sprites. The visualiser is omitted for simplicity.

You can see the various components (thicker blue lines) and the sprites/components contained within them (thin blue lines). Next, we need to figure out where they are going to sit on the screen. In order to do this, we need an Origin point set on each drawable object, which becomes the location used within the sprite to assign a position.

The orange dots represent the origins assigned to each drawable object. Hopefully it should make sense why the specific origins are chosen in this example; they should make setting the object’s position as simple as possible. An origin can be set to any of TopLeft, TopRight, CentreLeft, Centre, CentreRight etc., and can also be overridden with a custom value for unique cases.

One piece of the puzzle is still missing, because in many cases we want to give objects a position from a specific corner of their parent. Think of the case of the FPS display, where we want it to be at the bottom-right corner of the screen. Rather than providing the screen’s width and height (which could change at any point!), it is much nicer if we can give it a position of (0,0) from the BottomRight corner. This is done using Anchors. Let’s look at the FPS display in a bit more detail!

The FpsCounter contains three sub-components:

  • Frame-rate display
  • Frame delay display
  • Dropped frames display

You can see in the diagram above how these are arranged in a (hopefully trivial) heirarchy. Now let’s figure out the positions, anchors and origins required to make this happen:

This is a very simple example as we don’t need to worry about assigning a different anchor and origin to a single object; they are always the same. This is actually quite a common scenario, but there are cases where this is not true. I’ll leave it up to your imagination where this would come up, but as a hint, consider that all scale/rotation animations applied are also based on the Origin.

You can click on any of the diagrams above to get a larger view. Please let me know if the explanations provided here are simple enough to follow, and if not, let me know where you got lost so I can improve on further posts.

As we are aiming to open source the client in the near future (this year), I plan on doing more posts like this to help people understand what kind of framework they will be exposed to. Oh, and if you want to know how we did things until this rewrite, think of the above example without the concept of more than one level of heirarchy

comments

meet ephemeral!

published 17 Feb 2016

Hi everyone, I’m Ephemeral! I’ve been with osu! for a while now (since 2009) and have been ambling about behind the scenes for nearly as long, helping stuff get done and the like. Some things have recently come to bear, and I’ve been asked to help bring some clarity to the matter.

As many of you are probably aware, things have been particularly rocky in the community over the past week or so. A number of fairly big changes were added, then removed, then readjusted and proposed again, then removed again.. A mess and a half, to say the least. Everything went belly-up for a little while, and we’re only now just starting to get our head wrapped around things again.

During this whole fiasco, one of the biggest issues expressed by the community is the lack of transparency in how “staff” decisions are made and affect the game. This is something that as a team, we typically struggle with. Most of our major discussions happen behind closed doors, a product of years of tradition dating back to the very first years of the game, when the community was far, far smaller.

For the longest time, the community was small enough that any concerns would trickle through the engaged user-base and ultimately end up being noticed by someone involved who could do something about it. Over the years, osu!’s community has grown above and beyond our wildest expectations, and it is entirely fair to say that we have dropped the ball on adjusting our decision-making practices to account for this.

So, going forward, we aim to be entirely transparent with our thought processes leading up to the big decisions that impact everyone in the community.

What better place to start than with the issues of the past week?

With that in mind, we have constructed a unified timeline of the decisions pre-dating the infamous “Mapset and Spread” restructure that sent the community into a furore, as well as the “Ranking Criteria Council” concept (which has been met with similar levels of disdain).

It is our hope that by placing the events leading up to the birth of these decisions into the public view, we can work together to find out the best way of moving forward from here, and to make sure that something like this does not happen again.

We have suspended all movement in the Ranking Criteria changes for (at very least) the remainder of the week, and will use this time to gather your feedback and our thoughts on how we may best proceed from now on.

comments

For Those Wondering How Osunext Is Coming

published 09 Feb 2016

For those wondering how “osu!next” is coming along, here’s some of the progress we’ve been making. It may look like very basic stuff, but let me give you an idea of what is going on here:

We’ve been working to clean up the osu! codebase so it is easier to follow and contribute to. The existing framework means visual objects inside other objects (for things like scrollable views) have been limited in how they can be transformed. Movement has been easy, but anything beyond that requires quite convoluted code.

This video is an early preview of a drawable class inside another drawable class inside a third drawable class. Each can have transformations applied to them, which affect all of their children (movement, two-dimensional scale, rotation, colour and alpha).

Input is also masked correctly to only propagate downwards to the correct objects. You might notice that the boxes themselves aren’t masked to their parents yet; this is something we are still working on.

I coded up this example in a few minutes just to show what we’re up to behind the scenes. The whole class is under 100 lines for this demo, and about half of that will be unnecessary once we finish correcting the viewport implementation (so children can set their own coordinate system independent of the parent).

Yes, the “osu!next” design is still yet to take shape, but once we get the basics down things will be really really fast to actually implement. We’ve been holding off until the framework is ready to accept lots of new pieces entering it at a rapid pace.

This is the culmination of an effort over the last year, recently brought up-to-date by smoogipooo TVO and myself. It’s been a struggle to keep it merged alongside the constantly changing mainstream branch, but we are currently mending it with the aim of merging it into CE in the coming weeks. Stay tuned!

comments