Jump to content

Photo

How frame rate affects game difficulty [UPDATE 13/03/2013]


  • Please log in to reply
412 replies to this topic

#1
Caratinoid

Caratinoid
  • Members
  • 982 posts
TL;DR: Some aspects of game difficulty depend on the frame rate of the hosting player in this game, the higher the frame rate the harder it gets, which is not normal.

UPDATE 13/03/2013:
I managed to make a patch for shield regen BUG (see below), it also fixes a bug where asari evade was breaking her shield gate. You need to replace one of the files to apply the patch. Anyone interested in testing it out can PM me to get a download link.

I will attempt to fix other game bugs as well, anyone interested in helping can PM me.


Ok this keeps popping up in different threads and I'm yet to see a proper explanation for some weird phenomenons so I guess I'll have to do it myself. Pff... fine, let's get it over with, wall of text incoming.

First of all, why am I talking about frame rate here and not the processing power? Because it doesn't matter what CPU you have. AI mechanics in unreal engine are calculated on a per frame basis which means that you'll see no difference if you compare two computers with different processors running the game at the same frame rate. If you CPU can not handle the AI calculations it will simply not be able to run the game at an acceptable frame rate. I tested this multiple times by underclocking my CPU, overclocking it, turning off cores and it doesn't matter, the game still behaves the same at a given frame rate. Some things in the game are frame rate dependant however so keep on reading.


AI targeting algorithm

Enemies don't have extremely high accuracy by design, and by accuracy I mean the direction they are shooting at not the bullet spread or distance. It would be easier to make them hit you every time but that would make the game less fun. It has nothing to do with processing power, the AI targeting algorithm for enemy units has been simply designed that way. This algorithm provides balans between player movement speed, total shields and the damage taken. Main idea here is that a faster moving character should get hit less. However there is a BUG in that algorithm, it only works the way it was supposed to work at a certain frame rate, which is probably either 30 FPS (default for x-box) or 60 FPS. The balans gets out of hand if you have a higher or lower frame rate. At 10 FPS for instance you will not get hit even if you are walking. Same happens if you increase frame rate, every 10 FPS counts here, you can easily see the difference up to 90 FPS, the higher it gets the more bullets you'll catch while running.
Note that if you stand still you will get shot right in the face at any frame rate and obviously you should not try to run away in a straight line, it would make as much sense as trying to outrun a tall tree falling on you instead of stepping aside.
All AI calculations are performed on the hosting player's computer which means that the frame rate of the hosting player affects all clients while clients can run at any frame rate and this will not affect the game in any way. Here is a video I made to show how this algorithm performs at a very low frame rate (10 FPS):

Video (10 FPS)

The above video is a very extreme example of course but it shows how the algorithm is working. Notice how the aiming of enemies is a bit off there while I move slowly, this is intended behavior actually but obviously it should not be as distinct. At 30 FPS you can avoid bullets by running perpendicular to the enemy line of sight, this helps characters like fury and drell to quickly advance to a group of enemies even on an open map without getting hit if you keep moving in zigzags. This is much more difficult to do at 60 FPS and even more difficult at 120 FPS. Basically you'll need to take an adrenaline mod or use a cyclonic mod if you switch to a higher frame rate to compensate for the increase in difficulty or switch to a more defensive play style.

