osu-framework is a free, open source gaming project written in C# and released under MIT. It has 2,031 GitHub stars, 514 forks and 467 open issues, and was last pushed 3 days ago. On this registry it ranks #64 of 82 tracked projects in Gaming, with 5 head-to-head comparisons available.

What is osu-framework?

osu-framework is an MIT-licensed C# game framework from the osu! team for developers who want the UI, text rendering, input handling and testing scaffolding of a shipped rhythm game as the starting point for their own project.

What it is

osu-framework is a game framework written in C# for the .NET ecosystem, and its own description is simply "a game framework written with osu! in mind." It is listed under Miscellaneous / Gaming, and its stated objective is to go beyond what is normally expected of a game framework: basic UI elements, text rendering, advanced input handling including textboxes, and performance overlays are provided out of the box. Any osu! code that is deemed useful to other game projects lives in this framework rather than staying inside the game.

The problem it solves is the foundation work that precedes an actual game. Graphical components are implemented with a generic design and are derivable for further customisation, while common elements such as texture caching and font loading are initialised automatically at runtime, so a team does not have to rebuild that layer for each project. The framework targets the .NET 10 SDK, and on Linux it expects a system-wide ffmpeg installation to support video decoding.

Key capabilities

  • Project templates in osu.Framework.Templates supply a full project structure, cross-platform support and a testing setup, starting from either an empty project or a working sample game.
  • Basic UI elements, text rendering, advanced input handling such as textboxes, and performance overlays are available out of the box.
  • Components can be developed in isolation through the VisualTests project and TestCases, which the README recommends for new component work.
  • Common elements including texture caching and font loading are initialised automatically at runtime.
  • Building uses the supplied platform-specific .slnf files rather than the main .sln, which keeps the template run configurations available in Visual Studio and Rider.
  • Code analysis can be run with powershell ./InspectCode.ps1 or InspectCode.sh.

Who uses it and how

  • C# game teams on desktop platforms use it as the base layer for a new title, adopting the project templates instead of starting from an empty repository.
  • It is the designated home for osu! code that is useful to other game projects, so work done for the game lands in a library that other titles can consume.
  • Component contributors are directed to work inside VisualTests and TestCases, keeping component development isolated from a full game build; the repository's hacktoberfest topic and "good first issue" label point open-source contributors at entry points among its 467 open issues.
  • Linux developers can run the same codebase provided ffmpeg is installed system-wide, and IDE users load the platform-specific .slnf so the template run configurations are present.

Getting started

The wiki's "Setting up your first project" page is the documented entry point, and osu.Framework.Templates provides the starting point as either an empty project or a working sample game with project structure, cross-platform support and a testing setup already included. Building is then done through the IDE's own build and run functionality after loading the matching platform-specific .slnf file.

How it compares

No list of paid products that osu-framework replaces is given, and no comparable tool is named in its materials, so it stands alone in this registry. Its only stated contrast is with the ordinary expectations of a game framework, which the authors deliberately set out to exceed by shipping UI, text rendering, input and performance overlays rather than leaving them to the developer.

When to use it — and when not to

Reach for it when the project is a C# game on .NET 10 targeting desktop platforms and the team wants the reusable layer of a shipped game, covering UI, text rendering, input, overlays and a testing harness, under the MIT licence. Adopting teams must operate a .NET 10 SDK toolchain, pick the correct platform-specific .slnf for builds, and install ffmpeg system-wide on Linux for video decoding. Teams outside .NET should not pick it, and neither should anyone expecting user-facing documentation in the repository: the README states that its content covers working on the framework rather than using it, and 467 open issues against 2,031 stars indicate a busy maintenance queue.

project readme (upstream, from github) — read inline

osu!framework

Build status GitHub release CodeFactor dev chat

A game framework written with osu! in mind.

Developing a game using osu!framework

If you are interested in creating a project using the framework, please start from the getting started wiki resources (or jump straight over to the project templates). You can either start off from an empty project, or take a peek at a working sample game. Either way, full project structure, cross-platform support, and a testing setup are included!

The rest of the information on this page is related to working on the framework, not using it!

Objectives

This framework is intended to take steps beyond what you would normally expect from a game framework. This means things like basic UI elements, text rendering, advanced input handling (textboxes) and performance overlays are provided out-of-the-box. Any of the osu! code that is deemed useful to other game projects will live in this framework project.

  • Anywhere we implement graphical components, they will be displayed with a generic design and will be derivable for further customisation.
  • Common elements used by games (texture caching, font loading) will be automatically initialised at runtime.
  • Allow for isolated development of components via a solid testing environment (VisualTests and TestCases). Check the wiki for more information on how these can be used to streamline development.

Requirements

Building

Build configurations for the recommended IDEs (listed above) are included. You should use the provided Build/Run functionality of your IDE to get things going. When testing or building new components, it's highly encouraged you use the VisualTests project/configuration. More information on this provided below.

  • Visual Studio / Rider users should load the project via one of the platform-specific .slnf files, rather than the main .sln. This will allow access to template run configurations.

Code analysis

Code analysis can be run with powershell ./InspectCode.ps1 or InspectCode.sh.

Contributing

Contributions can be made via pull requests to this repository.

If you're unsure of what you can help with, check out the list of open issues (especially those with the "good first issue" label).

Before starting, please make sure you are familiar with the development and testing procedure we have set up. New component development, and where possible, bug fixing and debugging existing components should always be done under VisualTests.

Note that while we already have certain standards in place, nothing is set in stone. If you have an issue with the way code is structured; with any libraries we are using; with any processes involved with contributing, please bring it up. We welcome all feedback so we can make contributing to this project as pain-free as possible.

Our team believes in human contributions. Any contribution – be it an issue report or a pull request – which is created by, documented by, or aided by AI/LLM usage will typically be closed and locked without further discussion.

Licence

This framework is licensed under the MIT licence. Please see the licence file for more information. tl;dr you can do whatever you want as long as you include the original copyright and license notice in any copy of the software/source.

The BASS audio library (a dependency of this framework) is a commercial product. While it is free for non-commercial use, please ensure to obtain a valid licence if you plan on distributing any application using it commercially.

Projects that use osu!framework

Here are some early examples of projects powered by osu!framework:

  • osu! – rhythm is just a click away!
  • GDEdit - A third-party Geometry Dash editor.
  • Vignette - An OpenCV-based facial recognition software for Live2D
  • IWBTM - A platform game with level editor based off of "I Wanna..." games
  • DeltaDash - A multi-direction, lane-based scroller rhythm game
  • fluXis - A community-driven rhythm game with a focus on creativity and expression

See more (or post your own work) in this discussion thread!

Frequently asked questions

Is osu-framework free to use?

osu-framework is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does osu-framework do?

A game framework written with osu! in mind.

What is osu-framework written in?

osu-framework is primarily written in C#. Its source is publicly available at https://github.com/ppy/osu-framework, and it has 2,031 GitHub stars.