This topic is poignant, not only for Modders, but USERS of mods. Users with low/medium-end computer systems may experience strange behavior caused by a mod, which Users with high-end systems will never see. Rather than blame the mod's author for it failing to work as-advertised, though sometimes such chastisement is deserved, it may behoove some people to first check their FPS rate in-game. As you'll read below, SEVERAL things can affect FPS... some caused by system stress, others caused by modding mistakes or simple ignorance; due hopefully to the new-ness of most of the Papyrus scripting language.
Even if your script compiles correctly, and there seems to be no problems in game, your script may STILL contain devastating errors which destroy scripting performance for OTHER mods - and potentially other aspects of the Skyrim experience. To test for errors in scripting, enable Papyrus logging in the Skyrim.INI file, located in your Documents/MyGames/Skyrim/ folder. The recorded logs are located in the same folder as that INI, under a sub-folder called Logs/. Add or change the following lines to enable logging & debug tracing:
[Papyrus]
bEnableLogging=1
bEnableTrace=1
bLoadDebugInformation=1
Helpful Apps:
FRAPS - for monitoring FPS rate in-game (commercial, free demo available)
Process Explorer - for monitoring GPU memory and usage (freeware)
Notepad++ - for writing scripts (freeware)
Notepad++ Setup and Plugins - for automatic formatting applied to Papyrus, such as color-coded commands and collapsible trees (link to the CK Wiki page)
PERPETUAL OR CYCLIC SCRIPTING ERRORS
- If using multiple mods which contain such errors in their scripting, general performance will suffer
- Some mods' scripting may be broken by excessive errors in scripts that aren't even active.
- Resolving these errors have been shown to give at least a 5fps boost on low-medium end systems.
- These errors have simple, easy fixes so there is no excuse for authors not to implement them.
- Seemingly benign, these errors are potentially LETHAL to the Skyrim experience, sometimes even causing CTD or corrupting saveGame data.
- Some of these types of errors STILL exist in Vanilla Skyrim; though may not trigger until a certain area, quest, etc is active.
*****
'None' cannot be assigned to a variable or property, then called by certain commands.
This causes an error every time the script calling the command fires. If the script enters a loop containing the faulty line(s), the errors stack up extremely rapidly and may eventually cause CTD.
Examples of this type of error:
- warning: Assigning None to a non-object variable named
- error: Cannot call GetStage() on a None object, aborting function call
- error: Cannot add a None spell to the actor
- error: Unable to call RegisterForSingleUpdate - no native object bound to the script object, or object is of incorrect type
- error: No Spell or Shout passed to HasSpell
TO FIX: When using a variable or property in a command, test to see if it was never assigned a reference (set to 'None'). For example, this can be done using an if-endif loop, such as "if blahblahRef != None" (then run your command).
- Alternatively, you may force the property to be filled with something you KNOW will always be there (such as Player).
*****
Properties in compiled scripts can't be deleted, unless the now-empty properties are manually removed from anything the script is attached to.
This causes perpetual errors, which occur at regular intervals throughout Player's entire gaming session.
Examples of this type of error:
- warning: Property MannequinArmorWeaponsMESSAGE on script MannequinActivatorSCRIPT attached to (00102906) cannot be initialized because the script no longer contains that property
- warning: Property Pose01 on script MannequinActivatorSCRIPT attached to (00102906) cannot be initialized because the script no longer contains that property
TO FIX:
- IF YOUR MOD USES AN ESP/ESM, you must Remove the script from the baseObject or ref (whatever it's attached to). You then Add it back and re-fill the properties. If the script is NOT removed and added back, the deleted property will always remain.
- IF CHANGING A VANILLA SCRIPT ONLY, place the deleted properties back in the script, even if you don't use them. This is only referring to the property declaration, not using that property elsewhere in the script (which I would recommend stay deleted). Otherwise, you'd have to create an ESP which removes then adds back the new script (as above).
*****
Changing properties in fragments may not be saved or compiled, even though CK shows they are (until restarted).
- This is seemingly caused by a bug which causes different quest stages (or steps within those stages) to use the SAME 'sub'-fragment within the script.
- If you open the fragment's source, you will see one or more sub-fragments missing; while in the CK one or more steps/stages will be pointing to the same sub-fragment.
- The CK will compile and save the plugin; but when the 'damaged' property is referenced in-game, the results will reflect whatever the other sub-fragment's code is.
- If you try to change the damaged sub-fragment to what it SHOULD be, the compiler shows errors and reverts back (or won't let you leave the editor without cancelling the changes).
Examples of this type of error:
- (during compiling) failed validation
TO FIX: In the Advanced tab (inside the quest fragment editor), press the "Regenerate" button; reinstate the code you want (which was changed), then recompile and save.
*****
Removing a script from an individual reference (in the renderWindow) will not work if the script was attached to its baseObject.
- Instead of disappearing when you click the 'Remove' button, a red minus sign appears and 'Remove' becomes 'Undelete'.
- The script remains attached and fully functional; and is never deleted... even after exiting then restarting the CK.
- If you remove the script from the baseObject, ALL references in-game which use it will have their scripts removed.
TO FIX: You could create a 'clone' of the baseObject in question, which has the script removed. This way, only the references you place won't have the script, while all the originals will still be as they were.
- If the baseObject is something you already made custom (not changing something Vanilla, but adding another or cloning one); then you may safely remove the script from the baseObject... given that you want ALL the placed references to it to be scriptless.
SYSTEM STRESS
- Less than 30fps will always cause visible lag/flickering, and will cause problems with script-timing.
- Between 30-45fps: occasional problems will occur - usually as Player enters a new area... which heavily taxes system resources in whichever way.
- Generally speaking, 45fps or higher will cause less problems (if any at all)
- Above 60fps should operate trouble-free... given all the enabled mods and scripts were created without bugs.
*****
System Memory (RAM)
If this is max'd out at ANY TIME while playing Skyrim, you will experience problems.
TO HELP:
- Exit any programs running outside of Skyrim, especially memory intensive programs like Photoshop, 3DSMax, the CK itself (on low-end systems)
*****
Detail Level Settings (in the Skyrim Launcher, Options)
Trying to push your system's graphics past what it can handle affects MORE than just graphics; it also affects script-timing, and possibly other aspects of Skyrim. These settings generally cause a bottleneck of FPS by over-taxing the GPU, not the video memory; though hi-res replacers may provoke the latter on lesser systems.
TO HELP:
- Simply press one of the Default Buttons to the next lowest level that what you've been using (Low, Medium, High, Ultra), until your FPS rate is acceptable.
- Reduce or remove individual settings until Skyrim runs at a steady 45fps. The following are especially stressful on lower-end systems:
Shadow Detail - even when FPS is running steady at 45, an Ultra setting can induce problems.
AntiAliasing - 8x sampling may cause problems, even at 40fps.
(any combination which compounds one of these; eg- 8xAA with FXAA or ultra Shadow Detail with a high Blur Radius Detail.)
- Settings which are generally safe to leave high: Anisotropic Filtering, Light Fade (unless combined with Shadow Detail or other stress-catalyst)
- Advanced Users may opt to adjust individual settings in the INI files.
- Reducing the sliders which control "View Distance" GREATLY reduce system-stress, especially on the GPU and its memory. Grass and Items will generally give the biggest boost, while sacrificing as little noticable quality as possible.
- Remove some hi-res texture replacers.
*****
Feel free to post your personal findings and opinions; as well as any anecdotes, solutions, or questions regarding this topic. Pertinent information will be added to this first post (should this thread garner enough interest and usefulness).
Edited by SLuckyD, 05 May 2012 - 11:20 AM.
Sign In
Create Account



Back to top

Terms of Service