Jump to content
Sign in to follow this  
zapat

Basics of performance in the Arma world

Recommended Posts

I've seen many threads and bugtrackers with the following content:

"I don't know anything about programming, but A3 is badly optimized, and I get 25Fps on my rig, while BF and Crysis 8 runs with 60Fps"

So I decided to start a thread, where (hopefully) you'll be able to learn the basics. So you either understand the working of the engine (and can leave out the first part of your sentence), or believe the excellent programmers at BIS that you get something good (and leave out the second part of your sentence).

Naturally this is not about real performance issues of the alpha.

One more thing: I don't have deep knowledge but some pretty shallow ones, but I know some people around here know the depths too.

So grab a cup of coffee, and let's begin!

The program (Arma3) is run on a computer.

-What is a program?

A series of commands. Be it graphical commands, or AI commands, or a text editor, everything is a series of commands, that needs to be processed.

-What is a computer?

A machine that processes these commands.

The boss of the computer is the CPU (central processing unit). It can have one core, or more. It has also a speed.

You have a GPU (graphical processing unit), or more.

(You also have a HDD or SSD, and some memory, but I won' talk about these now).

Now what does what?

The CPU is the leader of the pack. He sets the pace. The more speed he has, the more commands can be processed by your system in a second.

If he has more cores it means, that he can run more rivers of commands, parallel. Usually this means he can run different programs at once, or more (indepentent) parts of the same program.

He processes most commands too. Most calculations.

What are calculations?

Physics (bullet path, movements of a guy, the path of the sun, the wind, the movement of vegetation in wind), where the people are moving, who can see who, where is a house, how does the frame of the house look like, etc: this list is very long.

The GPU calculates graphical effects only (NVIDIA can take the most PhysiX calculations though). What are these? Smooth edges,put textures on frames, shadows (this needs CPU too), overall lighting, post processing of a frame, etc.

The problems of a game: the biggest problem that a developer always faces is that the game has to be synced. What does this mean?

You see frames, right? Like 30 pieces in a second. But what is on that frame? EVERYTHING! Before a frame can be shown to the player, EVERY calculation has to be made: where have the guys moved, where have the bullets moved, how has the wind moved the bushes, where is the sun, where are all the objects. Has any object been hit by a bullet, EVERYTHING! This all is calculated by the CPU. GPU is secondary, he "only" finishes the look, what the CPU has calculated.

Does the CPU need more cores or more speed? Well, the other problem is, that most of the above load cannot be separated and run independent, because they are not independent. Eg. Soliders hide behind bushes, so first you need to calculate the wind affected movement of the bush, before you can say if the solider can be seen or not. So the load MUST be on one core, OR you would need a method to make the dependent data independent somehow. I don't know about any methods like this. Do you? I can imagine BIS guys do though. :)

So this is why my 6 year old 2core CPU @ 3.2 Ghz can handle A3 better than a 34 core i11 on 1.2 Ghz. Some workloads of course can be loaded to other cores, but thats evanescent to the AI calculations. Now, I cannot facebook though while playing, you 4core guys probably can even watch a HD movie paralell as well.

What does all this mean for games? FrostEngine, CryEngine and RV of Arma games?

So you need to make choices and make compromises.

From all the above you can state that the more objects are handled on a single screen, the more CPU you need. The less objects, the less CPU. There is a fine line, where you load your CPU with a few objects, and you can draw them extremelly nice ,and you get a 90% of CPU load, and a 90% of GPU load. Small world, but nice. You get BF and Crysis.

Put on a lot of objects, a lot of AI, and you are one core CPU heavy. You can have some visual candies (like lightning) but nothing fancy, because many effects also need CPU. So your GPUs are mostly have nothing to calculate. Everyone is waiting for that single core, for all these synchronous commands to finish. Welcome to Arma.

Single core performance hasn't really developed in the past years(only GPU and number of cores), nonetheless BIS is trying to include ragdolls and whatnot and it seems to be working! Great achievements!! And great alternative path compared to the small but shining worlds of other shooters out there.

And for the last line: why do you guys think that our new island will be a bare rock? Yeah, good marketing sells the mediterraen athmosphere, and sea, and holiday stuff. But simply we don't have objects on the island. Imho this is the price for better infantry quality.

Starting to get what you need to look for while testing the Alpha?

Edited by zapat

Share this post


Link to post
Share on other sites

ArmA is also a non-player-centric game, which means that as an entity you are no more, or less, important than any other entity as far as the engine goes. So two groups of AI stalking each other across the other side of the map do just that, whether you're there to see it or not. Firefights, woundings, flanking, explosions, fires, it all happens. You may never even see the outcome of these encounters (unless you're relying on seeing/not seeing some of these troops later on somewhere else :)) but it all happens. This is another reason that comparisons to other game engines do not apply.

