diff --git a/osu.Game/Rulesets/UI/DrawableRuleset.cs b/osu.Game/Rulesets/UI/DrawableRuleset.cs
index 0ffff0ec26..9a10b7d1b2 100644
--- a/osu.Game/Rulesets/UI/DrawableRuleset.cs
+++ b/osu.Game/Rulesets/UI/DrawableRuleset.cs
@@ -487,6 +487,11 @@ namespace osu.Game.Rulesets.UI
protected virtual ResumeOverlay CreateResumeOverlay() => null;
+ ///
+ /// Whether to display gameplay overlays, such as and .
+ ///
+ public virtual bool AllowGameplayOverlays => true;
+
///
/// Sets a replay to be used, overriding local input.
///
diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs
index ece4c6307e..acc8dc9c7c 100644
--- a/osu.Game/Screens/Play/Player.cs
+++ b/osu.Game/Screens/Play/Player.cs
@@ -184,6 +184,13 @@ namespace osu.Game.Screens.Play
addGameplayComponents(GameplayClockContainer, Beatmap.Value, playableBeatmap);
addOverlayComponents(GameplayClockContainer, Beatmap.Value);
+ if (!DrawableRuleset.AllowGameplayOverlays)
+ {
+ HUDOverlay.ShowHud.Value = false;
+ HUDOverlay.ShowHud.Disabled = true;
+ BreakOverlay.Hide();
+ }
+
DrawableRuleset.HasReplayLoaded.BindValueChanged(_ => updatePauseOnFocusLostState(), true);
// bind clock into components that require it