Sunday, February 17, 2013

Moving Forward On Skaky Ground

Skyrim is definitely a step forward from Morrowind and Oblivion in terms of story, game play, and technology. Yet sometimes the price of progress is pain. A good deal of pain.

I cannot count the times I've encountered this type of vitriol expressed in varying levels of rage:

NEVER AGAIN. Not starting another save.

F§CK OFF.
3rd f*cking save file, 70 hours played on each save.
F*cking wasted time.
EVERY DAMN TIME a bug, a glitch, or whaterver bulls*it this game has, it ruins my save file.
I'm ????ing tired of this s*it.
I even bought two dlcs and I never fuc*ing got to play them because my save file got ruined before even being able to spend some time on them.
I can't stand this.
a total of 200+ hours wasted on this game is enough time to understand that it is bad and I won't play it anymore.
I don't even use ANY mods, disabled the steam cloud system too, nothing helped.
How can people reach the f*ucking high levels in this game?
Once I was able to get to level 47, then the game decided to start crashing randomly, 10 seconds into the game.
The second time everyone got mad and started chasing me and trying to kill me (like vampirism lvl 4 but I didn't have vampirism.
This last time, my lakeview house DISAPPEARED, it vanished, just gone, for no reason, with all the stuff and the time I put into it.
I get blocked by bulls*it whenever i try to make any progress in this game.

ENOUGH.

If you are here looking for an advice, don't buy this game, it's a waste of time.

His last comment there is rather amusing. Aren't all games a waste of time? But I digress…

Though it's mostly a rant there was more conversation wherein some questionable mod usage came into play. In my estimation the source of all the save-game woes is Papyrus.

As a former software engineer I understand the desire to evolve. Revamping the old scripting engine must have been a sexy concept. It feels "right" to move from last century's functional coding into modern objects. There are plenty of gains in performance and efficiency to justify it. Yet the scope of Bethesda's scripting engine seems to fall short. Consider one of the dev's feedback on the forums:
Some clarification seems to be in order. :)

All instances of a script will have their variable values saved. If the game deletes the object the script is attached to, and there are NO variables or registrations pointing at that script object, and no currently running functions on that object, then the data will be cleaned up. (There is some very basic circular-reference checking, but it's safer to clear out the variables yourself by setting them to NONE) If the object is deleted in the editor or a mod is removed the data will NOT be cleaned (as Papyrus simply assumes the object is not loaded and will be loaded at some point in the future).

The above, as well as any script referenced by any of the above scripts will also have some basic type information saved (which lets the save game load process patch up the object's memory if you add/remove/change variables between save/load). This is what usually will throw the "missing script" errors as it's trying to compare the save game's type information with the type information on disk.

Any running event/function gets its byte code saved as well. (As well as all other functions/events in the same call stack)

Non-running functions at the time of save do not get any byte code saved.

Event registrations and inventory filters are saved. (Again, if a form is removed in the editor or a mod removed, Papyrus assumes the form is simply not loaded, and so will not clean up registrations)

As Arathmoor pointed out - uninstallation of mods is not official supported. Updating of mods is supported, within the guidelines specified on the wiki.

Wiki Page on Papyrus and Save Games
The dev points out the source of much pain: "If the object is deleted in the editor or a mod is removed the data will NOT be cleaned (as Papyrus simply assumes the object is not loaded and will be loaded at some point in the future)." Absolutely horrible design.

It's really an excuse or rationalization. The save game's file header tracks all mods that were active when the save was made. At run-time the Papyrus engine know all of the mods that are running. The environment thus exists to then remove any forms/scripts that no longer have parents. That is not being done.

Papyrus is external to the game engine so perhaps it can't look at what mods are currently active. Perhaps it doesn't track the source of forms/scripts that it is running. Maybe Papyrus has it's own development team and it's an internal product that will be used on multiple titles. Being on the outside I don't know what's "really" going on. I can only guess at why Papyrus isn't being clean and responsible.

The result of this? Bethesda support asserts as the dev above did: "uninstallation of mods is not (officially) supported." Yet a basic design question can be asked: if un-installation is not supported, why is it allowed? The only warning the user ever gets is:


There's no mention of what content is missing. There's no understanding of what the impact of "Some objects may no longer be available." is. And this message will no longer be displayed once a new save is made.

The responsible course here would be a message that says, "This save requires content from 'Mod Title' and cannot be safely loaded without it." Sure it might be frustrating to the player but it will save the product from repeated PR attacks like the one above.

The next step would be responsible object handling in Papyrus. So "Papyrus simply assumes the object is not loaded and will be loaded at some point in the future." That's understandable. But after about the 50th attempt to access a form it might be safe to say it isn't going to be loaded. Remove the code, stack, and memory allocated to it.

The next step would be a file analyzer that could clean up fragments outside the game in hopes of  circumventing CTDs. This is what the community will end up providing.

Morrowind and Oblivion were such fun games to mod—yet creating a clean save to remove mods was incredibly easy. My heart goes out to Bethseda as they are tarnishing this legacy. If they're going to improve their technology, they need to improve the support for that technology. Otherwise they need to change the modular paradigm they no longer intend to support.

Of course all of this speaks to the PC platform and its save game bloat. Not sure what the hell is going on with the console folks. Just glad I don't try to play on a PS3. *lol*

No comments:

Post a Comment