RhythmBase.RhythmDoctor
1.3.11-alpha4
dotnet add package RhythmBase.RhythmDoctor --version 1.3.11-alpha4
NuGet\Install-Package RhythmBase.RhythmDoctor -Version 1.3.11-alpha4
<PackageReference Include="RhythmBase.RhythmDoctor" Version="1.3.11-alpha4" />
<PackageVersion Include="RhythmBase.RhythmDoctor" Version="1.3.11-alpha4" />
<PackageReference Include="RhythmBase.RhythmDoctor" />
paket add RhythmBase.RhythmDoctor --version 1.3.11-alpha4
#r "nuget: RhythmBase.RhythmDoctor, 1.3.11-alpha4"
#:package RhythmBase.RhythmDoctor@1.3.11-alpha4
#addin nuget:?package=RhythmBase.RhythmDoctor&version=1.3.11-alpha4&prerelease
#tool nuget:?package=RhythmBase.RhythmDoctor&version=1.3.11-alpha4&prerelease
<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 maintenance
- Sponsors
| 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-performanceEnumCollection<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
- Full Tutorial (English)
- Implementing a New Level Type (English)
- Contributing Guide (English)
- 完整使用教程 (中文)
- 贡献指南 (中文)
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 | Versions 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. |
-
.NETStandard 2.0
- RhythmBase (>= 1.3.11-alpha4)
-
net8.0
- RhythmBase (>= 1.3.11-alpha4)
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