UltraStar-Deluxe / USDX

The free and open source karaoke singing game UltraStar Deluxe, inspired by Sony SingStar™
https://usdx.eu
GNU General Public License v2.0
808 stars 160 forks source link

Add toggle to interpret rap notes as freestyle #828

Closed DeinAlptraum closed 2 months ago

DeinAlptraum commented 2 months ago

This allows rap notes to be interpreted as freestyle, which can be toggled in the menu by pressing T.

Open questions:

  1. imo this should be visualized somehow, showing if this setting is active. I'm not sure what would be the best way to do this, especially as for if/how that would need to be integrated with the theming system
  2. would a different shortcut/key be more appropriate? T was an arbitrary choice, just because it was free and the perhaps most fitting options, R and F, were not
  3. currently this setting is persistent until quitting the game. Should it be automatically reset after finishing a song, scrolling to a different song, when returning to the main menu etc.?
barbeque-squared commented 2 months ago

What is the underlying usecase for this feature?

Regarding your questions:

  1. I think it shows an icon if a song contains rap notes (somewhere where the duet indicator thing also is). Could for the time being show/hide that icon based on this setting? A better way is probably to change the icon to mean "This song normally has rap notes, but they won't show up as rap notes"
  2. I'm not the biggest fan of shortcuts for everything that only apply to 1% of songs (though I'll admit that the menus are also very strange to work with) but R is pretty useful so unless F is something incredibly specific, I think T is fine.
  3. It should probably reset like Duet Change does, see below for my reasoning

Technical things:

DeinAlptraum commented 2 months ago

What is the underlying usecase for this feature?

There was some discussion on the Discord (see song-creators-co-work channel) about people wanting to be able to sing songs with rap notes as if they were freestyle, depending on whether they feel like trying hard with rap. Someone suggested creating different versions on USDB for songs with rap notes, and then another version where all rap notes are turned into freestyle. @bohning rejected this idea, since these effectively lead to duplicates. The consensus seemed to be that it would be easiest to keep a single version with rap notes on USDB and have the games allow users to turn all rap notes into freestyle.

1. I think it shows an icon if a song contains rap notes (somewhere where the duet indicator thing also is). Could for the time being show/hide that icon based on this setting? A better way is probably to change the icon to mean "This song normally has rap notes, but they won't show up as rap notes"

I will look into adding a new icon that replaces the rap note icon when the setting is toggled on.

2. I'm not the biggest fan of shortcuts for everything that only apply to 1% of songs (though I'll admit that the menus are also very strange to work with) but `R` is pretty useful so unless `F` is something incredibly specific, I think `T` is fine.

F does "Add song to custom medley". I will leave this as T 👍🏼

3. It should probably reset like Duet Change does

&

* This is going to affect scores. It _should_ be a different md5 (for website highscore plugins) but also within USDX [...]

Good point, I didn't consider scores. Will change this to not save scores while the setting is active, and to also have the setting reset for the same events as DuetChange. Is that what you meant by

it should probably behave like however DuetChange behaves to at least have some consistency on this front

? No idea what the website highscore plugin stuff does since I've never used any of that, but will take a look.

* I'm not a fan of adding extra stuff to the Analyse txt-loading/parsing function. It's fine for the time being, but I've been meaning to get rid of the DuetChange parameter.

At the very least, this is very similar to DuetChange, so if you refactor that away you can probably apply the same idea to the RapToFreestyle parameter

barbeque-squared commented 2 months ago

Good point, I didn't consider scores. Will change this to not save scores while the setting is active, and to also have the setting reset for the same events as DuetChange. Is that what you meant by

it should probably behave like however DuetChange behaves to at least have some consistency on this front

I was referring to the "the setting should reset" here. Duets never save scores anyway, but while typing my comment I realized that it should also not save them when this setting is active.

I'm 99% sure duets don't attempt anything with highscore plugins. I recommend to first change/implement the other points. There should be some code on the score display page that only runs if the current song isn't a duet.

DeinAlptraum commented 2 months ago

I've implemented what we discussed, i.e.

One note: the icon change leads to a lot of effective code duplication on the theming-side. I don't think this can be prevented without changing a lot of other parts, and we currently have the exact same thing with MedleyIcon and CalculatedMedleyIcon, but still wanted to bring it up