Skip to content

Use colour hit error meter in catch - #38269

Merged
peppy merged 8 commits into
ppy:masterfrom
MingxuanGame:feat/use-colour-hiterror-meter-for-catch
Aug 7, 2026
Merged

Use colour hit error meter in catch#38269
peppy merged 8 commits into
ppy:masterfrom
MingxuanGame:feat/use-colour-hiterror-meter-for-catch

Conversation

@MingxuanGame

Copy link
Copy Markdown
Contributor

Moved HitErrorMeter into ruleset-only layer.

Judgement count, spacing and shape are referenced from Stable

@bdach bdach added the subjective PRs with subjective changes which have not been discussed prior. Need team consensus to proceed. label Jul 13, 2026
@bdach

bdach commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

Code seems mostly fine on a skim, but unsure of several subjective decisions made here.

  • The selected 1.25f judgement spacing on the meter looks bad / uneven:
    Screenshot 2026-07-13 at 12 23 59
    Also unsure on the overlap with the catcher on the classic skin.

  • Unsure about having two of these meters on argon & triangles, and still on the side too:
    Screenshot 2026-07-13 at 12 21 26

  • If we're entertaining per-ruleset placement of the error bar meter, then I'd say taiko should be adjusted because the current positioning of the left error meter is pretty bad in how it overlaps the drum:
    Screenshot 2026-07-13 at 12 21 45

Will need @peppy or someone design-adjacent to state preferences on all of the above.

@MingxuanGame

MingxuanGame commented Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

The selected 1.25f judgement spacing on the meter looks bad / uneven

Maybe it depends on resolution. On my screen it isn't obvious.
image


Also unsure on the overlap with the catcher on the classic skin.

On stable the square is translucent with black background. (Add an option to set transparency?) Here is on stable.

image

For the third, I'm not familiar to taiko. If ruleset-specific hit error meter was considered, mania should be re-designed meanwhile because the bar is far from the playfield.

osu_2026-07-13_19-15-30

@bdach

bdach commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

On stable the square is translucent with black background. (Add an option to set transparency?) Here is on stable.

image

The black background is less the point than the fact that the catcher is higher up on stable, thus the hit error meter covers less of it than lazer.

@MingxuanGame

MingxuanGame commented Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

The catcher is higher up on stable, thus the hit error meter covers less of it than lazer.

The catcher's scale depends on CS. Stable has the same issue.

image

peppy pushed a commit that referenced this pull request Aug 7, 2026
https://github.com/user-attachments/assets/8b01d637-8e7e-482f-a6a4-d36202ad33cb

