osudroid / osu-droid

http://osudroid.moe
Apache License 2.0
506 stars 76 forks source link

Shrink playfield #52

Closed None1637 closed 3 years ago

None1637 commented 3 years ago

Add the option of "set playfield size", avoid to touch the status bar when playing

Rian8337 commented 3 years ago

Do notes and gameplay UI also shrink in this change?

None1637 commented 3 years ago

Do notes and gameplay UI also shrink in this change?

yes

Rian8337 commented 3 years ago

07th Expansion - rog-unlimitation (AngelHoney) [AngelHoney] [Guest]-1607586426841.zip (changed the extension to .zip because GitHub doesn't support .edr, please change it back to .edr after downloading) Beatmap: https://osu.ppy.sh/beatmapsets/28751#osu/116128

I played this with 50% playfield size. When the replay is viewed at a larger (maybe 70% or more) playfield size, it appears like a relax hack once the stream section enters.

Maybe something in replay storing needs to be changed or input field needs to be limited to the same size as the playfield? Either way, this seems like a critical bug. Imagine how many plays would be suspected as relax hack.

ImagineBlaze commented 3 years ago

Technically this issue can be "fixed" just by limiting the playfield shrink to only 80% minimum or even just allowing the 90% shrink only, so no inputs would go so far off-screen that it will be seen as Relax hacking. Since the original intent of this function is to just mitigate accidental swipes on phones' status bar and the 50% option was introduced just as a side-benefit to Tablet players who would like to play on a smaller playfield, it's a good enough compromise to get rid of the smaller zoom options if it means solving this issue.

EdrowsLuo commented 3 years ago

Maybe we should hurry up, this feature is important.

Rian8337 commented 3 years ago

How does the commit above solves the issue I mentioned? Wouldn't it just prevent?

Beyley commented 3 years ago

You could clamp the positions of cursors to the screen resolution in replays when playing back

EdrowsLuo commented 3 years ago

How does the commit above solves the issue I mentioned? Wouldn't it just prevent?

i clamp the touch position into rect (0, 0, screen width, screen height), if player touch outside the playfield, we move it to nearest edge (you can view the code or have a try)