(I have heard from various places that there is some sort of minor processing saving going on in these cases, but I've never seen evidence of it nor heard from an official source.)

It's my favourite feature of ArmA. :)

Share this post


Link to post
Share on other sites
Small world, but nice. You get BF and Crysis.

let's not forget that despite arma 2 already having its moments arma 3 is a very beautiful game, stunning at times. and even though most detail is put into the hand crafted settlements in arma the vast nature in between never feels empty, generic or procedural (lack of a better word here). almost every place has it's own character and can be recognized when resuming to it later. although i'm a fan of bf3's graphic style i would never want to trade those things for all the camera effects and particle mumbo jumbo that make it look good. and with arma 3 the engine's lighting is now up to par with games like bf3 (with reasonable limitations to dynamic light of course).

Share this post


Link to post
Share on other sites

While I agree on pretty much everything you said, some issues regarding performance should be fixed, we have a situation where:

1. Player A has a rig which surpases minimum req by good margine, and a game runs decent on Low/Medium settings

2. Player B has a rig which surpases recommended req by far, and game runs like crap even on lowest settings

Now, I understand there are many people complaining, and it only makes it harder because most of them simply have their settings set up wrong or have no idea that there are people with an actual problem, people like me, which aren't new to Arma and it's problems. I know for a fact that I am experiencing same issues like I did in Arma 2. Do you know that Arma 2 worked better for me with Phenom II 955 and H5870 then it did on i7 3770K and GTX670? Same thing happens in Arma 3 now. I hate it when I see people confusing this issue with a situation where random John cranks up his settings and rants cause game wont fly.

Share this post


Link to post
Share on other sites

Yes Minoza, I am aware of that. I wrote this wall of text so people could decide what their real problem is and really help the alpha.

Share this post


Link to post
Share on other sites

I put A3 DDE version into my A2 pc while I wait for a hard copy for my new A3 pc, only usually have hard copies but couldn’t wait. Just wanted to have a good look around.

However, not expecting it too, but surprisingly, it runs really nicely.:D

I spend most of my time in the editor making missions for our group, so I thought I would test a little, so far working upto a maximum of 70 ai on the map, in skirmish type engagements, all has gone well.

Graphics are pretty high, I avoid AA, instead using FXAA low, PP is off (don’t like PP), v-sync is off, everything else is very high, other than terrain detail and cloud which are standard, fps eaters I find here. 900-1200 view distance when fighting is going on, lots more if I’m just walking/driving/flying around on my own.

It’s a funny game, seems to be running really well now on my A2 pc, when its optimised I can only hope my new A3pc will breeze through, who knows, when I get my hard copy, I will find out.;).

Share this post


Link to post
Share on other sites

The one thing that I must question is why arma 3 doesn't scale down well. What I mean by this is when I have literally every setting as low as possible, except for resolution, running at native 1600x1200, why is it that I still get horrible framerates in a forest. Everything looks horrible at this point - the tress are sticks with green blobs on them, bushes are just pieces of paper, the ground is featureless and everything is flickering and morphing like crazy - yet I can't get more than 15 fps. My computer does suck, but I thought running at the absolute minimum eliminates most the things that makes arma so computer hungry compared to other games which my computer can handle - so what causing the slowdowns? This is not meant to be a complaint but rather an honest question. If it looks so damn horrible, why doesn't it run much faster?

By the way, the OP is well written, and really informative. Thank you zapat.

Share this post


Link to post
Share on other sites
The one thing that I must question is why arma 3 doesn't scale down well. What I mean by this is when I have literally every setting as low as possible, except for resolution, running at native 1600x1200, why is it that I still get horrible framerates in a forest. Everything looks horrible at this point - the tress are sticks with green blobs on them, bushes are just pieces of paper, the ground is featureless and everything is flickering and morphing like crazy - yet I can't get more than 15 fps. My computer does suck, but I thought running at the absolute minimum eliminates most the things that makes arma so computer hungry compared to other games which my computer can handle - so what causing the slowdowns? This is not meant to be a complaint but rather an honest question. If it looks so damn horrible, why doesn't it run much faster?

