-
Notifications
You must be signed in to change notification settings - Fork 56
xNVSE 6: What's New
Happy new year! So it's been a while since the first xNVSE release, and while the first release introduced some performance improvements over the old NVSE, it mainly did so only because of an updated toolset (VS2008 to 2019) and more aggressive compiler optimizations enabled. With the previous version 5.1.6, changes to the codebase were minor, most only to fix severe bugs. xNVSE 6 is the first release where the codebase of NVSE has been changed significantly. We (korri123 and jazzisparis) spent a considerable amount of time optimizing the slowest parts of the codebase, from arrays to NVSE expressions, which can lead to significant performance gains in script heavy mods that utilize NVSE. There have also been new quality of life features added and crashes fixed among other things.
Changelog
- NVSE expression evaluator heavily optimized for performance (
let
,eval
,foreach
,call
etc. no longer considered slow) - NVSE arrays heavily optimized for performance
- NVSE cosave saving and loading heavily optimized for performance
- Optimizations in UI functions and string formatting functions
- Automatic cleanup of string variables and array variables (no more string and array var save bloating)
- Mod authors should however continue using
Sv_Destruct
andAr_Null
to prevent save bloating for people using older versions of NVSE
- Mod authors should however continue using
- Short circuit evaluation of conditional expressions in
eval
- Examples:
-
Func0 && Func1
- Func1 won't be called or evaluated if Func0 returns false -
Func0 || Func1
- Func1 won't be called or evaluated if Func0 returns true
-
- Examples:
- Improved error logging and reporting on NVSE script errors (script line printing)
- Ease restrictions on console (NVSE commands
call
andprint
can now be used in console for example) - Improved error reporting when NVSE plugins fail to load
- NVSE Plugin API expanded (added messages DeferredInit for callbacks when all objects are initialized, MainGameLoop for main loop callback)
- Minor bug fixes in various parts of NVSE, including tiny memory leaks and crashing code sections
- Codebase refactoring and cleanup
6.0.1
- Fixed some bugs and refined some console messages in regards to scripting
- Fixed a crash that could happen when loading interiors (handled by NVAC)
- Updated loaded version for Vortex
6.0.2
- Fix crash that could happen
- Fix array bug
6.0.3
- Fix string bloat issue that haunted some mods
- Fix cosave not saving mod index for strings
- Fix GetInGrid for some mods
- Fix some string formatting issues
6.0.4
- Fix minor array bug
- Fix crash / NVAC alert that could happen in events
- Improve error reporting
6.0.5
- Bug fixes related to strings and
set ... to
- Fixes for NVSE that used to be in JIP LN now transferred to NVSE
- Add ParamType_ScriptVariable for plugins
6.0.6
- Fixes some bugs that got introduced in 6.0.5
6.0.7
- Fix ToString ($) not working on too long strings after JIP removed own hook
- ExtractArgs replaced with ExtractArgsEx for all functions
- Fix GetAltPerkRank function
- Fix V3Normalize function
6.0.8
- Add new commands (old UI functions are bugged)
- GetUIFloatAlt
- SetUIFloatAlt
- SetUIStringAlt
- Fix bug related to UDF parameters and Hot Reload NVSE
6.0.9
- Fix GoTo and Label, which got broken in 6.0.7 and subsequently broke some mods.