| | stable | this PR |
| :-: | :-: | :-: |
| osu!, OD=0 | <img width="400" height="50" alt="stable-osu-od0"
src="https://github.com/user-attachments/assets/9ba522dd-5bdc-46c7-a79c-92809f96a9a4"
/> | <img width="400" height="50" alt="lazer-osu-od0"
src="https://github.com/user-attachments/assets/8b6603ef-8152-4e86-94a6-9f9d30633f8f"
/> |
| osu!, OD=5 | <img width="400" height="50" alt="stable-osu-od5"
src="https://github.com/user-attachments/assets/29172d7f-05c0-4fbd-9810-2bbfcd570e4f"
/> | <img width="400" height="50" alt="lazer-osu-od5"
src="https://github.com/user-attachments/assets/844f4310-47ee-4b72-bc77-a7f40963a54e"
/> |
| osu!, OD=10 | <img width="400" height="50" alt="stable-osu-od10"
src="https://github.com/user-attachments/assets/34afc432-5026-4da5-a6e1-7767b21e4382"
/> | <img width="400" height="50" alt="lazer-osu-od10"
src="https://github.com/user-attachments/assets/d34bfe61-25f1-4f54-8e5c-dbeeda0e1de7"
/> |
| taiko, OD=0 | <img width="400" height="50" alt="stable-taiko-od0"
src="https://github.com/user-attachments/assets/e8b729cf-aa48-4443-932f-3e7a21fcca87"
/> | <img width="400" height="50" alt="lazer-taiko-od0"
src="https://github.com/user-attachments/assets/b7bb987f-9e24-4922-8b9c-88fd0b5c8ea0"
/> |
| taiko, OD=5 | <img width="400" height="50" alt="stable-taiko-od5"
src="https://github.com/user-attachments/assets/fe984671-8755-4c34-9242-a1d4934d8dca"
/> | <img width="400" height="50" alt="lazer-taiko-od5"
src="https://github.com/user-attachments/assets/178eb7c7-c1cf-4466-80ce-afeb9d1a1062"
/> |
| taiko, OD=10 | <img width="400" height="50" alt="stable-taiko-od10"
src="https://github.com/user-attachments/assets/e2c7e2c3-e00f-4e14-8b9d-5f92d8d7da8c"
/> | <img width="400" height="50" alt="lazer-taiko-od10"
src="https://github.com/user-attachments/assets/e6e52fa7-8e1d-4ac7-bd0d-fc1c8ccb48f3"
/> |
| mania, OD=0 | <img width="400" height="50" alt="stable-mania-od0"
src="https://github.com/user-attachments/assets/a9f6f65b-c1c8-4241-9b51-72c957be38bf"
/> | <img width="400" height="50" alt="lazer-mania-od0"
src="https://github.com/user-attachments/assets/dcf001bb-024d-4c63-9169-3c30555b4d9d"
/> |
| mania, OD=5 | <img width="400" height="50" alt="stable-mania-od5"
src="https://github.com/user-attachments/assets/9b369c35-aaaa-4d06-b8b2-5c949ce55524"
/> | <img width="400" height="50" alt="lazer-mania-od5"
src="https://github.com/user-attachments/assets/f9b4381a-6df6-4781-b067-a9d5e08fc5f6"
/> |
| mania, OD=10 | <img width="400" height="50" alt="stable-mania-od10"
src="https://github.com/user-attachments/assets/7510719e-fb33-4b4c-8d5c-d59de3c9c8ab"
/> | <img width="400" height="50" alt="lazer-mania-od10"
src="https://github.com/user-attachments/assets/b008347e-496c-49f8-96c5-6c3d84694e88"
/> |

Things matching stable:
- Position of meter on unmodified legacy skins
- Size of meter
- Scaling of meter width with OD (widths of bars are derived directly
from hit windows)
- Hit bar size & animation
- Moving average arrow animation

Things intentionally not matching stable:
- Arrow indicator slightly larger (unsure why, measurements taken
verbatim from stable - possibly due to not using the same exact png
asset and instead using `Triangle`)
- Colours intentionally different
- MEH bars intentionally not shown in taiko because they are stable lies
(nothing in stable taiko uses that hit window)
- mania shows bars for PERFECTs and GOODs
- Meter does not fade out when there are no recent hits (may be brought
back later if there are complaints about it)

---

Follow-ups / scope limits:
- I have introduced a const for the magic `1.6f` constant that shows up
everywhere in
443f09d
(see also:
#37676 (comment)). I have
not however attempted to replace all inline references to `1.6f` with
the const here, I would ask that to be considered for a separate PR.
- In catch the meter degenerates to the following:
<img width="400" height="50" alt="catch-lazer"
src="https://github.com/user-attachments/assets/64b7e94e-1907-440e-bae4-ce9cc07ae8cd"
/>
stable would use the colour hit meter style instead here. Bringing back
parity in that respect was attempted in
#38269.
@bdach bdach removed the subjective PRs with subjective changes which have not been discussed prior. Need team consensus to proceed. label Aug 7, 2026
@bdach

bdach commented Aug 7, 2026

Copy link
Copy Markdown
Collaborator

Have fixed up conflicts - including silent ones - post-#38535 and fixed the spacing issue.

Will leave the other subjective matters for someone else to address if necessary.

Of particular note, this change may cause some users to end up with skins that have the hit error meter duplicated. This can happen because e.g. when editing a skin in osu! ruleset, the global and osu layouts get written to json, so users with existing skins will have a hit error meter in global. Which in turn means that e.g. when playing taiko, the taiko layout will fall back to default (because it's missing from the json) and the default will stack another hit error meter. I'm not sure I can address this without a potentially-destructive migration so I'd rather leave this up to users to fix themselves.

@bdach
bdach requested a review from peppy August 7, 2026 07:37
@bdach bdach changed the title Use ColourHitErrorMeter in catch Use colour hit error meter in catch Aug 7, 2026
@peppy
peppy merged commit 12df2e4 into ppy:master Aug 7, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants