Skyrim is having some performance issues on the PS3 and Joshua E. Sawyer, lead developer on Fallout: New Vegas, knows why.
Like Skyrim, both Fallout 3 and its not-quite-sequel Fallout: New Vegas have some pronounced lag and micro-stutter issues, most notably on the PS3. Answering user questions on Formspring, Sawyer gave a rather technical breakdown of the engine’s issues. Beware, humble reader, here be jargon.
Essentially, each action you take in Skyrim, be it punching a mammoth in the face or murdering women and decorating your house with their body parts, results in changes to the world which are stored in a bit field. As you play, more and more changes are stored in the bit-field file system until, eventually, the file becomes too huge for the system to comfortably handle.
“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,” Sawyer explained. “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.”
“Some areas will reset contents after three (game) days, but a lot of stuff lingers. Additionally, we also have to deal with ‘persistent references,’ he continued. “These are objects that are immediately loaded with the game because we need to be able to reference them anywhere/everywhere in the world — even if the player is nowhere near the object. Characters are the most common example. All of the companions need to be able to move around the world even when they are not in your current area, so they are all persistent references.”
Apparently the problem occurs on every system, but is most apparent on the PS3 because it divides its 512 megs of Ram between graphics and memory, while the Xbox 360 can allocate its full 512 megs to either purpose and the average gaming PC has dedicated memory for both functions.
The problem is endemic to the Gamebryo engine and seems to have been passed down to the Creation engine that powers Skyrim, and it’s not going away any time soon. ” 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,” Sawyer responded to one question. “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.”