Skip to content

RDCN-Community-Developers/RhythmToolkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

650 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

License Nuget Download Downloads

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!

About

A high-performance, dependency-free development library for parsing and editing Rhythm Doctor and Adofai levels.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors

Languages