Please upgrade your browser for the best possible experience.

Chrome Firefox Internet Explorer
×

I think I know what's causing poor FPS for some users (no fix yet)

STAR WARS: The Old Republic > English > Customer Service (Read-Only)
I think I know what's causing poor FPS for some users (no fix yet)
 

Cupelixx's Avatar


Cupelixx
01.29.2012 , 01:41 PM | #1
Last edited 2/13/2012, even more information added. Also added a missing step to the instructions for assets file redirection.

After trying a multitude of fixes and routinely checking what some of the more technical people have been saying in the 'Horrid FPS' threads, I think I can put the big picture together. What I see are a couple different contributors so I'll explain those as best I can.

-System specs for testing
i7 920 @4.2
12GB DDR3
Crossfire 6950 GPUs
Corsair Force 3 SSDs (RAID 0)

Symptoms
-Terrible performance on Republic/Imperial Fleets, especially when in crowded areas
-Unplayable FPS in warzones
-Random FPS drops while questing/running around
-FPS drops exactly in half (no matter if you're sitting at 30 or 100 FPS) when opening 2D UI elements and summoning companions. Effect lasts 1-2 seconds, then normal FPS resumes
-Opening separate bank tabs or clicking the next and back pages on the GTN causes a temporary FPS drop
-Huge FPS drop followed by high FPS when starting a conversation, especially in a party with 2 or more people
-Temporary FPS drop out in questing areas when another player's character is loaded (doesn't need to be in your FOV for this to happen)

What helps
-If you have enough extra RAM (should be okay if you have 6GB or more), create a RAM drive of about 1.5-2GB. Run diskcachearena and swtor_main_art_fx_1.tor from that drive.

See this thread for instructions on setting up a RAM drive to run the diskcachearena file in memory. Credit for these instructions goes to Lemon_King.

To run the effects file on your RAM drive as well, make a backup copy of swtor_main_art_fx_1.tor, and rename or move it to a separate folder. Add this to your batch file:

Code:
mklink "SWTORINSTALLATIONPATH\assets\swtor_main_art_fx_1.tor" "RAMDRIVEPATH\swtor_main_art_fx_1.tor"
Obviously, substitute SWTORINSTALLATIONPATH for your SWTOR install folder and RAMDRIVEPATH for your actual RAM drive letter. Finally, copy this file from your backup folder (do NOT move it, copy it) to the location on your RAM drive that you just configured in your batch file.

-If you don't have much RAM, going into the assets folder in your SWTOR install folder and renaming/moving the swtor_main_art_fx_1.tor file has been confirmed to provide a large FPS gain. Note that doing this removes a LOT of effects and sounds from the game (some combat sounds, light saber blades, AoE effects, speeders, the ball in Huttball etc), so running this file on a RAM drive is preferable. If you are desperate to play, just rename/move this file to a backup folder. If you have 4GB of RAM, you can probably get away with a RAM drive of around 200 megs and following the steps above.

-There are people running the game on SSDs running into the exact same problems BUT, overall it seems that adding an SSD results in fairly large gains. If you are having any of these symptoms, upgrading to an SSD for this reason is not recommended. I received 2 SSDs as a gift, set them up in a RAID 0 and did not see much improvement. A game should not require an SSD to play correctly anyway. Your symptoms may improve, but they may also remain unchanged!

Theory
Now, what's happening behind the scenes? When I first ran into problems after the early access period, I had 6GB of DDR3. I thought, between Windows 7, my background apps and SWTOR maybe that's not enough and when the game tries to load new data it has to grab it from the system page file. As it turns out, this is not far from the truth. But we'll get back to that in a minute. After installing a new 12GB kit, I noticed the exact same issues happening. Random FPS drops from the 80+ range down into the 30s in some places. FPS still dropping exactly in half for a couple seconds when opening UI elements.

I figured, well, something is up with the data streaming in this game, they'll fix it. But here we are, over a month later still with the same issues. What about SSDs? Well, an SSD still won't be as fast at retrieving data VS something that's stored in RAM. I think that's why some people see these issues even when the game is on an SSD. In fact, see just above this. I'm running the game on SSD RAID0 and saw very little gains.

The first problem I see is this. When the game has to wait for data to load, the engine stops rendering. So here's what happens. You're running around the Imperial Fleet and a new player comes into view. The game needs to pull information for that player, so it goes to the assets files on your hard drive. While the game is waiting for that data, your GPU usage drops and the game renderer stalls out until it has that information. I haven't been able to find the source of the people saying this since it's been buried in the 'Horrid FPS' threads but it was confirmed by a few people. Further evidence is that if I just run around the outer ring on the IF, at some point my FPS will drop down from the 70s-80s to the 30s-20s. If I then stop in place and wait a few seconds, FPS climbs back up to where it was, regardless of how many people are in the FOV. Honestly, this is not acceptable and has a huge impact on performance.

Another thing is the 'arena' cache file that gets stored on the hard drive. I'm not 100% sure what the purpose of this file is but if deleted, it regenerates the next time the game starts. During periods where my FPS takes a huge hit, I notice a lot of hard drive activity on this file. My best guess is when SWTOR runs out of physical RAM, it starts caching assets to this file, almost like a second page file for TOR instead of Windows. The reason I think this is that SWTOR runs 2 processes. According to some, in order to get around memory addressing limitations.

This makes sense with what I learned about how the game handles higher res textures. They use what they call a 'texture atlas'. When a conversation starts, the game switches to higher resolution textures. I believe this is why there is a sudden FPS drop right when a conversation/cutscene starts. I also believe the diskcachearena file has a part to play in all of this.

Why physical RAM is not used for this file, I have no idea but it seems like poor design to me. Given enough system RAM, you can create a RAM drive and run this file there. That gives a performance increase in general as the game waits much less time to retrieve data from that file. But the performance drop is still there when new data is loaded. Further, I have never seen this file allocate more than about 1GB of space. I have a feeling if this data could be stored in main memory it would solve a lot of issues. Even if that file could store more cached data and we could put the thing in a RAM drive, that might help.

Another key is that every time I see my FPS tank and then recover, there is an associated increase in network activity. Mind you, we are talking about kilobytes and I'm on a very fast, low-latency connection. But this also feeds into the first identified problem. This means that if the game client is waiting on data from the game's backend servers, you will see a temporary FPS loss. This is almost conclusively proven by the phenomenon of jumping once, then opening your inventory repeatedly while in the air. Notice that your character gets "stuck" while doing this. By the time the engine recovers, you are on the ground. While your game client was busy waiting on data, the world around you and in fact your character itself keeps right on going. But the game does not render in that time, so you jump, open your inventory repeatedly and then you are suddenly on the ground after being suspended in mid-air. This is key evidence!

Finally, after looking into all of this and then examing exactly where performance falls apart, we can see that certain asset files are contributing significantly to this debacle. It's confirmed that the asset file swtor_main_art_fx_1.tor is a big part of the problem. Many game 'special effects' such as lightsaber blades, the flames from fire squares in Huttball, aoe spell effects etc come from this file. For most users, this file seems to have an abnormal amount of read activity on their computers.

See the "What helps" section for further notes on this specific file. I suspect that other asset files may have a similar effect, particularly whichever one is controlling the UI. This would explain why doing anything with the game's UI, even flipping between pages in the GTN results in a brief, but massive FPS hit.

All of these problems are also compounded by other issues with the 3D rendering system. Enabling shadows has an enormous performance impact for some reason. Bloom also seems to be poorly implemented. I can usually run with shadows on high but if I enable bloom I get an instant slideshow. Maybe these are driver related but I'm not so sure given the weirdness I've seen with this engine.


TL;DR version
The engine stops rendering if it has to wait for data. This problem is compounded by abnormal hard drive utilization on some of the game's files, mismanagement of assets, and poor utilization of system resources.

The game stutters and lurches when it has to retrieve data that's not in physical RAM. This is going to be caused by bad memory management, inefficient game data streaming, or not keeping enough data in physical RAM for the area you're in. Most likely, it's a combination of all of these factors. These reasons are the only explanations that seem to fit such a broad range of system specs (even 'uber' ones). If my FPS plumets from 80 to 20 when moving to an area with players, but fixes itself after a couple seconds even when I don't move and no players in the FOV move, it's choking on loading new data which brings everything to a grinding halt. There have been two well quoted posts by programmers in the 'Horrid FPS' threads that confirm these suspicions based on their own experience. This is not normal!

Conclusions
-Game processes are not using as much physical memory as they should
-The game's renderer flat-out stopping when it has to wait for data is idiotic
-The renderer for the game running as a separate process is a bottleneck in itself
-Management, caching, and streaming of new assets (especially fx assets) are all handled poorly, especially when it comes to accessing these resources from the hard drive
-Game executables not being compiled for 64-bit runtimes is a huge mistake (processes cannot use enough physical RAM even when plenty is available or take advantage of 64-bit efficiencies)
-Terrible implementation of bloom and shadow effects contributes to poor FPS (this is 2012 and I have a great system. I should be able to enable these!)

These contributors cause abysmal performance across the board, and are the result of poor coding and poor design.

And I know people are tired of the WoW comparisons, but think about it this way. In any MMO, there is a lot of player data out there especially in cities where people tend to cluster. For example in WoW, my main's home was Stormwind. Even with literally hundreds of players in the same space, all riding different mounts, wearing different armor/skins, running around with glowy enchants on their weapons, and randomly casting AoE spells, there is no sign of a performance drop on a high end PC.

I fully understand that there are more effects, bigger textures etc. My point is, there seems to be a real problem with the client in how it handles streaming in of new data. If those problems were fixed, crowded questing areas and RF/IF being crowded would not hinder performance as much. If WoW had such obvious problems handling the loading of new data, I suspect the exact same problems would be happening there. WoW does this just fine while maintaining steady FPS well over 100 on my hardware. Why is TOR struggling?

