Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/InventiveRhythm/fluXis/llms.txt

Use this file to discover all available pages before exploring further.

Building fluXis from source gives you the latest unreleased changes, lets you attach a debugger, and is the starting point for any code contribution. The build system is standard .NET, so if you have worked with any modern C# project before you will feel right at home. The entire process — from a bare machine to a running game — usually takes less than ten minutes, most of which is NuGet package restoration on the first build.

Prerequisites

fluXis depends on a small set of tools. Have these installed before you clone the repository.

.NET 8 SDK

The only hard runtime requirement. fluXis targets .NET 8 (global.json pins the SDK to 8.0.0 with latestMajor roll-forward). Download the SDK — not just the runtime — so that the dotnet CLI is available.

Git

Required to clone the repository and its submodules. Git 2.13 or later is recommended because of the --recurse-submodules flag used during cloning.

JetBrains Rider

The IDE used by most fluXis contributors. Rider has first-class support for osu!framework projects and can run and debug fluXis.Desktop with a single click. A free non-commercial licence is available.

Visual Studio / VS Code

Visual Studio 2022 (Windows only) and Visual Studio Code with the C# Dev Kit extension are both supported alternatives if you prefer the Microsoft toolchain.
fluXis runs on Windows, macOS, and Linux. All three platforms are equally supported for development. The instructions below work identically on all three; only the final executable name differs.

Step-by-Step Build Guide

1

Clone the repository with submodules

fluXis vendors osu!framework and a small set of other dependencies as Git submodules. You must pass --recurse-submodules to clone them in a single command — otherwise you will get an empty Framework/ directory and the build will fail.
git clone --recurse-submodules https://github.com/InventiveRhythm/fluXis
cd fluXis
After cloning you will see a directory tree that includes fluXis/ (the main game library), fluXis.Desktop/ (the desktop entry point), fluXis.Import.osu/, fluXis.Import.Quaver/, fluXis.Import.Stepmania/, and Framework/osu.Framework/ among others.
2

Restore NuGet packages

The .NET CLI restores packages automatically when you build, but running restore explicitly first gives clearer error messages if a package feed is unavailable.
dotnet restore fluXis.Desktop
This step requires an internet connection on the first run. Subsequent builds use the local NuGet cache and work offline.
3

Build and run the desktop project

To compile and immediately launch fluXis, run the following command from the repository root:
dotnet run --project fluXis.Desktop
On the very first build, .NET compiles osu!framework from source alongside fluXis itself, which can take two to four minutes. Subsequent builds are incremental and take only a few seconds.
Add --configuration Release to produce an optimised binary with full JIT inlining. Omit the flag (or use --configuration Debug) during active development to get better stack traces and debugger support.
4

Open the solution in your IDE (optional)

For a richer development experience, open the solution file in your IDE of choice:
rider .        # JetBrains Rider (if `rider` is on PATH)
code .         # Visual Studio Code
The solution filter fluXis.Desktop.slnf loads the projects needed for a desktop build — including fluXis, fluXis.Desktop, the three import plugins, fluXis.Resources, fluXis.Tests, osu!framework, and supporting libraries — keeping solution load times fast.
5

Run the test project (optional)

fluXis ships a visual test runner under fluXis.Tests. These are osu!framework-style “test scenes” that let you inspect individual components in isolation without launching the full game.
dotnet run --project fluXis.Tests

Keeping Your Local Copy Up to Date

Because fluXis uses Git submodules, a plain git pull only updates the top-level repository. Always use --recurse-submodules to pull changes from osu!framework and other vendored dependencies at the same time:
git pull --recurse-submodules
If you forget --recurse-submodules and the top-level repository moves to a new submodule commit, your build may fail with missing type or assembly errors from osu!framework. Fix it by running:
git submodule update --init --recursive

Project Structure Reference

Understanding the solution layout makes navigation easier when you start exploring the codebase.
ProjectDescription
fluXis/Core game library — screens, gameplay, editor, skinning, scripting, online
fluXis.Desktop/Desktop entry point; creates the host window and starts the game loop
fluXis.Import.osu/Converts osu! .osz / .osu maps to fluXis format
fluXis.Import.Quaver/Converts Quaver .qp maps to fluXis format
fluXis.Import.Stepmania/Converts Stepmania / ITG .sm / .ssc maps to fluXis format
fluXis.Resources/Shared textures, fonts, audio assets, and shaders
fluXis.Tests/Visual test scenes for individual components
Framework/osu.Framework/Vendored osu!framework submodule
The fluXis/Scripting/ directory contains the Lua storyboard runtime, and fluXis/Skinning/ holds the skin-loading and skin-editor infrastructure. Both are good starting points if you want to extend fluXis’s creative tooling.

Build docs developers (and LLMs) love