Why osu!framework?
osu!framework is an open-source 2D game framework written in C#, built to develop the new iteration of osu!, a free-to-play rhythm game. It tries to go further than traditional game frameworks by supplying functionality you would usually find on game-level. This makes it a great choice for developers looking to create a cross-platform 2D game without having to write all the low-level plumbing themselves.
Benefits
Cross-platform support
osu!framework is built to be completely cross-platform. It has excellent support for major desktop platforms (Windows, macOS, Linux) and supports mobile platforms too (Android, iOS). A game built for the desktop can be ported to a mobile platform with minimal work, requiring only a startup project and mobile-friendly input methods to be added.
As the framework tries to abstract all platform-specific code away, it is not unthinkable that osu!framework games may be run on other platforms such as the browser in the future.
High performance
Targeting rhythm games in particular, the bar for performance and input latency is very high. A basic osu!framework game should easily have draw FPS in the thousands and several times that for update FPS. At the time of writing, the main menu of osu!lazer, the flagship osu!framework game, reaches 1200 draw FPS and 10 000 update FPS when uncapped on a 4k monitor with a Ryzen 5 3600 and a GTX 1660 Super. On a mobile device (Huawei Mate 20) the same scene gets about 1800 update FPS with the draw FPS capped to the screens 60Hz display rate.
Many built-in components
During the development of osu! a lot of functionality was considered to be useful to other projects and was thus moved to osu!framework. This functionality includes:
- Input support for mice, touch screens, drawing tablets, keyboards, joysticks and MIDI devices
- Standard UI components such as buttons, sliders, dropdowns, checkboxes, text inputs, color pickers, file pickers, progress bars, context menus, tab menus and more
- Layout abstractions such as a screen stack and overlays
- Database-backed storage
- Localization
- A config system
- Basic physics
- Extensive developer tooling
- More...
Extensibility
Many parts of the framework can be extended or swapped out, such as the audio and window backends, storage and input methods.
Developer tooling
osu!framework comes with a built-in draw tree explorer, on-screen log display, advanced frame statistics overlay and more.

Additionally, there exists a test browser that can be used with dynamic compilation to rapidly develop new UI components and execute automated tests. This allows for test-driven development and can be used to ensure high code coverage.

Downsides
No 3D support
As osu!framework is a 2D game framework, it currently does not have any 3D capabilities. There are plans to include basic 3D support, but it will never become a full-fledged 3D framework. Therefore, it will not be fit for games that require such interaction.
Bloat
While osu!framework is fast, it is by no means small. As of time of writing, a release build of a small desktop game with no assets measures at about 220 MB. The majority of this size bloat comes from the .NET runtime and dependencies. Removing unused runtimes can reduce total size by 50-85%, depending on platform. Link-time optimization may bring this down more.