Also note that if you do get hit while running that will instantly make you a higher priority for all enemies which most of the time will result in a second fire burst from the same enemy or some random mook popping out of freaking nowhere and finishing you off (that's what nemeses are for). That wouldn't have happened if you didn't get hit in the first place.

A group of skilled players will suffer less from the effects of a higher frame rate because most of the time they will simply kill or at least stagger everything before it can even do something so they may not even notice this. If you solo the game or play with new players however then you'll will have it much easier if you play at 30 FPS instead of 60 mainly because you'll have a higher chance to run away every time you get yourself in a bad situation or just need to change your position quickly without having to look left and right first. Here a short video showing how to take advantage of 30 FPS mode on gold with no shield boost gear and no cyclonic or adrenaline mods:

Video (30FPS)

Having the ability to run away when in danger is crucial for solo runs and playing characters such as fury is much easier if you know how to move. At 60 FPS and above that strategy doesn't work anymore, even running will get you killed. The video above makes it look a bit easier than it is but every turn you make is crucial. You have to move perpendicular to the enemies when they are firing but you can run in any direction between bursts.


AI response time and behavior

This one is more difficult to measure but it looks like with higher frame rates the enemy units will respond faster to player actions and will change their behavior more frequently, they will notice you faster when you flank them, they will stay in cover less making it more difficult to shoot them in the head while they sit still and things like that.


Shields regen BUG

Some characters will regenerate their shields slower than usual. This varies for every character but it can add up to 2-3 seconds extra for some of them. At some point some characters will stop regenerating their shields at all. Squashy characters seem to hit this bug sooner than the rest. A level 1 drell with 250 shields will not regenerate his shields past 75 FPS. Same happens with vorcha.

I disassambled the code responsible for this. Your shields are stored in memory as a floating point number, how much shields you get each frame is calculated as a floating point number, however the result is then converted to integer and then back to float, making you lose the floating point part. The consequences can be seen here:

Posted Image

The intended shield recharge time for gold is 3.7 seconds. Actual recharge time can be calculated like this:

Recharge time = Shields / (FPS * Integer(0.25 * 1.075 * Shields / FPS))

The exact frame rate and recharge time will be a bit different in practise because delta times between cpu frames may not be equal even if your graphical frame rate is steady. That "integer" part is the buggy part, without it you would have : 1 / (0.25 * 1.075) = 3.72 sec.

The only work around at the moment is to put all points in fitness which will will be just enough for drell to slowly regen shields even at 120 FPS. You need around 450 shields to be able to regenerate them at those frame rates. Using a cyclonic mod also helps.


Using powers from hard cover at 120+ FPS BUG

Simply pressing power button while in cover will pop you out of it but will not cast the power if you run the game at 120 FPS or higher. Workaround here is to press the aim button first to pop out of cover and then to cast your power.


Frame rate and network latency

Hosting a game at a higher frame rate will decrease the ammount of visual lag for clients, for example if you detonate a biotic explosion as a client you'll see it explode and hear the boom sound a bit faster because the computer of the hosting player will be able to process your action faster. This is especially noticable if the host is playing at a very low frame rates (< 30 FPS) which will add some extra time on top of your network latency.
So should the player with the highest frame rate host then? Well, if your network latency is low then it doesn't really matter as long as you don't go under 30 FPS. If you have a very high ping while playing off host and you get yourself in a situation where you need to execute some action to avoid being killed, like stepping behind cover or using your power to stagger an enemy or shoot it in the face with claymore the result may be not what you had in mind, you'll just die even if you did react in time. While the lag is to blame here of course you would get a little more time to react if the host was playing at a lower frame rate not to mention that the game would be a bit less difficult compensaiting for your bad connection. I have some friends who play at a much lower frame rate than me and the ping between us is really high, if I host they will often get killed before they can even see it, this is not so severe for me if they host. This happens because your action is being recieved after the host has already decided that you are dead, the faster the frame rate, the faster it may come to that conclusion. So yeah if you have a noticeble lag between two players then it's probably better to select someone with a lower frame rate as host to make the game a bit more forgiving.


Playing at 120 FPS. Does it matter?

I get asked this when I mention my frame rate and it seems a lot of people still think it doesn't make any difference or even that humans can't see past 30 FPS but the difference is huge. You'll notice it immediately if you quickly turn your camera around, at this frame rate you don't get that mess all over you screen but can see everything very clear even when there is a lot movement going on. Your mouse feels more responsive and it's easier to shoot moving targets because their animation is much smoother and because you can aim faster since your reaction time is not limited by frame rate anymore (you can't aim if you can't see it). FPS games benefit the most from it and while Mass Effect is not really a first person shooter the multiplayer is pretty close to it. You don't really need that for games where you don't move your camera very quickly, like strategy games or slow paced third person view games but it will still look much better.


How to set your frame rate?

In your documents folder in "Documents\\BioWare\\Mass Effect 3\\BIOGame\\Config' you will find a file 'GamerSettings.ini'. In this file there is a section called [SystemSettings], add to this section the following lines:

UseVSync=True
SmoothFrameRate=True
MinSmoothedFrameRate=22
MaxSmoothedFrameRate=62


Those are the default values, as you can see the game has forced vsync and a hard frame rate cap of 62 FPS. Setting MaxSmoothedFrameRate to 30 will cap your frame rate at 30 FPS for example, if you want to go higher than 62 FPS just set this value to whatever you want.

There is also an internal frame cap of 90 FPS if you turn SmoothFrameRate off and play off host. In order to go higher than that you should leave SmoothFrameRate on and set MaxSmoothedFrameRate to a higher value, this will override the 90 FPS cap.


Questions:

What do you think was the intended frame rate on pc and thus difficulty? Is it 30 FPS like on x-box or is it 60 FPS making the game more difficult on pc to account for better controls?

Does any one else play this game at 120 FPS? Do you host platinum games?

Edited by Caratinoid, 13 March 2013 - 08:36 PM.


#2
capn233

capn233
  • Members
  • 17,253 posts
This was actually discussed decently several months ago. Some of us made videos with artificially capped framerates showing the ability to run around in an open space and hardly get hit. That is when the discussion about AI recalculating lines of fire being locked to framerate came about.

edit:  Didn't watch your vid in entirety but the linked one was from September, which is when I made a video of running around in the middle of Giant hardly getting hit at 20fps or so.

edit2: I forgot to mention, I didn't recall anyone discussing shield restore or power casting at high framerates.  Interesting information there.  Not that the rest isn't interesting. :)

