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:
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.