RhythmBase.RhythmDoctor 1.3.11-alpha4

This is a prerelease version of RhythmBase.RhythmDoctor.
dotnet add package RhythmBase.RhythmDoctor --version 1.3.11-alpha4
                    
NuGet\Install-Package RhythmBase.RhythmDoctor -Version 1.3.11-alpha4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RhythmBase.RhythmDoctor" Version="1.3.11-alpha4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RhythmBase.RhythmDoctor" Version="1.3.11-alpha4" />
                    
Directory.Packages.props
<PackageReference Include="RhythmBase.RhythmDoctor" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RhythmBase.RhythmDoctor --version 1.3.11-alpha4
                    
#r "nuget: RhythmBase.RhythmDoctor, 1.3.11-alpha4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package RhythmBase.RhythmDoctor@1.3.11-alpha4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=RhythmBase.RhythmDoctor&version=1.3.11-alpha4&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=RhythmBase.RhythmDoctor&version=1.3.11-alpha4&prerelease
                    
Install as a Cake Tool

logo

<p align="center"> <a href="/LICENSE"><img src="https://img.shields.io/github/license/RDCN-Community-Developers/RhythmToolkit" alt="License"></a> <a href="https://www.nuget.org/packages/RhythmBase/"><img src="https://img.shields.io/nuget/v/RhythmBase?logo=nuget" alt="Nuget Download"></a> <img src="https://img.shields.io/nuget/dt/RhythmBase" alt="Downloads"/> </p>

If you find this project helpful, consider supporting via Afdian (China) or Ko-fi (International)!

RhythmBase

[ English | 中文 ]

A high-performance, systematic, and intuitive level editing proxy development library for rhythm game developers, independent of any game engine.

Development progress is tracked here.

Examples can be found here.

Architecture Overview

RhythmBase                         ← Core library (NuGet package)
├── Global/                        ← Public interfaces, types, serialization infrastructure
│   ├── Components/                ← Color, EnumCollection, TickTime interface, Level interface...
│   ├── Events/                    ← IEvent, IDurationEvent, IFileEvent, IForwardEvent...
│   ├── Converters/                ← MetadataJsonConverter, MemberConverter, TypeConverterRegistry...
│   └── Extensions/                ← LINQ queries, event navigation...

RhythmBase.Generator              ← Source generator (Roslyn Incremental SourceGenerator)
└── Auto-generates: EventTypeRegistry / EventConverterMap / EnumConverterExtensions

RhythmBase.RhythmDoctor            ← Rhythm Doctor adapter
RhythmBase.Adofai                  ← A Dance of Fire and Ice adapter
RhythmBase.BeatBlock               ← BeatBlock adapter
RhythmBase.Rizline                 ← Rizline adapter

Serialization system: The core library provides MetadataJsonConverter<T> (handles compound objects like Level, Settings, Row, etc.) and MemberConverter<T> (reads/writes event properties field by field). The source generator automatically produces converters and type-enum mappings for each event class based on declarations in AssemblyInfo.cs, eliminating the need to write serialization code by hand. See Tutorial Part 2 for details.

Supported level formats:

Game Single file Multi-file directory Archive JSON read/write
Rhythm Doctor .rdlevel - .rdzip .zip
A Dance of Fire and Ice .adofai - .zip
BeatBlock - manifest.json + level.json + chart .bbz .zip -
Rizline - metadata.json + chart .rlz .zip -

Special Thanks

Project Description Status Link
RhythmBase Core level editing proxy library. Maintained You are here
RhythmBase.RhythmDoctor Rhythm Doctor implementation. Maintained You are here
RhythmBase.Adofai Adofai implementation. Maintained You are here
RhythmBase.BeatBlock BeatBlock implementation. Maintained You are here
RhythmBase.Rizline Rizline implementation. Maintained You are here
RhythmBase.View Renders all Rhythm Doctor events. (incl. TypeScript DOM version) In development Go
RhythmBase.Addition Extends the core library. In development Go
RhythmBase.Interact Interacts with game level editors. Private -
RhythmBase.Hospital Level review, hints, and assistance. Private -
RhythmBase.Lite Lightweight version of RhythmBase. In development Go
RhythmBase.Control UI control library for level proxy. Private -

Key Features

  • Complete event system support
    Provides strongly-typed event models for rhythm games, compatible with future new event models.
  • Smart event handling
    Flexible LINQ queries, automatic relationship management, and built-in timeline generation tools.
  • RichText and dialogue components
    Full rich text syntax parsing and code generation for dialogue and title events.
  • Source generator driven serialization
    AOT-compatible JSON serialization with no reflection; converters for event types are automatically generated by the Roslyn source generator.
  • Bitmap enum collections
    High-performance EnumCollection<T> / ReadOnlyEnumCollection<T> for event type classification and filtering.
  • Cross-platform
    Based on .NET Standard 2.0 / .NET 8.0, supporting Windows, Linux, macOS.
  • AOT compatible
    No reflection calls, fully supports AOT compilation.

Quick Start

dotnet add package RhythmBase.RhythmDoctor
using RhythmBase.RhythmDoctor.Components;
using RhythmBase.RhythmDoctor.Events;

// Load level
using var level = Level.FromFile("level.rdlevel");

// Add event
level.Add(new Comment() { Text = "hello", Tab = Tab.Windows, Y = 2 });

// Save
level.SaveToFile("out.rdlevel");

Documentation

AI Assistance

The following aspects of this project's development used AI assistance tools (such as GitHub Copilot, ChatGPT, etc.).

  • Code completion
  • API documentation lookup
  • Algorithm design and optimization suggestions
  • XML comment writing
  • Documentation translation (original language is Simplified Chinese)

About This Project

This project was originally named RhythmToolkit, aiming to develop small tools to simplify level processing for Rhythm Doctor.
As the project matured, its direction shifted toward becoming a foundational framework for other tools, and it expanded to support the A Dance of Fire and Ice (Adofai) level model.
For this reason, the project was renamed RhythmBase, and tool-oriented content was migrated to other repositories. Of course, you can also call it RDTK!

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.3.11-alpha4 48 6/5/2026

VERSION.md