1
0
mirror of https://github.com/ppy/osu.git synced 2026-06-09 02:23:40 +08:00

Implement ranked play (#36819)

I don't really have much to say here. Instead, I'll give a brief history
rundown that lists many pages of documentation you can read, if
interested.

- Started off as BTMC + Happy24 (Vivi)'s ["The
Vision"](https://docs.google.com/document/d/1p1IpPmd2RICp8G4OqkCSs7u8Ug8FbFv8qqP0mfSrHf0/edit?tab=t.0#heading=h.fol093d9f9xi)
- Initial
[designs](https://www.figma.com/design/f5qqC57t9jFlgpzhRqUNVX/The-Vision?node-id=0-1&p=f)
were led by Vivi.
- Designs
[morphed](https://www.figma.com/design/vtFmLrXKvWNyYiRjTezFTM/Untitled--Copy-?node-id=0-1&p=f)
during development into what's currently present, led by @minetoblend.
- There is some more ongoing work creating a [game design
document](https://docs.google.com/document/d/1iffJFCsIBfYF0D4ogItSBEj6YBmbp-rdCpItAeaJiTA/edit?tab=t.0).

**tl;dr:** Create something with the mechanics of a trading card game
within osu!. The name of this is "ranked play".

---

To be frank, a lot of stuff is missing here. Some of it I don't want to
mention, because the point of this exercise is to get the system into
the hands of players, gather feedback especially around mechanics, and
discuss any further direction with the team.

I am expecting a blanket approval on all of the new code, with
particular attention to changes in existing components that I'll point
out in a self review.

There is also some [ongoing
work](https://github.com/smoogipoo/osu/pulls) that may arrive in this
branch prior to being merged.

---------

Co-authored-by: maarvin <minetoblend@gmail.com>
Co-authored-by: Marvin <m.schuerz@hautzy.com>
Co-authored-by: Jamie Taylor <me@nekodex.net>
Co-authored-by: ArijanJ <arijanj@proton.me>
Co-authored-by: Dean Herbert <pe@ppy.sh>
Co-authored-by: Tim Oliver <git@tim.dev>
Co-authored-by: Joseph Madamba <madamba.joehu@outlook.com>
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
Co-authored-by: nil <25884226+voidstar0@users.noreply.github.com>
Co-authored-by: Ботников Максим <mr.botnikoff@ya.ru>
Co-authored-by: Denis Titovets <den232titovets@yandex.ru>
Co-authored-by: Michael Middlezong <119022671+mmiddlezong@users.noreply.github.com>
Co-authored-by: SupDos <6813986+SupDos@users.noreply.github.com>
Co-authored-by: failaip12 <86018517+failaip12@users.noreply.github.com>
This commit is contained in:
Dan Balasescu
2026-03-07 02:30:50 +09:00
committed by GitHub
Unverified
parent 0fd0bd3580
commit 0988552567
94 changed files with 12526 additions and 51 deletions
+20 -4
View File
@@ -47,7 +47,8 @@ namespace osu.Game.Screens.Menu
public Action? OnSolo;
public Action? OnSettings;
public Action? OnMultiplayer;
public Action? OnMatchmaking;
public Action? OnQuickPlay;
public Action? OnRankedPlay;
public Action? OnPlaylists;
public Action<Room>? OnDailyChallenge;
@@ -161,7 +162,11 @@ namespace osu.Game.Screens.Menu
{
Padding = new MarginPadding { Left = WEDGE_WIDTH }
});
buttonsMulti.Add(new MainMenuButton(ButtonSystemStrings.QuickPlay, @"button-daily-select", FontAwesome.Solid.Bolt, new Color4(94, 63, 186, 255), onMatchmaking, Key.Q));
#if DEBUG
buttonsMulti.Add(new MainMenuButton(ButtonSystemStrings.RankedPlay, @"button-daily-select", FontAwesome.Solid.Crown, new Color4(94, 63, 186, 255), onRankedPlay, Key.R));
#else
buttonsMulti.Add(new MainMenuButton(ButtonSystemStrings.QuickPlay, @"button-daily-select", FontAwesome.Solid.Bolt, new Color4(94, 63, 186, 255), onQuickPlay, Key.Q));
#endif
buttonsMulti.ForEach(b => b.VisibleState = ButtonSystemState.Multi);
buttonsEdit.Add(new MainMenuButton(EditorStrings.BeatmapEditor.ToLower(), @"button-default-select", OsuIcon.Beatmap, new Color4(238, 170, 0, 255), (_, _) => OnEditBeatmap?.Invoke(), Key.B,
@@ -217,7 +222,7 @@ namespace osu.Game.Screens.Menu
OnMultiplayer?.Invoke();
}
private void onMatchmaking(MainMenuButton mainMenuButton, UIEvent uiEvent)
private void onQuickPlay(MainMenuButton mainMenuButton, UIEvent uiEvent)
{
if (api.State.Value != APIState.Online)
{
@@ -225,7 +230,18 @@ namespace osu.Game.Screens.Menu
return;
}
OnMatchmaking?.Invoke();
OnQuickPlay?.Invoke();
}
private void onRankedPlay(MainMenuButton mainMenuButton, UIEvent uiEvent)
{
if (api.State.Value != APIState.Online)
{
loginOverlay?.Show();
return;
}
OnRankedPlay?.Invoke();
}
private void onPlaylists(MainMenuButton mainMenuButton, UIEvent uiEvent)