Edited by capn233, 27 January 2013 - 09:45 PM.


#3
Caratinoid

Caratinoid
  • Members
  • 982 posts

capn233 wrote...

This was actually discussed decently several months ago. Some of us made videos with artificially capped framerates showing the ability to run around in an open space and hardly get hit. That is when the discussion about AI recalculating lines of fire being locked to framerate came about.

edit:  Didn't watch your vid in entirety but the linked one was from September, which is when I made a video of running around in the middle of Giant hardly getting hit at 20fps or so.


Yeah I remember, I was part of that discussion. :whistle:

Now I'm just looking for an answer if I'm being a masochist for running the game at a higher frame rate or was it intended to be played that way.

#4
capn233

capn233
  • Members
  • 17,253 posts

Caratinoid wrote...

Now I'm just looking for an answer if I'm being a masochist for running the game at a higher frame rate or was it intended to be played that way.

Doubt it was anticipated.

Confidence on that is as close to 1 as you can get without it actually being 1...

Reason being is that as we all know this game was developed for Xbox which will essentially have a static framerate across the units.  So just program the AI based on the framerate and you will have expected behavior across different hosts because they all run identical hardware.

Edited by capn233, 27 January 2013 - 09:47 PM.


#5
Deerber

Deerber
  • Members
  • 16,822 posts
 Awesome piece of information. 70% of what Mass Effect on pc is is here.

Thank you so much for sharing.

Also... I knew of this before it went mainstream B)

#6
UnknownMercenary

UnknownMercenary
  • Members
  • 5,547 posts
It is noticeably more challenging to play a squishy class when you are hosting. :pinched:

#7
parabolicity

parabolicity
  • Members
  • 317 posts
That's really interesting, thanks for the write up.

#8
capn233

capn233
  • Members
  • 17,253 posts

UnknownMercenary wrote...

It is noticeably more challenging to play a squishy class when you are hosting. :pinched:

Unless your computer is very slow, then it is easier to not get hit. :)

Edited by capn233, 27 January 2013 - 09:48 PM.


#9
brazen_nl

brazen_nl
  • Members
  • 1,178 posts
Holy cow ... so I should remove one video card (I run SLI) and severely downclock the remaining one, actually.

#10
capn233

capn233
  • Members
  • 17,253 posts

brazen_nl wrote...

Holy cow ... so I should remove one video card (I run SLI) and severely downclock the remaining one, actually.

Or you can simply run something like MSI Afterburner and lock the framerate at a low rate.

AI calcs depend on your output framerate so it is nearly irrelevant what the hardware is if you lock it at 15fps.

#11
Caratinoid

Caratinoid
  • Members
  • 982 posts

Deerber wrote...

Also... I knew of this before it went mainstream B)


Ha, actually true this time.;)

#12
brazen_nl

brazen_nl
  • Members
  • 1,178 posts

capn233 wrote...

brazen_nl wrote...

Holy cow ... so I should remove one video card (I run SLI) and severely downclock the remaining one, actually.

Or you can simply run something like MSI Afterburner and lock the framerate at a low rate.

AI calcs depend on your output framerate so it is nearly irrelevant what the hardware is if you lock it at 15fps.

I would, but low FPS gives me a headache. :(

#13
UnknownMercenary

UnknownMercenary
  • Members
  • 5,547 posts

capn233 wrote...

UnknownMercenary wrote...

It is noticeably more challenging to play a squishy class when you are hosting. :pinched:

Unless your computer is very slow, then it is easier to not get hit. :)


I meant "you" as in Caratinoid. ;)

Although now that you mention it I'll probably have an easier time soloing versus Cerberus if I lock my framerate to 30...

#14
Caratinoid

Caratinoid
  • Members
  • 982 posts

capn233 wrote...

brazen_nl wrote...

