ppy / osu

rhythm is just a *click* away!
https://osu.ppy.sh
MIT License
15.31k stars 2.28k forks source link

Multiple skin.ini commands ignored for keycounts over 10 #23620

Open AkiraMorilas opened 1 year ago

AkiraMorilas commented 1 year ago

Type

Game behaviour

Bug description

As shown in screenshot:

  1. stages are split despite "SplitStages: 0" set in skin.ini
  2. column dividers are shown arbitrarily despite being manually set with "ColumnLineWidth:", more specifically they're correct on the left stage, but then in the same spot on the right stage ignoring what is set in skin.ini

Tested on CircusGalop Wide skin in 12K, 14K, 16K and 18K https://drive.google.com/file/d/1_T_wNMpsy9Kr-c9m1qrdxXAjwsMj3JYC/view

Screenshots or videos

osu_2023-05-21_21-41-25

Version

2023.513.0-lazer

Logs

database.log input.log network.log performance.log runtime.log

AkiraMorilas commented 1 year ago

Now that there are 4 ranked maps that are affected, I believe this should be added to the lazer ranked play project

https://osu.ppy.sh/beatmapsets/1976303#mania/4101927 (beatmap in the screenshot) https://osu.ppy.sh/beatmapsets/1974347#mania/4097427 https://osu.ppy.sh/beatmapsets/2015672#mania/4196025 https://osu.ppy.sh/beatmapsets/2047870#mania/4275754

AkiraMorilas commented 1 year ago

Looking in the code, it appears that there is a hardcoded limit of 10 lanes per stage in ManiaRuleset.cs on line 50. I tried to change it myself, but I got a compilation error and apparently I need a version of .NET SDK that is newer than what is in Mint's repos. This limit was added in commit 4c689c6ad2585087d8495514f755e4c25579b9d3. If there turn out to be no drawbacks to just setting that to 20, then that would fix vast majority of 10+K skins. The only skins which would still be broken are the ones that both use non-standard collumn lines AND split the stage, but looking through the 10+K Discord's resource sheet the majority of the skins do not split stages at all, and only one skin does both.

bdach commented 1 year ago

That is the wrong place to touch. This needs one of us to look at stable source as to what stable does but I don't believe touching that const is correct. Its primary usage is not skinning.

AkiraMorilas commented 4 weeks ago

While trying to create a skin that would allow me to play some of the 11 ranked maps affected by this bug in a non-confusing fashion, I have ended up making more discoveries. I have compiled them into a convenient table.

skin.ini command does it work note
SplitStages: no forced split on 12K, 14K, 16K and 18K
StageSeparation: no quite obvious given the stages are forced apart but I figured I'd check anyway
ColumnStart: no changed it from 144(my default, calculated to center the stage in stable) to 14, still centered, to be fair I like that it's centered but it's still different from stable
ColumnWidth: no left stage is correct, right stage is exactly the same as left even when not supposed to
ColumnLineWidth: no left stage is correct, right stage is exactly the same as left even when not supposed to
Colour#: no left stage is correct, right stage is exactly the same as left even when not supposed to
ColourLight#: yes
KeyImage#: yes
KeysUnderNotes: yes
SpecialStyle: no not even in <10k, seems to be straight up unimplemented

Overall, combining window resolution of 860x920, stupidly long key skin textures and KeysUnderNotes: yielded a somewhat readable skin, but it's as stupid as it sounds.