Commit Graph

2046 Commits

Author SHA1 Message Date
Bartłomiej Dach 1af464d5ae
Bump difficulty calculator versions
In order for the new star difficulty to be shown to users on the next
release.

catch's difficulty calculator version is not bumped because the only
catch change pending deploy is https://github.com/ppy/osu/pull/28353 and
that affects performance points only.
2024-10-07 15:38:41 +02:00
Bartłomiej Dach 84d6467e48
Merge branch 'master' into taikostatacc 2024-10-07 14:15:29 +02:00
Bartłomiej Dach 7816c41b94
Only transfer difficulty slider values on commit
Closes https://github.com/ppy/osu/issues/30112.
2024-10-04 14:08:46 +02:00
Bartłomiej Dach 99eb26b7d5
Redo the layout of sections based on discord feedback
See
https://discord.com/channels/188630481301012481/188630652340404224/1291358770064130140
and everything after.
2024-10-03 13:53:21 +02:00
Bartłomiej Dach ddfa877b12
Fix code quality 2024-10-03 13:08:04 +02:00
Bartłomiej Dach b15608343b
Replace setup screen controls with new "form" controls 2024-10-03 11:49:03 +02:00
Dean Herbert 590f27e0a0
Merge branch 'master' into hotkeys-in-context-menus 2024-10-01 15:50:19 +09:00
Dean Herbert 9a39b80a4d
Merge pull request #29970 from bdach/volume-aware-sample-equality-pitfall
Fix argon volume-aware hitsounds not correctly playing immediately after object placement
2024-09-27 16:38:35 +09:00
Dan Balasescu 3111d6a74d
Merge pull request #29986 from OliBomby/refactor-placement-tool
Refactor placement blueprints to not be limited to hit objects
2024-09-25 17:59:43 +09:00
OliBomby e3b4483872 Refactor PlacementBlueprint to not be hitobject specific 2024-09-24 20:31:00 +02:00
Bartłomiej Dach e8a394f894
Fix argon volume-aware hitsounds not correctly playing immediately after object placement
Closes https://github.com/ppy/osu/issues/29832.

The underlying reason for the incorrect sample playback was an equality
comparer failure.

Samples are contained in several pools which are managed by the
playfield. In particular, the pools are keyed by `ISampleInfo`
instances. This means that for correct operation, `ISampleInfo` has to
implement `IEquatable<ISampleInfo>` and also provide an appropriately
correct `GetHashCode()` implementation. Different audible samples must
not compare equal to each other when represented by `ISampleInfo`.

As it turns out, `VolumeAwareHitSampleInfo` failed on this, due to not
overriding equality members. Therefore, a `new
HitSampleInfo(HitSampleInfo.HIT_NORMAL, HitSampleInfo.BANK_NORMAL,
volume: 70)` was allowed to compare equal to a
`VolumeAwareHitSampleInfo` wrapping it, *even though they correspond to
completely different sounds and go through entirely different lookup
path sequences*.

Therefore, to fix, provide more proper equality implementations for
`VolumeAwareHitSampleInfo`.

When testing note that this issue *only occurs immediately after
placing an object*. Saving and re-entering editor makes this issue go
away. I haven't looked too long into why, but the general gist of it is
ordering; it appears that a `normal-hitnormal` pool exists at point
of query of a new object placement, but does not seem to exist when
entering editor afresh. That said I'm not sure that ordering aspect of
this bug matters much if at all, since the two `IHitSampleInfo`s should
never be allowed to alias with each other at all wrt equality.
2024-09-23 13:38:26 +02:00
Givikap120 2995df7903 removed unnecessary includes 2024-09-22 15:04:21 +03:00
Givikap120 1b77b3912b initial commit 2024-09-22 15:01:58 +03:00
Dan Balasescu c7a2e79b6e
Merge branch 'master' into pp_refactoring_merge_multipliers 2024-09-12 16:22:55 +09:00
Bartłomiej Dach 130802e480
Add hotkey hints to editor menus 2024-09-04 12:16:54 +02:00
Dean Herbert 36b4013fa6
Rename `GameplaySkinComponentLookup` -> `SkinComponentLookup` 2024-08-22 18:46:03 +09:00
Dean Herbert 60d383448f
Avoid making non-ruleset transformers in `Ruleset.CreateSkinTransformer`
This didn't make any sense, so let's do it a better way.
2024-08-08 16:29:54 +09:00
Dean Herbert 3c572abaa7
Merge branch 'master' into ruleset-specific-combo-counter 2024-08-08 03:21:52 +09:00
Givikap120 e6fc4f6766 merged multipliers 2024-08-05 16:33:42 +03:00
Bartłomiej Dach 157cc884f4
Fix swells not being correctly treated in editor gameplay test
Closes https://github.com/ppy/osu/issues/28989.