By the way, the OP is well written, and really informative. Thank you zapat.

Naturally it is your CPU, and you are being punished for it. For instance, I am partial to AMD CPUs and am being punished for it. Not just in this game but FSX and other games too. You should get used to playing games at worse than console settings and framerates as I have. Either that or buy into the Intel CPU monopoly. Your choice.

Share this post


Link to post
Share on other sites

Good post Zapat:

Here is my explanation in case it helps... (of course its much more complex than this because there are so many versions and combinations of hardware and software drivers etc)

ARMA series works both CPU and GPU of course but the CPU has to manage the GPU (feed it scene data) AND handle the AI calculations. The AI are MUCH more complex than other fps games because they do not have a list of cover positions to chose from when enemy approach (usually from a set direction). The AI in ARMA must examine their environment to find a path, calculate the direction and severity of a threat. Combine a reaction to a threat with their prior orders. Find suitable cover position etc.... This has to be done for every AI entity over the whole island. Obviously AI far away are simplified but they still have to follow commands and react to threats etc.

I don't know the full list but you get the idea.

So if you are alone on the island then your GPU and graphics settings determine the FPS because the CPU is not doing much. This is the best case scenario and you will never have the same FPS while playing a mission.

The more AI or entities you add the more load is put on the CPU so FPS will drop and changing graghics settings to lowest will have no effect because the GPU is constantly waiting for data from the CPU in between its AI calculations.

More cores (ARMA uses 4 max) does NOT help because the cores must 'talk' to each other to decide what to share. This organizing slows down the whole process so you don't gain much. 4 cores does NOT mean 4x faster. (Long mathematical tasks where less 'talking' is needed show the most benefit from multi-cores. eg. non-gaming 3d rendering calculations)

As far as I understand, ARMA3 will introduce a new calculation method for AI far from the player called 'Headless AI'.

I don't know if this is correct or how it works so we'll have to wait and see.

The main thing to remember is:

THIS IS ALPHA

Its not even Beta yet and optimizing comes at the END.

So be patient and keep reporting other issues. BIS has stated that they want feedback related to infantry combat at the moment. So vehicle/helicopter handling etc are not priority at the moment.

Edited by EDcase

Share this post


Link to post
Share on other sites
Naturally it is your CPU, and you are being punished for it. For instance, I am partial to AMD CPUs and am being punished for it. Not just in this game but FSX and other games too. You should get used to playing games at worse than console settings and framerates as I have. Either that or buy into the Intel CPU monopoly. Your choice.
Excuse my ignorance, but why is it the CPU? The view distance is so low that there aren't that many objects in the scene. There are zero ai so that is not stressing the CPU. Other games seem to play on my computer with similar view distance and somewhat comparable object counts (PR arma 1 and even arma 2) with better fps and better visuals.

After playing arma 2 for several years I have gotten used to the low setting plus fps, but I still do wonder why I never seem to be able to scale graphics down enough... Oh well it won't matter much once I "buy into the intel CPU monopoly" - its totally worth it:).

Share this post


Link to post
Share on other sites

well, me and a buddy have nearly exactly they same rigs, both core i5 2500k clocked @4,4, his a lil bit higher, 12-16gb ram, both got geforce 670gtxx 2gb. With same ingame settings we have different FPS, when he gets 100 fps my max is 55-58, and he never has 20 fps he says, his minimum was 30. So you have no idea what is the reason, a game runs so different on same builds.

Share this post


Link to post
Share on other sites

Thats the big headache for BIS to deal with... Because thats something they can't test, hence the Alpha release.

Appart from the different hardware combinations of CPU and GPU there are different makes of each. (Two graphics cards from different vendors even with the same name will perform differently)

Then there are all the different versions of drivers.

Ram is not all the same spec...

You say your systems are similar but what about background tasks...? How many processes are in the Task manager?

You get the idea.

Edited by EDcase

Share this post


Link to post
Share on other sites

What about the chipset and the different buss speeds (lane bandwith) or PCI-e connections (either south or north bridge)? Could it have anything to do with theese issues?

I dont know to much about it tbh, so dont flame :) Just asking hehe.

It just seems wierd i can run MP on my Lenovo G780 just fine and people are having issues with huge beasts PC's. It actually runs and looks better then Arma 2 on this laptop.

Basicly ive got this:

i3-3110m @ 2.4Ghz, 3rd gen

8GB DDR3-1800Mhz

