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 BeatmapInfo
s);
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.