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

Adjust gameplay element maximum size limits for backwards compatibility #25023

Merged
merged 2 commits into from
Oct 6, 2023

Conversation

bdach
Copy link
Collaborator

@bdach bdach commented Oct 5, 2023

This PR adjusts the maximum allowable element sizes enforced in #24706 such that they affect a significantly smaller number of user skins.

The new limits were chosen by sampling across over 4000 skins, using data graciously provided by @RockRoller01. The methodology for doing so is described in this gist.

The nominal goals were:

  • Keep the ratio of broken skins under 5%
  • In osu!, I've heard several voices that people don't really care about skins blowing up the sprite sizes, since it wasn't really exploitable. So I was more than fine generally even doubling the max allowed size to keep the percentage of broken skins low.
  • In taiko and catch, as there were numerous complaints and questions about putting a hard limit on gameplay element sizes to curb abuse, and thus I was a lot more stringent and generally only allowed up to about 25% slack (with the exception of droplets, which were generally the odd one out anyways, and so I've allowed them to be as large as a normal fruit).

The table below contains the full breakdown:

element previous maximum % of skins broken before new maximum % of skins broken after
hitcircle 128x128 12.26% 256x256 0.14%
sliderstartcircle 128x128 13.56% 256x256 0.90%
sliderendcircle 128x128 5.34% 256x256 1.73%
hitcircleoverlay 128x128 15.96% 256x256 0.13%
sliderstartcircleoverlay 128x128 15.51% 256x256 0.26%
sliderendcircleoverlay 128x128 4.90% 256x256 0.72%
reversearrow 128x128 36.47% 256x256 0.19%
sliderb 128x128 40.89% 384x384 0.53%
sliderb-nd 128x128 3.57% 384x384 3.57%
sliderb-spec 128x128 0.00% 384x384 0.00%
sliderfollowcircle 308x308 4.04% 384x384 1.52%
default-N 128x128 13.33% 320x320 0.03%
taikohitcircle 128x128 8.61% 160x160 3.84%
taikobigcircle 128x128 9.22% 160x160 2.99%
taikohitcircleoverlay 128x128 9.60% 160x160 2.71%
taikobigcircleoverlay 128x128 11.11% 160x160 3.24%
fruit-{bananas,pear,grapes,apple,orange} 128x128 7.59% 160x160 3.04%
fruit-{bananas,pear,grapes,apple,orange}-overlay 128x128 6.48% 160x160 3.15%
fruit-drop 82x103 34.45% 160x160 1.49%
fruit-drop-overlay 82x103 40.87% 160x160 1.62%

All dimensions are @1x. @2x elements are still allowed to be twice as big as limits above.

The new limits were chosen by sampling across over 4000 skins. The
methodology for doing so is described in the following gist:

	https://gist.github.com/bdach/6228ba41d128b23d1f89142f404108a3
@bdach bdach added ruleset/osu!taiko ruleset/osu!catch ruleset/osu! area:skinning next release Pull requests which are almost there. We'll aim to get them in the next release, but no guarantees! labels Oct 5, 2023
@bdach bdach requested a review from a team October 5, 2023 19:13
@bdach bdach self-assigned this Oct 5, 2023
- `default-N` number sprites maximum size increased by 1.25x to a total
  of 320x320 to counteract the 0.8x factor applied onto them when
  displayed on a hitcircle.

- `sliderb` and parts' maximum size increased to 384x384, to match
  `sliderfollowcircle`, as the two are apparently sometimes used
  interchangeably by skinners to achieve different visual effects.
@pull-request-size pull-request-size bot added size/M and removed size/S labels Oct 5, 2023
@bdach
Copy link
Collaborator Author

bdach commented Oct 5, 2023

Applied some further changes based on feedback from @RockRoller01 (see discord conversation).

  • default-N number sprites maximum size increased by 1.25x to a total of 320x320 to counteract the 0.8x factor applied onto them when displayed on a hitcircle.
  • sliderb and parts' maximum size increased to 384x384, to match sliderfollowcircle, as the two are apparently sometimes used interchangeably by skinners to achieve different visual effects.

OP and gist therein updated with the newest changes.

/// The maximum allowed size of sprites that reside in the follow circle area of a slider.
/// </summary>
/// <remarks>
/// The reason this is extracted out to a constant, rather than be inlined in the follow circle sprite retrieval,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems a bit terse but sure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:skinning next release Pull requests which are almost there. We'll aim to get them in the next release, but no guarantees! ruleset/osu!catch ruleset/osu!taiko ruleset/osu! size/M
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

Skin inconsistency between release and master
2 participants