Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement "daily challenge" system #28136

Open
5 of 7 tasks
bdach opened this issue May 9, 2024 Discussed in #27983 · 1 comment
Open
5 of 7 tasks

Implement "daily challenge" system #28136

bdach opened this issue May 9, 2024 Discussed in #27983 · 1 comment

Comments

@bdach
Copy link
Collaborator

bdach commented May 9, 2024

Opening for tracking ongoing work.

I'll be handling the implementation of the system itself, @peppy has offered to look at rewards.

Tasks

  1. area:multiplayer
    bdach
  2. bdach
  3. area:playlists size/M type:online
    bdach
  4. bdach
  5. area:playlists size/XL type:online
    bdach

Discussed in #27983

Originally posted by bdach April 24, 2024
This is a design document of sorts for the feature floated today on discord (see discussion here and then continued in thread).

Most things below have already been brought up in the discussions above but some of it is explicitly my proposal. Assume everything in here is negotiable / up for debate.

Basic premise

  • Every day a single beatmap difficulty is selected as the "beatmap of the day".
  • The beatmap of the day gets a playlist created for it, which is open for 24 hours.
  • Beatmaps to pick can be queued manually. Lack of queued maps should result in a reminder.
  • The beatmap of the day is accessible from the game's main menu, next to solo / playlists / multiplayer.
  • The beatmap of the day screen displays real-time statistics and leaderboards as user submit scores, and includes a chat box.

Ideas for future expansion

  • Individual rewards for top N players on every playlist.
  • Collective rewards for everyone for reaching selected targets.
    Ideas for targets:
    • Reach collective $playcount in the playlist.
    • Collect $total_score cumulatively.
    • Get $total A/S ranks or above.
    • Have $count of players achieve accuracy of $percentage or above.
    • Have $count of players reach $maxCombo.

Tentative UI mockups

https://www.figma.com/file/4oaiT5sBCiD2cLjfaEfv1U/Untitled?type=design&node-id=0%3A1&mode=design&t=kd5c0i2eW7vf5Aw3-1

Very makeshift, cobbled together using various scraps from @arflyte's various figmas over the years.

Please ignore the fonts being all over the place. I can't be bothered with figma bullshit. And please don't focus on this too much to begin with, the details of appearance are secondary to what this system is supposed to be doing.

How to execute this

  • osu-web must create the daily playlist on a cron.
  • A beatmap queueing system must exist. Probably something based on a database table. It should be hooked up to ASS so that it can be managed without our direct intervention as devs.
  • osu-server-spectator should announce the daily playlist to all clients.
  • Score submission will use the existing playlist flow / infra.
  • Real time stats updates for the daily playlist will be delivered to clients by osu-server-spectator. It'll probably be osu-server-spectator querying most relevant stats in a loop on an interval and sending that data to all clients at once (there should be no reason to send different data to different clients in the simplest variant).

How to actually decompose this

  1. Implement the queueing mechanism and the room creation cron.
  2. Add the button in client, initially using the playlists screen unmodified.
  3. Replace the playlists screen with the new one that displays the real time info.

Open questions

  • How to include the biggest number of players possible
    • Skill levels: probably will be addressed by picking different star rating ranges on each weekday
    • Rulesets: this is an open one, maybe we'll run mostly osu! to begin with to see if the system takes, then try other rulesets for a single day every now and then, and if interest keeps up, maybe we can expand the system to have 1 beatmap per ruleset or something
  • Rewards
    • Many ideas thrown out, including
      • medals/badges (probably not viable)
      • granting supporter
      • announcement in chat
      • temporary player title
      • ability to suggest next beatmap
      • some sort of new display
      • tying into a revamp of XP somehow
@PLGGitHub1

This comment was marked as off-topic.

@bdach bdach changed the title Implement "Beatmap of the day" system Implement "daily challenge" system May 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: In Progress
Development

No branches or pull requests

3 participants