Nvidia GT635m @ 2GB DDR3-1800Mhz

Intel C216 Chipset

and i get 35-45 fps in MP on average and 60+ in the editor, when theres no foilage around. Ofc it can drop to near 10, but its only rarely and it usually involves me standing in the middle of an explosion.

I might add i NEVER join a server with more then 20 player slots, as it doesnt matter what you do, it will crash/lag/fuck up in some way and i believe BI has said several times on the forums, that more then 20 players equals instability. I cant find the posts though, to much crap to look through heh.

On a side note its actually quite funny how people set up 50 and 60 player servers and expect it to run smooth, when arma II couldnt heh. Its like they dont realise they actually have many of the same components and its not an "entirely new game" perse, more of a very comprehensive exspansionpack.

As far as i know, most of Arma 3 architecture is very close to Arma 2 architecture. Just optimized and with a new graphicaly "facelift" on top.

Edited by Byrgesen

Share this post


Link to post
Share on other sites

^ For some time now, what used to be the northbridge has moved into the CPU itself, only the southbridge, which handles the IO is outside of it. Stuff like PCI Express is handled by the cpu directly, memory controllers are part of the cpu too.

Share this post


Link to post
Share on other sites
^ For some time now, what used to be the northbridge has moved into the CPU itself, only the southbridge, which handles the IO is outside of it. Stuff like PCI Express is handled by the cpu directly, memory controllers are part of the cpu too.

Ok guess i was way off then ;) Thx for clarifying mate.

Share this post


Link to post
Share on other sites

On default settings (Auto detect), FPS is up and down from 19FPS to 50-60FPS.

Last night I hung out in the editor at Air Station Mike. This region of the map has good elevation with unbroken sight lines that extend far. Standing at the Golf ball, looking out across the valley to the sea, I get 19FPS on default. I found that to be below the standard I would typically look for. Low performance when the world is empty means things will only get worse while actually playing an active game.

So, I experimented with in-game adjustments to improve the frame rate with as little loss of image quality as I could.

DRAW DISTANCE

First... the 2 Draw Distance settings are set (IMO) higher then they need to be for most situations. You are likely drawing way more "island" then you need to be. I found the default settings of 3800m for Terrain and 3200m to be inefficient for ground combat... you appear to be drawing a lot more then what's simply in view. I reduced the terrain distance to 3200m, pulling the outer fog limiter inward, making distant trees to just start disappearing. This had an appreciable boost to FPS, yet still draws all the terrain that was naturally visible at 3800m. Next, reduce object draw distant, to 2200m, again a boost to FPS without reducing the complexity of the scene in an unnatural way. The argument here is that we're trying to trim down the number of "things" being drawn that do not need to be drawn because we can't see them anyways because we have no natural line of sight to them.

A Man-Sized target at 950m's.... is so small even on Ultra Settings, that I would challenge any one to consistently find them in a scene. Even the Hunter armored car is pretty tiny. The point here is that at 1000m's, smaller objects are difficult to impossible to discern, but the default object draw distance has you drawing them outwards an additional 2.2km beyond that. Which equates to redundant work on your CPU and GPU. Setting the Object Distance to 2200m's still draws objects a great distance from you, maybe farther then needed still... but omits stuff you can't see anyways because they become too small.

SCENE COMPLEXITY

There are 2 detail settings which impact both the performance and image quality of the ArmA world. The first is Terrain Detail and the second is Object Detail. With Terrain Detail dropping down from Ultra to Very-High or High, I noticed FPS improvements, but also Image problems. The first was the LOD (Level of Detail) draw distance on the ground shaders (grass shader). The plants tended to pop into place more and frequently morphed more from changing LOD scaling as you approach them. Different species of planets were more prone to this effect then others. Trees also had similar artifacts, tree canopy's visibly flickered or morphed in the distance, often without the player changing the actual distance to the tree. Simply panning and bringing a tree into view could trigger the model to scale through it's available LOD's. The next problem was with the terrain itself. Reducing the Terrain Detail to High or lower can cause distant objects to appear as though they float off the ground. I placed a Hunter vehicle 950m's away from me on the far side of a valley. When viewed through optics, the vehicle hovers off the ground.... adjusting the Terrain Detail upwards to Ultra reveals the ground level to "grow" upwards to support the vehicle.

