PadWorld-Entertainment / worldofpadman

World of PADMAN game repository
https://worldofpadman.net
Other
41 stars 10 forks source link

Speedy powerup causes excessive FOV on widescreen displays if `cg_fovAspectAdjust 1` is used #298

Closed Calinou closed 1 hour ago

Calinou commented 4 days ago

On 1.7.0-beta1, the FOV change that applies when running with the Speedy powerup is much higher since the FOV is now adjusted for widescreen displays automatically.

https://github.com/user-attachments/assets/df5b700b-a781-48f5-8d14-b438a75fe6d9

This is especially true if you increase cg_fov above its default, e.g. cg_fov 105 on 16:9:

https://github.com/user-attachments/assets/599c0e2e-8adb-4e33-8172-e6cadeaba2ee

Conversely, if you use a lower-than-default FOV, the FOV change appears much more subtle. Example with cg_fov 60:

https://github.com/user-attachments/assets/be1faa2d-1fc1-48e6-8c47-7e61c442e300

To resolve this, the FOV offset needs to be changed from a fixed value to a dynamic value depending on the current FOV, with higher base FOV values warranting a lower FOV difference to keep the effect similar. I believe the same formula used for widescreen adjustment (or mouse sensitivity adjustment based on scoped weapon FOV) can be used here.

kai-li-wop commented 22 hours ago

I can confirm the fix, but the Speedy FOV effect is now basically completely gone in super widescreen. I tested with 2560x720 (32:9) resolution and there was no visible Speedy FOV effect compared to 1280x720 (16:9) where it is still visible. But at 1680x720 (21:9), which should be our maximum supported widescreen aspect ratio, it is still visible, but weak. In general, however, the fix gives super-widescreen players an advantage by reducing the distortion of the Speedy FOV effect.

kai-li-wop commented 6 hours ago

I think I found a good solution for this. The speedy factor usually is 1.5 but designed for 4:3 aspect ratio. With new wide screen aspect ratios like they are used today the speedy effect is to intense and due to auto fov correction it is even stronger, so like suggested the speedy factor of 1.5 needs to be dynamic.

If we devide it into some constant base and dynamic peak part I would to it like this: 1.0 + 0.5. So let's make 0.5 dynamic by aspect ration of the current screen --> factor = height / width.

Height Width Factor Base Peak Result
5 4 0,80 0.50 0.40 1.4
4 3 0.75 0.50 0.38 1.38
16 10 0.63 0.50 0.31 1.31
16 9 0.56 0.50 0.28 1.28
21 9 0.43 0.50 0.21 1.21

In the end the speedy factor is calculated this way:

speedy factor = 1.0f + base * height / width

In my tests this worked pretty well.

kai-li-wop commented 1 hour ago

A few screenshots of the result in different aspect ratios with and without speedy fov effect. Experience nearly stays the same in all aspect ratios.

32:9 Image Image

21:9 Image Image

16:9 Image Image

16:10 Image Image

4:3 Image Image

5:4 Image Image