Play icon indicating copy to clipboard operation
Play copied to clipboard

Jean/party mode pull request

Open achimmihca opened this issue 2 years ago • 6 comments

What does this PR do?

Implement party modes.

Current approach:

Party Mode has two options: "Teams" and "Free for All".

Currently "Teams" isn't working, although the UI has been started.
"Free for All" will work to automatically create rounds to match and make all added users play.
Eventually it would be nice to have a tournament mode for the "Free for All" mode, so that winning players are matched against each others, until there is only one winner.

"Free for All" will only work if there are exactly two microphones enabled - support for more players/microphones needs to be added.

The flow works as follow:
- Participants can be added, either using existing Player Profiles, or entering new guest names through text fields
- Based on the number of participants, the number of rounds will be calculated
- Song selection can be manual, one random song, or a subset of random songs so that users have a bit more choices
    - in team mode, we should let users from each team to choose the song in turns
    - there is an infinite joker button that will reselect (a) new song(s), eventually the number of joker per player/teams should be modifiable (including an "infinite" value)
- For each round, users can define:
    - the winning condition (still work in progress, only the highest score will properly work)
    - a game modifier that will alter the gameplay based on a condition
- A "Versus" screen shows the randomly matched players, as well as the winning condition and modifiers for the round, if any
- Once the song ends, the "Versus" screen is shown again for the next round

Additional Notes

@jean-moreno this is a draft PR for your branch such that I can review and give feedback. I created a new branch for the PR. Thus, you can continue development on your original branch and when ready, merge it to this branch.

achimmihca avatar Nov 04 '22 11:11 achimmihca

A GIF to show current state.

party-modes-wip-demo

achimmihca avatar Nov 14 '22 11:11 achimmihca

Thanks for your work!

I still have some conceptual doubts for the party modes.

Team vs free-for-all

  • I my opinion "Free for all" is a special case of "Teams", namly every player is his/her own team.
    • Thus, I suggest to always show configuration for teams. A simple "Free for all" button could move each player to his/her own team.

Eventually it would be nice to have a tournament mode for the "Free for All" mode, so that winning players are matched against each others, until there is only one winner.

A knock-out system is a neat idea. However, you could do the same with teams (until there is only one winning team). Again, I think "free for all" should be treated as a special case of "teams".

PlayerProfiles vs. guest user names

  • IMO there should not be guest user names. If needed, users can define generic PlayerProfiles named guest1, guest2, or player1, player2 etc.
    • PlayerProfiles also define difficulty, avatar, mic assignment.
    • Introducing some guest data structure (even if it is only a string) messes with existing abstractions and user experience ("where can I adjust guest difficulty?", "Where can I change your picture?", etc.).
    • IMO, having a single solution to add players simplifies things for devs and users.

Round count vs. player count

Based on the number of participants, the number of rounds will be calculated

This should be separated. 5 people may want to play 3 rounds.

Song selection from subset of songs

See my comment above:

  • The question is, how can users select sets of songs?
  • A song search UI could be created that allows users to add found songs as subset for random song selection.
    • For example, user searches by artist "green day" and adds all found songs. Or user searches by year, language, etc. and adds all found songs. A search UI like in #325 could be reused
  • For now, I would skip random song selection from user defined subsets.

Versus scene vs. round result scene

  • I think these can be combined in a single scene: show current results after each round and tell users to prepare for next round.

Translations

  • I would not bother with translations until the concepts and UI have been finalized

achimmihca avatar Nov 14 '22 16:11 achimmihca

"Multiple values" => We should implement some chips component to select multiple values. It should be visible, which values have been selected.

2022-11-14 17_09_04-UltraStar Play - PartyModeSettingsScene - Android - Unity 2021 3 4f1 Personal _D

achimmihca avatar Nov 14 '22 16:11 achimmihca

The party settings UI need some description text field, for example to explain win conditions.

achimmihca avatar Nov 14 '22 16:11 achimmihca

I took inspiration from this PR, but implemeted a new UI for party mode configuration.

party-mode-config

I want to include these party modes in the upcoming Steam release. For now, I did the implementation in a private repository.

Thus, I consider this PR obsolete and will not merge it.

achimmihca avatar Jan 16 '23 08:01 achimmihca

Thus, I consider this PR obsolete and will not merge it.

I suggest trying to find a way of allowing contributions get merged while you have your fork with features that you keep private for now.

basisbit avatar Jan 17 '23 01:01 basisbit

I will close this as obsolete after #433.

@jean-moreno feel free to create a new ticket if you have further feature requests.

achimmihca avatar Jun 28 '24 13:06 achimmihca