Object Detail also had a appreciable effect on FPS, but with less image problems. Where image irregularities did occur, they were in the form of objects looking overly "simplified". Occasionally I encountered certain detailing features on sturdier objects like the door on a building to even flicker between LOD states with using a mid-level detail setting like High or Standard. Many objects however remained rather solid, even at distance, with minor loss of image acuity. Infantry remained intact, with the differences in model detail from Ultra to High to be minor. The difference usually being a little loss of texture acuity and whether or not minor details like hip-pouches were visible. The Hunter vehicle tended to scale the least consistently, tending to appear simplified to unnatural geometric shapes in a more visible manor then most objects. Terrain objects like boulders also become less complex, but still look like rocks. An Armored Car like the hunter though, when it gets reduced from a more complex LOD to a simplified one, it was more noticeable that it was displayed at a lower level of detail.

RESOLUTION ADJUSTMENT

This was a final trick I discovered to work better in ArmA 3 then expected. Set your Interface Resolution to your monitors Native (normal) setting. Then change your Rendering Resolution 1 or 2 settings lower. The Interface resolution is what your monitor displays. The Rendering Resolution is what your Video Card will draw for frame size. So, I have Interface set to 2048x1152, but tried bumping the Rendering Resolution down to 88% at 1920x1080. Normally, doing this will cause some loss of image quality and things will get a little fuzzy/blurry depending on the differences in scaling. It didn't work so well in ArmA 2 and made the game look very slightly out of focus. I am surprised at how little difference in image quality it made on my monitor when I tired it in ArmA 3. It's only 12% difference in scale, but it boosted FPS 5-10 frames for free. With sufficiently high enough detail settings, loss of image quality appears to have been mostly offset. Of course, your mileage will vary depending on your hardware and monitor setup. Try it. See if it helps.

The best thing that could happen of course is for these tweaks to simply magnify optimizations made by Bohemia Interactive. If it's reasonable to assume BiS can perform their wizardry and optimize the engine to further improve performance prior to client-side tweaks... then I would dare predict that ArmA 3 is on track to, not only looking better then and previous ArmA's... but also running better too.

Edited by Spamurai

Share this post


Link to post
Share on other sites
While I agree on pretty much everything you said, some issues regarding performance should be fixed, we have a situation where:

1. Player A has a rig which surpases minimum req by good margine, and a game runs decent on Low/Medium settings

2. Player B has a rig which surpases recommended req by far, and game runs like crap even on lowest settings

Exactly. The fact that, other than View Distance, changing any other settings between Low and Ultra has virtually no effect on my framerate shows there is a problem somewhere.

Which, then you could say maybe I am CPU-limited. Well, perhaps, except for the fact that my CPU is being barely 50% utilized.

Share this post


Link to post
Share on other sites

as from my experience, real virtuality engine, likes overclocked cpus more then cpu cores. I remember back in arma 2 after release period, a lot pf people with good overclocked dual core cpus, had better performance then some or most with stock clocked quad cores, i have my cpu 1,1ghz overlocked to my defaulr clock, and playing arma 2, is quite fluent. Sometimes it did reset back to default clock for some reason, and i was noticing slowdowns, sort of lag spikes.

Share this post


Link to post
Share on other sites

You can also try turning off 'Hyper-threading' in the BIOS which creates virtual cores.

Share this post


Link to post
Share on other sites

I know this suggestion will sound crazy, but turn up your AA and post processing settings for better performance. I'm not 100% sure why this works but I've noticed about a 4 fps gain by turning up AA instead of disabling it. My guess is that at the distances which we are rendering objects, by turning up AA, we allow less detail to be shown then if AA was off. Also the post processing introduces the blur effect which reduces the detail needed to render things while moving. These are just my guesses as to why I've noticed this gain.

If someone else can confirm this for me that would be great. I did only two tests and noticed that turning up AA and post process worked better and then I went on to tweak other settings so this isn't exactly a scientific conclusion.

Share this post


Link to post
Share on other sites

In regard to low settings low fps, low CPU usage there are several things you may be missing.

If i have a fully loaded single thread, task manager will only read this as about 12-13% CPU usage. So your CPU usage is low but one of your cores is possibly choked up at 100% and everything else is waiting for it.

The other thing could be if you're connecting to a server. Once a server drops below 10FPS (server side) performance starts to degrade and once it goes down below 8FPS it affects the clients in an extreme way and becomes totally unplayable for everyone. Even though your CPU and GPU will look like they're running fine, the server is lagging so bad and it brings client FPS down as everyone is sat waiting for data.

This might not be your issue. But its a possibility for some.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×