ppy / osu

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

Fully customizable hit & score processing #4869

Closed abraker95 closed 3 years ago

abraker95 commented 5 years ago

Part I: Hit processing

The scoring window for each note in response to a key press or release can be described in 3 parts: Hit, Miss, and Nothing.

The ranges can be visualized as such with a vertical line at the center representing where a key should be pressed or released:

The following parameters dictate the ranges of the hitwindow sections:

The nothing range is the lack of a hit or miss range, so it does not have a dedicated parameter. Players would be able to adjust the hit and miss ranges to suit their desired experience. Additionally, the following options would allow to modify the behavior of the hitwindow sections. Rectangle outline has been included in figures to tell apart scoring range boundaries:

If notes are too close together, multiple hitwindow sections may overlap. These can be handled in one of two ways: Either process all overlapping sections per key event, or process one overlapping section per key event. The following options allow to control this individually for misses and hits:

Part II: Judgement & score processing

Judgement processing happens after registering a score or miss, the point where ms from the center is determined and converted to score. Currently different portions of the hit range correspond to various discrete score points determined via OD. I am requesting:

Editing discrete scoring ranges would work similar to a gradient map tool. I'll use Krita's gradient map tool as an example, where elements would correspond to the following: Additional scoring ranges can be added or removed freely, allowing as many or as little various scoring points as desired. These ranges would then be mapped onto the scoring window's hit range symmetrically. Custom presets can be made, and OD presets would be included to retain compatibility with ranking. A "ranked" button would be included to apply the preset corresponding to the beatmap's OD.

Editing continuous scoring would work via preset window functions. Common windows functions are: Gaussian, Exponential, Triangular, and Rectangular, but others listed here can also be implemented. Each of those windows have parameters that control the height, steepness, etc which would be available for customization.

peppy commented 5 years ago

This mostly sounds out of scope for the way osu! is geared to be played.

Did you intend to see this in the mapper's options or player options? Honestly I'd say specific combinations of judgement changes should be published as mods or rulesets, rather than allowing infinite options in advanced customisation. Reasoning is that adding this kind of customisation (while possible) makes it nigh impossible to have leaderboards or systems that the average player can understand.

vernonlim commented 4 years ago

If I'm welcome to comment:

Having this as a feature (mainly Part II) somewhere as an unranked mod (addressing the problem with the leaderboards) would be a godsend for players (especially mania) looking to improve, because it allows them to play with other rhythm game's processing systems.

As you mentioned, the average player has no chance to understand this type of system — but they can surely understand presets. Implementing this somewhere, then having a 'Custom Hit/Score Processing' mod with different pre-made presets selectable in its mod settings would allow for infinite options (if the player wants to go through the trouble to create their own), while still being friendly to the average player.

One example of a preset that would be amazing to have is Wife scoring (from Etterna Online), which is a continuous version of the Stepmania scoring system. I can attest that many mania players play, or switch to Etterna because of this scoring (and other things), because of how much more accurately it represents player performance than mania's.

None of these presets have to be ranked (unless it is possible to convert the score to mania's current scoring system in post by storing replay information and reprocessing it, like how Etterna converts every score to Judge (OD) 4, even if played on Judge 5, 6, etc) because the main use of them is for training.

Non-Mania modes also benefit a ton. I've always wanted a sort of 'rainbow 300' in standard that is tighter than a 300, displays a different sprite, but contributes the same accuracy as one in order to fine tune my timings. This could be done by just adding another scoring range for it. I'm sure some taiko players would like having more than 2 judgements as well, which is also possible if this type of customization is implemented.

If it's not too hard to implement, I feel this feature would improve osu's reputation as a competitive/serious rhythm game greatly.

smoogipoo commented 4 years ago

I think presets are probably fine to have. For example we can probably make a mod just for "wife scoring" (looks to be just a continuous curve?) which has a suitable description and can be documented ahead of time, via a wiki or whatever else.

"Fully" customisable settings are probably too much though.

vernonlim commented 4 years ago

I agree that they are too much for the average player to understand, but there still needs to be a way for advanced users to create their own presets.

Perhaps they could be created through text editor, with a file following a format, where all the parameters such as scoring ranges, hit and miss ranges, whether it's discrete or continuous and what function to use if it's the latter can be entered in it, then imported into the game. There is always going to be some preset that someone out there wants, but isn't implemented into the game yet. This way, the community themselves can create that missing preset, and get it added to the list of presets that come with the game if it gets popular.

This does not affect the ordinary player at all, and should satisfy more advanced players. A system like this would also make the implementation of official new presets much easier.

bdach commented 4 years ago

At a risk of sounding snippy, there is such a file format, and it's called C#.

The degree to which you want to be able to control gameplay mechanics is too complex for 99% of users, requires too much work in implementation in proportion to actual end user gain, and will be a maintenance nightmare. Mods and rulesets should be the primary, constrained way to influence gameplay (and even then I'm a little worried that an abundance of mods and their interdependencies could make the mod system utterly incomprehensible).

Customising everything is not viable long-term. The game has to be opinionated on some things, else it'll become this ball of switches, bells and whistles which nobody fully understands.

vernonlim commented 4 years ago

I am aware anyone can just make a pull request implementing this, with enough knowledge and time.

Alright then, it being a maintenance nightmare is certainly something I can understand. What smoogipoo said is probably the best then - a few presets that are in high demand as mods (like continuous scoring). Thanks a lot for discussing this.

hndada commented 4 years ago

I agree with ppy, this feature should be treated as discrete mods or ruleset.

Rather, as a mania player, I wonder what if OD and HP of all mania beatmaps were set to some proper constant, not selected by a mapper. This would help lessen the gap between beatmaps' (improved) sr and its difficulty that players would feel. I know in osu!stable, LN maps needs lower HP parameter value than other maps like BMS but this can be resolved in laser. This could be one of separated rulesets as well if there're many cons for this.