Because swell ticks are judged manually by their parenting objects,
swell ticks were not given a start time (with the thinking that there
isn't really one *to* give). This tripped up the "judge past objects"
logic in `EditorPlayer`, since it would enumerate all objects
(regardless of nesting) that are prior to current time and mark them as
judged. With all swell ticks having the default start time of 0 they
would get judged more often than not, leading to behaviour weirdness.

To resolve, give swell ticks a *relatively* sane start time equal to
the start time of the swell itself.
2024-07-22 11:27:56 +02:00
Bartłomiej Dach c8a64c5950
Remove setup screen controls that do nothing useful
Before I go with a hammer to redesign these, I want to remove stuff that
does nothing first.

Hard-breaks API to allow rulesets to specify an enumerable of custom
sections rather than two specific weird ones.

For specific rulesets:

- osu!:
  - Stack leniency slider merged into difficulty section.
- osu!taiko:
  - Approach rate and circle size sliders removed.
  - Colours section removed.
- osu!catch:
  - No functional changes.
- osu!mania:
  - Special style toggle merged into difficulty section.
  - Colours section removed.
2024-07-10 14:53:16 +02:00
Dean Herbert 5350945340
Update `HasFlag` usages 2024-07-03 00:19:04 +09:00
Salman Ahmed dce1b4ec6c Merge branch 'master' into ruleset-specific-combo-counter 2024-07-01 08:31:40 +03:00
StanR df64d7f374 Refactor out taiko Peaks skill 2024-06-25 23:06:42 +05:00
Nathen 2fb22f1feb Move the return value for deviation below the local functions 2024-06-23 19:17:19 -04:00
Dan Balasescu 030853ed5a
Merge pull request #28472 from bdach/taiko-mod-relax
Implement relax mod for taiko
2024-06-17 13:49:17 +09:00
Bartłomiej Dach d7997cc93c
Implement taiko relax mod 2024-06-13 15:06:40 +02:00
Bartłomiej Dach 5fcea01c13
Merge branch 'master' into ruleset-specific-combo-counter 2024-06-04 15:44:11 +02:00
Bartłomiej Dach f13ca28d5e
Fix performance overhead from ternary state bindable callbacks when selection is changing
Closes https://github.com/ppy/osu/issues/28369.

The reporter of the issue was incorrect; it's not the beat snap grid
that is causing the problem, it's something far stupider than that.

When the current selection changes,
`EditorSelectionHandler.UpdateTernaryStates()` is supposed to update the
state of ternary bindables to reflect the reality of the current
selection. This in turn will fire bindable change callbacks for said
ternary toggles, which heavily use `EditorBeatmap.PerformOnSelection()`.

The thing about that method is that it will attempt to check whether any
changes were actually made to avoid producing empty undo states, *but*
to do this, it must *serialise out the entire beatmap to a stream* and
then *binary equality check that* to determine whether any changes were
actually made:

	7b14c77e43/osu.Game/Screens/Edit/EditorChangeHandler.cs (L65-L69)

As goes without saying, this is very expensive and unnecessary, which
leads to stuff like keeping a selection box active while a taiko beatmap
is playing under it dog slow. So to attempt to mitigate that, add
precondition checks to every single ternary callback of this sort to
avoid this serialisation overhead.

And yes, those precondition checks use linq, and that is *still* faster
than not having them.
2024-06-04 10:32:12 +02:00
Nathen f8f18b6cbd Fix naming convention 2024-05-29 09:40:59 -04:00
Nathen 1714567342 Save deviation calculations to variables 2024-05-29 09:40:39 -04:00
Dean Herbert 0d6adf160b
Share scale factor with hit target 2024-05-27 14:20:28 +09:00
Joppe27 76f13b21da Correct scale of taiko-glow element 2024-05-25 23:28:51 +02:00
Dan Balasescu 6304a5ed41
Merge pull request #27341 from Hiviexd/taiko-constant-speed-mod
Add osu!taiko `Constant Speed` mod
2024-05-23 21:01:53 +09:00
Dean Herbert d0b1ebff5a
Revert "Temporary rollback of framework / SDL3"
This reverts commit d7d569cf4e.
2024-05-22 16:29:39 +08:00
Dean Herbert d7d569cf4e
Temporary rollback of framework / SDL3 2024-05-21 14:36:16 +08:00
Dan Balasescu 3b8b56cbcb
Apply required changes after framework masking updates 2024-05-09 20:18:53 +09:00
Dan Balasescu 362a7b2c77
Remove unused members from GameplaySkinComponentLookup 2024-04-19 18:03:13 +09:00
Salman Ahmed 51f79c33e1 Fix URL pointing to non-existent commit 2024-03-29 23:33:06 +03:00
Dean Herbert c21805589e
Fix taiko mascot size not matching stable 2024-03-29 22:40:04 +08:00
Bartłomiej Dach b74f8dba41
Merge branch 'master' into verify-abnormal-difficulty-settings 2024-03-26 11:13:16 +01:00
Bartłomiej Dach 1866b4b6b1
Refactor abstract check to reduce duplication 2024-03-26 11:13:03 +01:00
Bartłomiej Dach e7cf1ab4df
Add checks for taiko drain rate 2024-03-26 10:58:39 +01:00
Bartłomiej Dach 6266af8a56
Fix taiko legacy score simulator not including swell tick score gain into bonus portion
Reported in https://discord.com/channels/188630481301012481/1097318920991559880/1221836384038551613.

Example score: https://osu.ppy.sh/scores/1855965185

The cause of the overestimation was an error in taiko's score simulator.
In lazer taiko, swell ticks don't give any score anymore, while they did
in stable.

For all intents and purposes, swell ticks can be considered "bonus"
objects that "don't give any actual bonus score". Which is to say,
during simulation of a legacy score swell ticks hit should be treated
as bonus, because if they aren't, then otherwise they will be treated
essentially as *normal hits*, meaning that they will be included in
the *accuracy* portion of score, which breaks all sorts of follow-up
assumptions:

- The accuracy portion of the best possible total score becomes
  overinflated in comparison to reality, while the combo portion of
  that maximum score becomes underestimated.

- Because the affected score has low accuracy, the estimated accuracy
  portion of the score (as given by maximmum accuracy portion of score
  times the actual numerical accuracy of the score) is also low.

- However, the next step is estimating the combo portion, which is done
  by taking legacy total score, subtracting the aforementioned
  estimation for accuracy total score from that, and then dividing
  the result by the maximum achievable combo score on the map. Because
  most of actual "combo" score from swell ticks was "moved" into the
  accuracy portion due to the aforementioned error, the maximum
  achievable combo score becomes so small that the estimated combo
  portion exceeds 1.

Instead, this change makes it so that gains from swell ticks are treated
as "bonus", which means that they are excluded from the accuracy portion
of score and instead count into the bonus portion of score, bringing the
scores concerned more in line with expectations - although due to
pessimistic assumptions in the simulation of the swell itself,
the conversion will still overestimate total score for affected scores,
just not by *that* much.
2024-03-25 19:09:38 +01:00
Arthur Araujo 6fa663c8ca Make check ruleset specific 2024-03-22 14:48:22 -03:00
Dan Balasescu 0beaa8e8c5
Merge branch 'master' into tcm-resume 2024-03-14 12:22:46 +09:00
nathen a9b3416a3f Remove MathNet.Numerics dependency 2024-03-10 00:37:28 -05:00
nathen 537059504a Fix comment 2024-03-10 00:20:06 -05:00
nathen 6ddb2b7f8b Include misses in the great window deviation calc 2024-03-10 00:19:04 -05:00
nathen caba0510db Compute the upper bound on deviation with a 99% confidence interval 2024-03-09 23:10:53 -05:00