Skip to content

Add integrated tournament management system #32468

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

Draft
wants to merge 12 commits into
base: master
Choose a base branch
from

Conversation

Sr3qt
Copy link

@Sr3qt Sr3qt commented Mar 19, 2025

resolves #18896

This pull request seeks to implement a tournament management system, which can hold, display and modify all tournament related data, as well as generate some tournament data (like brackets or teams). A lot of code is taken from the existing lazer tournament client, but the UI is redesigned to be more user friendly.

Later on the goal is for data to be automatically updated, for example when a player wants to signup or after a tournament match has finished.

This tournament system has a few big goals it aims to achieve:

  • Minimize the manual labour needed to create a tournament.
  • Keep it all in lazer. No need for 3rd party software or spreadsheets.
  • Be easy to use while having as much customization as anyone could need.

I have attached a design document which i can update whenever needed. It describes the functionality of UI i will implement along with some ideas about other tournament related functionality.

My first goal is to make an MVP where a tournament can play out using manual updates, then work on synchronizing tournaments through the server, then polishing client UI and finally add automatic data updating. Somewhere along the timeline i might add streaming support for matches.

Here is a demo of what i got working so far: Demo

Design Doc Ver 2.md

Sr3qt added 12 commits January 23, 2025 17:18
Seperating import of what was called Ladder (now Bracket) for readability. These files have little to no changes from their Osu.Game.Tournament counterparts.
I changed some classes to support having more than two teams per match. The rest of them are unchanged.
Fixed the issue where TournamentsFooterButtons wouldn't hide on load. Problem was cause by TournamentsRoomFooter being a CompositeDrawable rather than Container. Still, for the buttons to hide their content on start i have to use Container.Alpha rather than the public alpha. idk why this is, but it work.
Also tab visibility switched to using actual enum flags.
For the Team editor i thought it would be intuitive and user friendly to simply be able to drag and drop a player to the team they are supposed to be in.

In code, the use is fairly simple. You first need a DraggableSharingContainer somewhere in the tree. Then any DraggableItemContainers with the same TModel will hook itself into the sharing container.

I was thinking this commit would be better to do in osu.Frameworks repo, but i have never worked in multiple repos at the same time, so im leaving this here for now.
Previous name was not representative of the function.
Simply drag and drop an item between the containers. The yellow and cyan items can be put in eachothers containers.

There is a known bug where if you try to hover an item that's already inside the container, it will crash.
Having other containers create a temporary drawable with the currently dragged Model caused a lot of problems.

Will try to use currentlySharedDraggedItem over currentlyDraggedItem.
@bdach
Copy link
Collaborator

bdach commented Mar 19, 2025

Not sure where to even begin here.

  • Did you read CONTRIBUTING.md? If you did you should know that the first thing to do for a feature this large is ask.
  • Do you have any associations to the tournament scene or experience to be able to know how tournaments are run and what would be the proper and most useful way to implement whatever this is supposed to be? Was your "design document" consulted with the tournament community at large?
  • I'm looking at your "demo" and sorry but it looks far from even an MVP. It's some screen with pages, most of them blank, the ones that aren't look so underbaked and nondescript that I'm not even sure what I'm looking at.
  • Why did you decide to start all of this with a 4K line pull request rather than start with the design document in a discussion thread and take it from there?

@Sr3qt
Copy link
Author

Sr3qt commented Mar 20, 2025

Firstly i want to apologize as this is my first PR and you're probably not fond of first-timers wanting to do big projects.

Secondly, i think there might have been a misunderstanding from my part. In the related issue about integrating the existing tournament client, #18896, Peppy said he wanted it to eventually have the "goal of using it in a more interactive way to view and spectate ongoing tournaments". I used his go ahead to do two things at a time. That's my mistake and i apologize.

I made this PR, because i thought this was where the collaboration for the plans of a redesign should take place. It should have been a discussion, and i apologize. I added the "demo" because i thought would help illustrate my design plans, but if it has the opposite effect i will no longer include it.

To hopefully fix my mistakes i will, with your permission:

  • Create a PR that's just for integrating the old tournament client into lazer.
  • Create a discussion for the redesign/design of a tournament management system. I have some tournament experience as a participant and viewer, but I will get in contact with the tournament community for more input.

I want to apologize if my actions came across as brash. I want to help create a tournament system the osu! communtiy will enjoy at large.

@bdach
Copy link
Collaborator

bdach commented Mar 24, 2025

Create a PR that's just for integrating the old tournament client into lazer.

This is a very simple statement that actually sparks several questions of its own. What does "just integrating the old tournament client" mean? Where in the menus do you put it? Do you just drop it into the game no questions asked, and keep all of the current arcane UX that more or less requires that you have advance knowledge of how the tournament client works to use it? What about all of the existing tournaments that use the tournament client with stable?

I don't have these answers so I can't even respond to this much. This needs a direction from the very start, and I don't feel confident in providing it myself without conferring both with the rest of the team and the tournament community at large which I completely admit outright I have very little connection to right now and do not know how it works.

Throwing code at all these problems feels unproductive to me. What needs to happen first is a comprehensive conversation on the big points.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Embed tournament client in-game
3 participants