Games How important is it to support higher refresh rates screens?

andymc

Well-Known Member
Licensed User
Longtime User
I only have 60hz phones to test my games on. How important do people think it is to support higher refresh rates screens, like 90hz and 120hz?

My games use the LibGDX library and currently expect the screen to update at 60hz. I'm thinking of buying a cheap 120hz phone, like a Galaxy A52 or a 90Hz phone like a Pixel 4 to test my games at higher rates and write fixes to fix the game speed. I'll adjust the games so they platy smoother at higher rates and also the right speed on lower than 60hz (if there's any phones out there that do that).
 

Sandman

Expert
Licensed User
Longtime User
Three thoughts.

1. Will it noticably improve gameplay?

2. Will the argument "Supports 120hz!" sell more games?

3. How much work is it to add support other than 60hz?

I think that's what I would consider before updating my games with support for other than 60hz.
 

Magma

Expert
Licensed User
Longtime User
@andymc

- I think FPS gamers... looking that... even if some of them doesn't know what exactly are Hz...
- If your "target group" is Gamers... those guys paying anything for having the best (for example in Greece... Gamers are 10% of population... that means... ~30% of users - because in Greece we have big percents of old ages / not having new births)...

So my opinion... if you have the time and knowledge - just do it...
 

ilan

Expert
Licensed User
Longtime User
it i pretty important and will explain why.
if we take for example your cloney bird example:

in LG_Render Sub you change the bird frame with this code:

B4X:
    Batch.DrawRegion3(BirdFrames(0,(birdColour*3)+(frames/8 Mod 3)),myBird.x,myBird.y,4.25%x,2%y,8.5%x,4%y,1,1,birdAngle)

you also change the variable "frames" in that sub using this code:

B4X:
frames = frames + speed

speed = 3

so we can see that you change every x time that sub is called the frame of the bird.
if would ask you why did you did it like this? you would answer because the animation looked good to me and i decided to use frames/8 Mod 3

but here comes the issue. because the first time libgdx brought to my attention was with your cloney bird example i coded all my games with this technique.
everything worked fine until i tried my game on a college 120hrz phone (samsung) and i noticed that the animation runs x2 times faster. now my pixel knight character looks like he is on ecstasy. on a 240hrz phone my pixel knight character smoking 😂

so what it means that LG_Render will be called x2 more on a 120hrz and x4 times more and 240hrz and this is why the animation should not be done like this. i understood it only when it was already to late and updating my game now is to much effort. next time i will follow @Informatix libgdx examples and do the animation correctly.

you really should try your games on a 120hrz phone to make sure the animations runs fine.
so bottom line it is very important. soon we wont have 60hrz phones anymore! it is always a good idea to have an updated phone to test your apps/games.
 

andymc

Well-Known Member
Licensed User
Longtime User
Totally agree @ilan (good to see you're still here). I'm going to order a cheap 120hz phone and adapt my most popular games to support variable frame rates, so they'll play the same on all devices. I have seen an argument to say you should limit you game to run at 60fps. But this feels like the wrong thing to do, especially for simpler games, like what I write, where the game loop should easily be able to run at 120hz or even 240hz, and it makes the player feel like the game is using their phone to it's fullest potential.

Anyone got any good recommendations for 120hz or 90hz phones for me to test with?

So far I'm looking at either a Pixel 4/5 (1080p 90hz) or a galaxy A52 5g (1080p 120hz). the resolution isn't too important, it's more the refresh rate that matters. Performance wise, I keep my games simple and they should run at full speed with no slow down on all devices.
 

Magma

Expert
Licensed User
Longtime User
Anyone got any good recommendations for 120hz or 90hz phones for me to test with?
..well...

at XMAS bought 2 (for my kids) of Moto G32 (8GB/256GB with Snapdragon) - even if Motorola is now Lenovo... and not any special android mui (like xiaomi or samsung) - i think that is a VFM... for 100EUR/device i got it... it is playing Fortnite too.. it has 90Hz Screen... the only bad that is for now in Android 13... waiting for 14 at summer...
 

ilan

Expert
Licensed User
Longtime User
I have seen an argument to say you should limit you game to run at 60fps.
yes i also saw that but to tell you the truth i could not get it work and i also agree this is not the right approach.
but until i will fix the game i wanted to use this approach but unfortunately could not make it work.

Anyone got any good recommendations for 120hz or 90hz phones for me to test with?
i bought my daughter the OnePlus 8 Pro that has 120hrz and it is a wonderful phone.


it cost around 400$ new. used should be much cheaper.

i also bought recently a samsung a34 for my second daughter that also has 120hrz


and this phone is even cheaper and also a good phone. if you are willing to spend more money i would go with the OnePlus.
 

ilan

Expert
Licensed User
Longtime User
btw the new game i am working on i am using X2. my first try with x2 was not successful. the game i choose did not fit that framework but for the current game type i am working on it seems like X2 is doing a pretty good job.
i hope i will not face unsolvable issues in a later stage. :eek:
 

andymc

Well-Known Member
Licensed User
Longtime User
I've not tried X2 yet, at first I thought it looked too complicated compared to how I normally write games, and that it's only really good for physics based games like Angry birds. I'm not sure it would be useful for arcade classic games like space invaders, pac man, breakout or asteroids. I like to have complete control and it feels like a physics framework takes away from that.


I've decided on the Galaxy A52s to start with my high refresh rate dev journey. I got it for a good price on Amazon refurbished. It's 120hz and 1080p with good performance. Will report back once I've made the updated required. I'll then need to test on 90hz and 144hz phones so if anyone has those that would be great.
 
Last edited:

ilan

Expert
Licensed User
Longtime User
I'll then need to test on 90hz and 144hz phones so if anyone has those that would be great.
i think that once you fix the code to draw the frames correctly it should look the same on every 60fps and above phone.

fred put really good examples:


here is an official example of an animation using libgdx
 

kimstudio

Active Member
Licensed User
Longtime User
Please enlighten me as I am confused on the impact of display refresh rate.

Normally frame rate is controlled by timer in program controlled by coder and has nothing to do with display refresh rate. Can we get the display refresh rate from some kind of API and sync with frame update like a callback function?
 

ilan

Expert
Licensed User
Longtime User
Please enlighten me as I am confused on the impact of display refresh rate.

Normally frame rate is controlled by timer in program controlled by coder and has nothing to do with display refresh rate. Can we get the display refresh rate from some kind of API and sync with frame update like a callback function?
If you use the correct way to loop through your frames the refresh rate should not effect your animation. The problem appears when you hardcode the animation like change frame x time the update sub is called. This is wrong because you cannot assume that the update sub is called the same times on every phone.
It is not this is why you should check how much time (in ms) past from the last time you show the frame and if x ms past you change the frame. Libgdx has build in function for that this is why it is important to use them.
I learned that too late!
 

Magma

Expert
Licensed User
Longtime User
What is refresh rate?
At its core, refresh rate is a measure of how many times per second a display updates the image it shows. It is expressed in hertz, which indicates the number of cycles per second. In simpler terms, a refresh rate of 60Hz means the screen refreshes or redraws itself 60 times per second. This continuous update creates the illusion of a fluid and seamless image, which is crucial for a variety of applications, from watching videos to gaming.

Monitor screen refresh rates are available in many different increments of measurement, from the most basic clocking in at 60Hz to 155Hz monitors and beyond. ...

... this was taken from a site..
But I m going to add this.. for all these happen need a right cpu, gpu..

In case we examine working with ms, ns limits the problem...

Also as video, animation old designer.. 25-30 frames pet second is what the eye catching... anything more is helpful for gamers need more control
 

kimstudio

Active Member
Licensed User
Longtime User
For example, I made a game using a timer with interval of 25ms to update a frame, then no matter a phone using a 60Hz or 120Hz display, my game will have 40FPS. However, if my game updates each frame in 10ms/100FPS then a 60Hz display will only give you 60FPS at most.

My point here is why the display refresh rate affects my game sourcecode? unless we have API that when a hardware display update a frame we get a callback function to our frame update function, then we need to know the refresh rate to correctly control game speed.
 

Magma

Expert
Licensed User
Longtime User
For example, I made a game using a timer with interval of 25ms to update a frame, then no matter a phone using a 60Hz or 120Hz display, my game will have 40FPS. However, if my game updates each frame in 10ms/100FPS then a 60Hz display will only give you 60FPS at most.

My point here is why the display refresh rate affects my game sourcecode? unless we have API that when a hardware display update a frame we get a callback function to our frame update function, then we need to know the refresh rate to correctly control game speed.
If the monitor, display has the speed ... the hz ...will be able to show 100fps... and be smoother (it has to do with what displaying, may be the code sent the 100 fps but the display will only catch 60 - if it is 60Hz - this ofcourse will not change the timeline)

So, your point has meaning..
 
Last edited:

ilan

Expert
Licensed User
Longtime User
made a game using a timer with interval of 25ms
this is exactly the different how a timer work and how libgdx lg_render works
using a timer will ALWAYS give you the same result unless the interval is too low for the processing sub as long the processing takes less time then the interval it will work the same because you update the game relating to time and not to when ever the phone is able to call lg_render.
 

Magma

Expert
Licensed User
Longtime User
this is exactly the different how a timer work and how libgdx lg_render works
using a timer will ALWAYS give you the same result unless the interval is too low for the processing sub as long the processing takes less time then the interval it will work the same because you update the game relating to time and not to when ever the phone is able to call lg_render.
but lg_render ... has only to do with the Hz of Display... or / and with GPU/CPU ?
 

ilan

Expert
Licensed User
Longtime User
Hz of Display... or / and with GPU/CPU ?
it is hard to say but i accounter issue when switching between different hrz displays. i believe that gpu and cpu may also effect the times lg_render is called this is why you always need to make sure to check how much ms has past from last rendering and not render your sprites using hard coding like every 3 times change the frame etc.

check this out:

and this:
 

kimstudio

Active Member
Licensed User
Longtime User
Yes I am not familiar with libgdx but I know some game engines just try to update as soon as possible when CPU is in idle. In this situation timestamp must be controlled by programmer to make sure the frame rate is correct.
 

andymc

Well-Known Member
Licensed User
Longtime User
I think ultimately, you need to try get your games to run at either the full refresh rate the screen can do, or at a lower say 60fps rate as an option, the 60fps rate may even save battery power on higher end devices. But you'd need to put a delay in your game loop to stop libgdx rendering as fast as it can, which for simple games, will likely be the maximum refresh rate of the screen (say up to 144hz on some phones), so your game would be unplayable if you don't adjust the amount each item moves in the game to allow for the increased frame rate. I've got a 120hz phone arriving today and I will amend my flappy bird demo tutorial to handle any refresh rate, by adjusting the game movement in response to the current screen refresh rate.
 
Top