Skip to content

Beatmap class terminology

Dean Herbert edited this page Jul 28, 2022 · 5 revisions

Models

Beatmap / IBeatmap

A materialised beatmap. Generally this interface will be implemented alongside IBeatmap, which exposes the ruleset-typed hit objects.

Beatmap<T> / IBeatmap<T>

A materialised beatmap containing converted HitObjects.

BeatmapInfo / IBeatmapInfo

A realm model containing metadata for a single beatmap difficulty.

This should generally include anything which is required to be filtered on at song select, or anything pertaining to storage of beatmaps in the client.

Note that there are some legacy fields in this model which are not persisted to realm. These are isolated in a code region within the class and should eventually be migrated to Beatmap.

BeatmapSetInfo / IBeatmapSetInfo

A realm model containing metadata for a beatmap set (containing multiple BeatmapInfos);

BeatmapMetadata / IBeatmapMetadataInfo

A realm model containing metadata for a beatmap.

This is currently stored against each beatmap difficulty, even when it is duplicated. It is also provided via for convenience and historical purposes. A future effort could see this converted to an or potentially de-duped and shared across multiple difficulties in the same set, if required.

Note that difficulty name is not stored in this metadata but in .

WorkingBeatmap

A more expensive representation of a beatmap which allows access to various associated resources.

  • Access textures and other resources via GetStream().
  • Access the storyboard via Storyboard.
  • Access a local skin via Skin.
  • Access the track via LoadTrack() (and then Track for subsequent accesses).
  • Create a playable Beatmap via GetPlayableBeatmap().

Difficulty

TBD

Gameplay

The easiest way to obtain a final playable beatmap is to first obtain a WorkingBeatmap and then call GetPlayableBeatmap(). It will run through the following steps:

BeatmapConverter

Converts a beatmap from one ruleset to another. Note that this should be run even if there is no conversion (using the actual ruleset of the beatmap). It will generally be a no-op.

BeatmapProcessor

Takes a post-converted beatmap and applies any final touches to make the beatmap ready for gameplay purposes.

Importing and processing

BeatmapManager

BeatmapImporter

BeatmapDownloader

BeatmapUpdater

BeatmapOnlineLookupQueue

BackgroundBeatmapProcessor