diff --git a/osu.Game/Database/UserLookupCache.cs b/osu.Game/Database/UserLookupCache.cs
index e5fd9c82ac..13c37ddfe9 100644
--- a/osu.Game/Database/UserLookupCache.cs
+++ b/osu.Game/Database/UserLookupCache.cs
@@ -32,7 +32,7 @@ namespace osu.Game.Database
///
/// The users to lookup.
/// An optional cancellation token.
- /// .
+ /// The populated users. May include null results for failed retrievals.
public Task GetUsersAsync(int[] userIds, CancellationToken token = default)
{
var userLookupTasks = new List>();
diff --git a/osu.Game/Screens/Play/HUD/MultiplayerGameplayLeaderboard.cs b/osu.Game/Screens/Play/HUD/MultiplayerGameplayLeaderboard.cs
index 45f871ed13..a32aca51c5 100644
--- a/osu.Game/Screens/Play/HUD/MultiplayerGameplayLeaderboard.cs
+++ b/osu.Game/Screens/Play/HUD/MultiplayerGameplayLeaderboard.cs
@@ -57,6 +57,9 @@ namespace osu.Game.Screens.Play.HUD
{
foreach (var user in users.Result)
{
+ if (user == null)
+ continue;
+
var trackedUser = CreateUserData(user.Id, scoreProcessor);
trackedUser.ScoringMode.BindTo(scoringMode);
diff --git a/osu.Game/Screens/Spectate/SpectatorScreen.cs b/osu.Game/Screens/Spectate/SpectatorScreen.cs
index cd386a3d48..b6eafe496f 100644
--- a/osu.Game/Screens/Spectate/SpectatorScreen.cs
+++ b/osu.Game/Screens/Spectate/SpectatorScreen.cs
@@ -63,7 +63,12 @@ namespace osu.Game.Screens.Spectate
userLookupCache.GetUsersAsync(userIds.ToArray()).ContinueWith(users => Schedule(() =>
{
foreach (var u in users.Result)
+ {
+ if (u == null)
+ continue;
+
userMap[u.Id] = u;
+ }
playingUserStates.BindTo(spectatorClient.PlayingUserStates);
playingUserStates.BindCollectionChanged(onPlayingUserStatesChanged, true);