Holy cow ... so I should remove one video card (I run SLI) and severely downclock the remaining one, actually.

Or you can simply run something like MSI Afterburner and lock the framerate at a low rate.

AI calcs depend on your output framerate so it is nearly irrelevant what the hardware is if you lock it at 15fps.


This method will work yes, but I do no recomend it, if you switch framerate on the fly a lot you may run into some bugs, like mouse sensitivity change, game speed change and thing like that. You can set your frame rate in game options file.

#15
capn233

capn233
  • Members
  • 17,253 posts

UnknownMercenary wrote...

Although now that you mention it I'll probably have an easier time soloing versus Cerberus if I lock my framerate to 30...

Dun dun duuuuun!

#16
Caratinoid

Caratinoid
  • Members
  • 982 posts

UnknownMercenary wrote...

capn233 wrote...

UnknownMercenary wrote...

It is noticeably more challenging to play a squishy class when you are hosting. :pinched:

Unless your computer is very slow, then it is easier to not get hit. :)


I meant "you" as in Caratinoid. ;)

Although now that you mention it I'll probably have an easier time soloing versus Cerberus if I lock my framerate to 30...


I can still solo at any frame rate but at 30 I can do that with no shields. B)

Don't expect it to be a win button though, the game is still challenging, it's just that running around is less of a risk.

#17
GallowsPole

GallowsPole
  • Members
  • 4,216 posts
This is why PC players should be taken with a grain of salt.

#18
Guest_Lord_Sirian_*

Guest_Lord_Sirian_*
  • Guests
Yet console players keep insisting that the AI on their lolbox 360s with their framerates capped at 30 is more accurate/aggressive than the AI on your standard 60 FPS PC.

This is well documented, but thanks for putting it all in simple terms for people to understand.

#19
Guest_Lord_Sirian_*

Guest_Lord_Sirian_*
  • Guests

GallowsPole wrote...

This is why PC players should be taken with a grain of salt.

 

Right, because our AI is more accurate?

It's easy to tell if someone is playing with a host who has a low framerate. Plus most PC players hate playing below 60 FPS. I know many a time I have not been able to record videos I wanted to because the FPS drops were too horrible.

#20
capn233

capn233
  • Members
  • 17,253 posts

GallowsPole wrote...

This is why PC players should be taken with a grain of salt.

Dem's fightin' words.

#21
GallowsPole

GallowsPole
  • Members
  • 4,216 posts
I don't insist anything. The Precious dev gods everyone bows to stated their is no gameplay difference. Well, except we can't mod any files.

#22
Caratinoid

Caratinoid
  • Members
  • 982 posts

Lord_Sirian wrote...

Yet console players keep insisting that the AI on their lolbox 360s with their framerates capped at 30 is more accurate/aggressive than the AI on your standard 60 FPS PC.

This is well documented, but thanks for putting it all in simple terms for people to understand.


Yeah I decided to explain what exactly is different, saying that AI is smarter or dumber doesn't say much.

I think that the game was designed for 30 FPS and anyone playing at anything higher than that is a masochist ...

..with me being the biggest one of them all with my 120 FPS:crying:.

#23
Guest_Lord_Sirian_*

Guest_Lord_Sirian_*
  • Guests
GallowsPole have I ever told you that you're one of the least coherent people I've ever met?

Whatever you use for a brain, please leave it to science when you die. I'm curious to find out.

#24
spudspot

spudspot
  • Members
  • 2,447 posts

Lord_Sirian wrote...

GallowsPole wrote...

This is why PC players should be taken with a grain of salt.

 

Right, because our AI is more accurate?


No, because you reload cancel your Reegar with Incendiary ammo on your Kroguard. And because you modded your files so your Kroguard has Warp instead of Carnage. 

That's why. 

#25
Guest_Lord_Sirian_*

Guest_Lord_Sirian_*
  • Guests

Caratinoid wrote...

Lord_Sirian wrote...

Yet console players keep insisting that the AI on their lolbox 360s with their framerates capped at 30 is more accurate/aggressive than the AI on your standard 60 FPS PC.

This is well documented, but thanks for putting it all in simple terms for people to understand.


Yeah I decided to explain what exactly is different, saying that AI is smarter or dumber doesn't say much.

I think that the game was designed for 30 FPS and anyone playing at anything higher than that is a masochist ...

..with me being the biggest one of them all with my 120 FPS:crying:.

 

I wouldn't bother playing at 120 FPS... difference in smoothness is barely noticeable once you go much above 60. 120 is huge overkill. :unsure: