Trying to Explain Skyrim's Awful PS3 LagS

There's a problem with Skyrim on the PS3, in that for many gamers, the bigger their save game file gets, the slower the game gets. It's so bad sometimes the framerate can drop to zero. Despite a recent patch many users are still complaining about the problem so, uh, what's up?

Nobody knows! Since the patch didn't solve the issue it's obviously something beyond developer Bethesda's understanding at the moment, but some technical wizards (and people who have worked with Bethesda's RPG engines before) certainly have some theories.

Digital Foundry's best guess involves dodgy garbage collectors:

However, the most likely explanation is that an advanced Skyrim gameplay state - like the 65 hour one we tested - proves to be too much for the garbage collector, or memory defragmention method, struggling to cope with the multitude of gameplay elements that have been altered from the default "virgin" state stored on the hard drive. To test the possibility of this, we tried loading our 65 hour save and playing with it for 30 minutes, and then directly loading our new character save from the menu - the result being that the stuttering does indeed carry straight over to our virgin save. It suggests that memory has been allocated that the garbage collector cannot reclaim, which isn't flushed when the player returns to the menu screen and starts the game anew.

The bottom line is that Skyrim is an unbounded game world running on a space-constricted system - and this applies regardless of the platform you play it on, hence reports of the PC version running out of address space and displaying solid colours instead of textures. The PlayStation 3 is unfortunate in that it's the platform with the most oppressive RAM issues (in addition to the split-pool set-up of the memory, the OS has a larger footprint than its 360 equivalent) so it makes sense that it has the most noticeable issues. But we do have to wonder how 360 owners with a 65 hour-plus save are coping, and whether the same issue manifests for them - just further along in the gameplay.

While, interestingly, a man with experience working with Bethesda's RPG engines, Obsidian's Josh Sawyer (Fallout: New Vegas) says something similar, and provides some examples:

The longer you play a character, the more bit differences on objects (characters, pencils on tables, containers, etc.) get saved off and carried around in memory. I think we've seen save games that are pushing 19 megs, which can be really crippling in some areas...It's an engine-level issue with how the save game data is stored off as bit flag differences compared to the placed instances in the main .esm + DLC .esms. As the game modifies any placed instance of an object, those changes are stored off into what is essentially another .esm. When you load the save game, you're loading all of those differences into resident memory.

It's not like someone wrote a function and put a decimal point in the wrong place or declared something as a float when it should have been an int. We're talking about how the engine fundamentally saves off and references data at run time. Restructuring how that works would require a large time commitment.

In other words, if this is indeed the issue - that every change you make to the game world needs to be recorded, and the more changes you make the bigger the record and as such the bigger the performance drain - it doesn't sound like something that can be easily fixed, especially given the PS3's limitations in this regard. Which is a pain.

Joshua Sawyer [Formspring]

Digital Foundry vs. PS3 Skyrim Lag [EuroGamer]