My thanks to:
Everyone who has stopped by here to support me in the quest to understand, and help Bioware understand the nature of the faults in this game so they can be corrected. Additional thanks to those who like myself, have spent their valuable time helping me test theories and figure out what Bioware has not been able to yet (you know who you guys are).

They can't ignore us forever. I encourage everyone following this thread and anyone who sees and agrees with it to spread the word. Other sites, hit them on their Twitter account, whatever we have to do so that they see and acknowledge this thread!

Aranthaur's Avatar


Aranthaur
01.29.2012 , 01:59 PM | #2
+10 internets to you.

personally, i never experienced the FPS issues, and im on SSD. Are you 100% positive that it affects SSD-users as well?

I just thought that acording to this theory, people on SSDs should see atleast _some_ improvement vs those with mechanical HDDs.

If your theory checks out, I'd say thats one weird way to do rendering in a MMO. The idea should've crossed dev's mind even before they went for that solution. It's quite logical that if engine stops rendering while it fetches data, it would cause massive perfomance issues. It would've been interesting to hear anything from the folks behind original HeroEngine and find out how their rendering was in the first place and how it worked. Im curious.

Cupelixx's Avatar


Cupelixx
01.29.2012 , 02:05 PM | #3
Quote: Originally Posted by Aranthaur View Post
+10 internets to you.

personally, i never experienced the FPS issues, and im on SSD. Are you 100% positive that it affects SSD-users as well?

I just thought that acording to this theory, people on SSDs should see atleast _some_ improvement vs those with mechanical HDDs.

If your theory checks out, I'd say thats one weird way to do rendering in a MMO. The idea should've crossed dev's mind even before they went for that solution. It's quite logical that if engine stops rendering while it fetches data, it would cause massive perfomance issues. It would've been interesting to hear anything from the folks behind original HeroEngine and find out how their rendering was in the first place and how it worked. Im curious.
100% on the SSD thing, yes. People who have SSDs have posted in the 'Horrid FPS' threads that they have issues as well. I would expect the issue to at least be somewhat diminished by an SSD's performance, but the problem is still very much there.

Aranthaur's Avatar


Aranthaur
01.29.2012 , 02:11 PM | #4
Quote: Originally Posted by Cupelixx View Post
100% on the SSD thing, yes. People who have SSDs have posted in the 'Horrid FPS' threads that they have issues as well. I would expect the issue to at least be somewhat diminished by an SSD's performance, but the problem is still very much there.
Man, i'd LOVE to get my hands on the source code with the part that does the rendering/fetching assets. I'm curious.

miltownbeast's Avatar


miltownbeast
01.29.2012 , 02:13 PM | #5
+ 10 internets on a job well done, I do think that your on the right path of a diagnosis of the issue. I have noticed that the FPS issue you mentioned persisted even when I upgraded my ram and dedicated more memory to my graphics.

Your break down of the issue gives me hope that with more and more patches this problem will go away, someone from bioware should read this and look into the validity of these claims.

Thekze's Avatar


Thekze
01.29.2012 , 02:18 PM | #6
I don't know much more than how to build a computer and reformat them but what I noticed is that sometimes it's hard for the engine to display everything on the screen at the same time during a fight....

Let's say I land an aoe attack, then my rocket missile explodes. Because the engine has to render all the explosions and the damage dealt on all targets at the same time... My game slows down! I get performance hitches. Plus the flytext doesn't help and is rendered slower than usual.

AMD Phenom II 965 3.4ghz
8gb ram ddr3
gigabyte gtx 560ti superOC

Trujkr's Avatar


Trujkr
01.29.2012 , 02:21 PM | #7
A quick way to test/prove this is to jump and open yours bags at the same time, the game hangs every single time. This game has a long way to go.

DGolubets's Avatar


DGolubets
01.29.2012 , 02:22 PM | #8
You are right.


Though I can't say that I have it unplayable (it drops to 15 FPS in ILUM AoE spam) I expect much better from TOR given I have almost top-end system.

Game optimization should be priority #1 now..

Nitchin's Avatar


Nitchin
01.29.2012 , 02:25 PM | #9
I was having similar issues on the RF and suspected it was a cache problem. I still get the issue just not as bad since I have turned off player name display. It makes it interesing in pvp to count how many are at one spot or another but my fps is much better.


it is still not fixed but it is better.

+10 interenets to you
What we really need is a driod that understand the binary language of moisture evaporators.

Aranthaur's Avatar


Aranthaur
01.29.2012 , 03:02 PM | #10
Quote: Originally Posted by Nitchin View Post
I was having similar issues on the RF and suspected it was a cache problem. I still get the issue just not as bad since I have turned off player name display. It makes it interesing in pvp to count how many are at one spot or another but my fps is much better.


it is still not fixed but it is better.

+10 interenets to you
Try to open your char screen or your bags. 1 sec lag right there. Every time. 100% "drop chance".