File information
Last updated
Original upload
Created by
hydrogensaysHDT - aers - ousnius - Karonar1 - alandtse - geniusty - HSanMartin - skullgirls - DaydreamingDay - idaan300 - romanicles - igloomod - SesamePaste - jg1 - antpillager - Acro - webspamUploaded by
DaydreamingDayVirus scan
About this mod
Faster physics for capes, clothes, hair, etc!
- Requirements
-
Nexus requirements
Mod name Notes Crash Logger SSE AE VR - PDB support You can pass doing this only if you know what you're doing. Don't forget installing the right pdb too. Free FPS Before complaining about SMP performance, improve your setup with this guide by yours truly :) FSMPU - The FSMP User guide The user guide, read it! FSMPV - FSMP-Validator - HDT-SMP XML Schema To understand and verify your xml physics files. Nowhere else will you find the information on the new physics functionalities of FSMP 2.0 SMP-NPC crash fix Mandatory for Skyrim 1.6.x XP32 Maximum Skeleton Special Extended - XPMSSE Off-site requirements
Mod name Notes skse Mods requiring this file
- Permissions and credits
-
Author's instructions
All the assets in the mods are under MIT licence.
The description is my work and needs explicit permission to be reused.
No need of permission to link to it.
About DP repartition between authors and me, after having agreed with the different authors that I could contact that I should set the repartition as I consider right, currently alandtse receive 20% of the generated DP, and I receive the remaining.
Should hydrogensaysHDT or Karonar1 contact me, I'll offer them to have a share of it.
Should somebody else advance the functionalities of the code, I'll do the same.
Dispute about this repartition in the comments of one of my mods by somebody not an author of the code used here will result in the user being blocked from all my mods.File credits
hydrogensaysHDT, aers, Karonar1, Alandtse, igloomod, jg1 and webspam code is under MIT licence.
Thanks to them :) !
Thanks to HSanMartin for his improved SSE AVX binary :)
Thanks to geniusty for his build of SSE No-AVX of Karonar1 :)
Thanks to skullgirls for his builds of the SSE AVX CUDA and not-CUDA versions of Karonar1 :)
Thanks to idaan300 for his builds of the SSE CUDA AVX2/AVX512 version of Karonar1 :)
Thanks to alandtse and HSanMartin for their xml files :)Donation Points system
This mod is opted-in to receive Donation Points
- Changelogs
-
-
Version 2.0.3-beta1
- (Not yet released) The fomod detects automatically the skyrim version. Yay, no more "Help me, FSMP doesn't work, I installed the 1.5.97 version because I heard it was more stable" when you in fact have the 1.6.640 version :P
-
Version 2.0.2-beta1
- (Released in beta version) fix: reenable 'smp off' and 'smp on' console commands
-
Version 2.0.1
- (Released in beta version) fix: set the default motorERP and stopERP values at the Bullet default values to avoid regressions
-
Version 2.0.0
- (Released in beta version) FOR MODDERS: add non-hookean physics for more realistic moves! Thanks to Webspam :)
Allows to configure more finely generic constraints:
All defaults as per Bullet library defaults (no change to existing files / configs). If you want any of these features you must configure them in your constraints.
NB: enableLinearSprings can be used per-constraint to bypass the spring algorithm entirely, increasing performance for things that just don't need to be springy.
enableLinearSprings
enableAngularSprings
linearStiffnessLimited
angularStiffnessLimited
springDampingLimited
linearMotors
angularMotors
linearServoMotors
angularServoMotors
linearNonHookeanDamping
angularNonHookeanDamping
linearNonHookeanStiffness
angularNonHookeanStiffness
linearTargetVelocity
angularTargetVelocity
linearMaxMotorForce
angularMaxMotorForce
motorERP
motorCFM
stopERP
stopCFM
All of this is documented in the last version of FSMP-Validator.
- (Released in beta version) FOR MODDERS: add non-hookean physics for more realistic moves! Thanks to Webspam :)
-
Version 1.50.9-rc1
- (Released in release candidate) fix: fix random CTD introduced in 1.50.8-rc1
-
Version 1.50.8
- (Released in release candidate) MAJOR PERFORMANCE improvement: now, SMP physics runs in a separate thread from the main Skyrim thread. Basically, if your physics calculus take less time that the unrelated part of the skyrim main loop, it doesn't slow that loop anymore; if it takes more time, the Skyrim exe will wait for it, still it's way less fps lost than running them one after another.
Caveats: your CPU will work on other cores, so it isn't free in terms of heat/electricity.
NB: I added a new hook to the Skyrim executable, so maybe it won't play well with another dll which would use the same hook address. I have no way to know which other dlls would. Reports on this would be appreciated. - (Released in test version) MAJOR PERFORMANCE improvement: provide performance config inspired by full_inu. Thanks and kudos to him!
- (Released in release candidate) MAJOR PERFORMANCE improvement: now, SMP physics runs in a separate thread from the main Skyrim thread. Basically, if your physics calculus take less time that the unrelated part of the skyrim main loop, it doesn't slow that loop anymore; if it takes more time, the Skyrim exe will wait for it, still it's way less fps lost than running them one after another.
-
Version 1.50.7
- =========================================================================
(Released in release candidate) fix: add a configuration option to solve the slow time bug.
When enabled, use the RealTime clock instead of the WorldTime clock.
This is quite a conceptual change: the physics are calculated not depending on what we think is the inner game clock, but depending on what we think is the external real clock.
Theoretically this should be a worse choice, as we calculate physics for the game world with its own world clock.
But the preliminary tests show a better stability of the physics simulation when the game time is strongly slowed, when the fps are high (for example 100+), and of course with a combination of both.
My hypothesis for this better physics simulation is that the inner game clock has a larger error margin / a larger deviation than the real world clock, and that this causes artifacts in the physics simulation.
This bug has happened since the original HDT-SMP, for all versions of Skyrim (well, I haven't checked on the VR version).
=========================================================================
- =========================================================================
-
Version 1.50.6
- =========================================================================
(Released in release candidate) fix: take into account the unexpected armors names changes done by the Skyrim executable.
When a smp reset happens, we can't go through the ArmorAttachEvent processing: no event is sent by the skyrim executable.
So for each known skeleton, and each of its known armors meshes, we apply the related xml file.
Each armor has a record of each xml file applies, the names of the meshes of the armor in the xml file / nif, and for each mesh name the name of the NiAVObject attached through the ArmorAttachEvent hook processing.
We can then apply the related xml file to this NiAVObject that we find back through its name.
But! The skyrim executable changes later the name of the NiAVObject passed as attachedNode through the ArmorAttachEvent hook.
So, when trying to find the recorded name in the existing objects, we don't find it anymore.
This bug happens for armors, but not for headparts, which name isn't changed by Skyrim on the fly.
This bug has happened since the original HDT-SMP, for all versions of Skyrim (well, I haven't checked on the VR version).
=========================================================================
- =========================================================================
-
Version 1.50.5
- (Released in release candidate) added a configurable option to disable headparts physics when a wig is present.
-
Version 1.50.4
- fix: fix remaining invisibility bugs on AE
-
Version 1.50.3
- GOG version. Thanks to igloomod!
-
Version 1.50.2
- fix: when you have at the same time smp hair and smp wig, now, only the wig is physically calculated
-
Version 1.50.1
- fix: remove the 8 bones limit on AE. Thanks to jg1!
-
Version 1.50.0
- PC max rotation speed is now configurable. Thanks to webspam!
- fix: fix invisible characters bug introduced in 1.49.1 for VR users. Thanks to alandtse!
-
Version 1.49.3
- fix: fix the invisible/floating head part bug on AE introduced since AE integration. Thanks to Acro!
-
Version 1.49.2
- fix: fix CTD with hdt-smp hairs on NPCs on AE introduced since AE integration. Thanks to antpillager! :)
-
Version 1.49.1
- fix: prevent crash on shutdown introduced in 1.49.0. Thanks to jg1! :)
-
Version 1.49.0
- FSMP is one-year-old!! Let's celebrate this!
- For PLAYERS: MAJOR PERFORMANCE increase: calls to the bullet physics engine are now multithread. Thanks to Alandtse :)
- For PLAYERS: preliminary introduction of WIND. Thanks to Alandtse :)
Wind has the same direction as the other wind in Skyrim. Wind is lightened if some object protects the (N)PC from the wind. - For PLAYERS: updated cuda compilation from 11.6 to 11.8.
Removed the cuda code generation for Kepler architecture 35 (Tesla K40) and 37 (Tesla K80), and Jetson Orin architecture 87 (Jetson AGX Orin, Drive AGX Orin).
Added the cuda code generation for Ada Lovelace architecture 89 (GeForce RTX 4090, RTX 4080, RTX 6000, Tesla L40) and Hopper architecture 90 (NVIDIA H100 (GH100)). - For MODDERS: upgrade from Bullet 2.89 to Bullet 3.24. Thanks to Alandtse :) Dev/modders are welcome to provide improvements based on the Bullet 3 physics engine.
- For MODDERS: an interface to let other mods apply forces to PC and NPC has been added. Modders are welcome to implement magnetism, star wars force, earthquakes, ..., and wind with jg1! Thanks to jg1 :)
- To DEBUG: the FSMP version is now printed in the logs.
- Updated build toolkit from v142 (Visual Studio 2019) to v143 (Visual Studio 2022)
-
Version 1.48.0
- Integrated the 1.6.353 versions in the main installer.
- Streamlined the build process for VR/SE/1.6.353/1.6.640, and in preparation of the GOG/Epic versions.
-
Version 1.47
- =========================================================================
Fix: CTD fix by Alandtse. This CTD happened when an armor was added to the PC or an NPC, and there was no node given in the event sent by the skyrim engine. It happened since the original HDT-SMP mod, and on all versions (AE, SE, VR). Thanks to Alandtse!
========================================================================= - Provided the 1.47 1.6.353 dlls
06/10/2022: provided the same folders as the main mod without changing the version number, to ease the inclusion in collections. - Updated the article on building your own HDT-SMP with instructions for VR.
- =========================================================================
-
Version 1.46
- Fix: missing head parts on AE, ie vampire bug. Should solve the missing head parts from other races too that were happening on AE. Solves some of the invisibility bugs, the others should be fixed with the article on the invisibility.
-
Version 1.45
- AE version updated to 1.6.640.
- Updated the build article for 1.6.640
-
Version 1.44
- fix: fix the "invisible bug" and the "displaced head parts bug" on AE
-
Version 1.43
- Users can now track all bones creations in the logs: warnings and verbose messages are issued when bones are created.
- Existing warnings are now clearer.
- Bones creation code is now factorized.
- - A warning is issued when a bone is asked to be used without having been created first, for example for a constraint towards a node not explicitly declared as a bone. In that case, the bone is created with the current default bone values.
- - A warning is issued when a bone is declared a second time, or after having been already created. In that case, the new bone declaration is discarded.
- - A warning is issued when a bone is declared or asked to be used, and there is no node with that name. In that case, the request is discarded, no bone is created.
- - A warning is issued when a constraint refers to a not yet existing bone. Bone creation will be then attempted.
- These warnings already existed.
- - A verbose message is issued when a bone is created during the mesh body generation.
- - A verbose message is issued when a bone is created from a node outside of the mesh body generation (for example during a constraint setup).
- - A verbose message is issued when a constraint between 2 bones has been successfully set.
- These verbose messages are new.
-
Version 1.42
- fix: disable autoAdjustMaxSkeletons by default; because people with potato computers and this settings enabled have no physics simulation.
- fix: configs.xml settings better comments. All the settings have now comments.
-
Version 1.41
- Fix: solved the assertion crash when using a debug version. It was introduced in 1.37.
-
Version 1.40
- Feat: made configurable the number of physics calculus substeps. It's a new configuration setting, maxSubSteps, which was previously hardcoded. The physics slowdown when fps is below (min-fps / maxSubSteps).This allows players to choose between a better physics simulation and less fps), or better fps but with physics slowdown when at low fps.
-
Version 1.39
- Fix: scaling bug introduced in 1.25 about generic scale constraints. Was visible when setting player at high scale (10): some clothes animation would not scale gracefully.
- Feat: the source is now configured to be able to attach a debugger (useful for those who want to debug, even if they don't want to develop).
-
Version 1.38
- Fix: stop the corruption of saves for AE introduced in 1.37
- =========================================================================
Fix: avoid CTDs which could rarely happen when doing 'smp reset' or when closing the RaceSex menu. Bug was already in original HDT-SMP.
========================================================================= - Performance: allow to configure the disabling of PC physics when in 1st person view to save on performance. Disabled by default because some players rely on it and it was the current behaviour. Personally, I enable it.
-
Version 1.37
- Please give some enormous thanks to alandtse and SesamePaste for their tremendous work on this version!
- MAJOR - VR!! Integration of VR branch. Builds for VR are now provided like for other versions. If you want the previous VR versions, they're available in the 1.36 fomod.
- MAJOR - Major performance improvement: automatically adjusts the number of physics-enabled NPCs based on the time you want to assign to physics calculus, see configs.xml file. Prioritized NPCs are those closer to the camera, closer to the center of the screen and visible by the PC. 'smp list' in the console shows which NPCs are currently physics-enabled or not, and why. Consequently, the maxDistance filter is now unused.
- MAJOR - New function: added support for weapon nodes.
- Dynamic HDT: when Dynamic HDT isn't detected, no save of the configs of the modified objects is done.
- Dynamic HDT: smoothened pose transition between systems when calling papyrus functions.
- Compilation is now based on CUDA 11.6 rather than 10.2 (Their marketing announced performance improvements, is it true here? Mystery.). The CUDA code is now built for all supported versions of Kepler, Maxwell, Pascal, Volta, Turing and Ampere architectures for maximum compatibility. If somebody wishes max GPU performance, they can rebuild the dll while selecting only the architecture of their own GPU, by following the article on compiling your own HDT-SMP.
- Bugfix: the bug "NPC feets need to be visible to have working physics" is fixed.
-
Version 1.36
- The papyrus scripts of Dynamic HDT are now provided in the dedicated and recommended mod :)
If you don't use this mod, your overwrite folder won't be populated with save files. - Recommendations provided at the last page of the fomod.
- The papyrus scripts of Dynamic HDT are now provided in the dedicated and recommended mod :)
-
Version 1.35
- Reverted 1.31, it introduced jitter when under 60 fps. Read article on Min-fps to understand its importance.
-
Version 1.34
- Fix on integration of Dynamic HDT - Papyrus Script Extension for Faster HDT-SMP
-
Version 1.33
- Integration of Dynamic HDT - Papyrus Script Extension for Faster HDT-SMP
-
Version 1.32
- Fixed occasional CTD introduced in 1.25 when switching from 3rd person view to 1st person view.
-
Version 1.31
- Physics simulation stability and performance: when fps is under min-fps, removed the physics simulations where the timestep is different/lower from/than min-fps. This results in more stability when the fps are under min-fps as the physics run always exactly at min-fps frequency, and the bullet engine requires a stable frequency to avoid artefacts like resonance. And results in a better performance between 20-60 fps, as no time is spent on simulating smaller increment of time. Consequently, a slowdown of the physics simulation compared to the game clock exists at the frame scale, but this is corrected the next frame, and is unnoticeable to the player; more unnoticeable than the physics errors introduced by irregular timesteps.
-
Version 1.30
- Fixed collision bug introduced in 1.18. Probably introduced jiggle.
-
Version 1.29
- Fixed collision bug introduced in 1.25. It made hairs go wild.
-
Version 1.28
- Performance: no more debug messages called in release builds.
-
Version 1.27
- Bugfix: bug happened when attaching armor, for example when doing smp reset. Armors were stretched down a lot. Bug introduced in version 1.25
-
Version 1.26
- You can now debug and profile yourself! Do it on your buggy physics elements, like earrings, clothes, shlongs, etc :) Fully debuggable and profilable builds are now provided. .pdb files with full debug information are generated during each build (release and debug), and provided in the archive. For debug builds, the CUDA linker generates the GPU debugging information.
- The version by HSanMartin isn't provided anymore in the fomod. If you need it (for example for testing reasons), take it in the 1.18 version.
-
Version 1.25
- Major performance improvements: uses less CPU at high fps (60+), uses a lot less CPU & GPU at low fps (between 20 and 60 fps), with a lot more stable behaviour at low fps.
- Performance improvement and bugfix: we now cull the skeletons in the cone behind the camera. The accepted skeletons are those in the cone in front of the camera, the formula accepted the skeletons in the cone behind the camera too.
- Performance improvement and bugfix: faster constraint code, fixed bug which might have introduced jiggling.
-
Version 1.24
- 'smp reset' now reloads the configs.xml file, which allows you to test different parameters without relaunching Syrim.
-
Version 1.23
- Bug fix: fatal error when loading SKSE 2.1.5 solved
-
Version 1.22
- Performance: reworked the culling math to remove trigonometrics functions and divisions. There remains only multiplications and additions.
-
Version 1.21
- Builds built on Karonar1's code aren't provided anymore. If you need them (for example for testing reasons), take them in the 1.18 version.
- Performance improvement. Some calculus are calculated before, outside the loop.
-
Version 1.20
- Performance improvement: culling depends now on camera orientation rather than player orientation. The three directions x/y/z are taken into account for direction and distance rather than only x/y.
- Bugfix: solves the bug where in 3rd person view, some visible skeletons are inactive because they're not in front of the player character.
-
Version 1.19
- Added explanation in the Fomod about how to choose between AE and SE version.
- Removed the xml files from the fomod, they're now optional, to download separately.
- Updated AE versions to SKSE 2.1.5, for Skyrim 1.6.353
-
Version 1.18
- Added AE CUDA versions
- Integrated CUDA changes on master branch, choosable through configuration options in the VS2019 solution. We can now build from the same branch, and the same VS2019 solution AE/SE, CUDA/NOCUDA, AVX/AVX2, AVX512, NoAVX. We still need different skse, though.
-
Version 1.17
- Bugfix for hair on AE - Not CUDA
-
Version 1.16
- Added AE not-CUDA versions, thanks to igloomod code
-
Version 1.15
- Fixes the CTD caused by access to NULL m_name of BSTriShape, in the DaydreamingDay builds. Found and fixed by romanicles. Was present in all Karonar1-based versions.
-
Version 1.14
- Test builds for Anniversary Edition included
-
Version 1.13
- All builds by DaydreamingDay now include a .pdb file for better debugging.
-
Version 1.12
- The CTD when changing sex in RaceMenu is solved in the VR CUDA version.
-
Version 1.11
- All the SSE versions are now at least generated on the DaydreamingDay branch, for CUDA and NOT-CUDA, for NOT-AVX, AVX, AVX2 and AVX512.
- The CTD when changing sex in RaceMenu is solved in the SSE versions. It should solve lots of CTDs introduced by this mod. The CTD probably happens in the VR version.
- All the configs.xml files are now configured with the same values, to allow a sane comparison. The comments are a little bit clearer to allow you to modify them yourself.
- The xml files describing the physics, and kindly provided by alandtse and HSanMartin are now available for all configs.
- The configs.xml files of the CUDA version have now CUDA enabled by default.
- The configs.xml files have now groupEnableMLCP disabled by default.
- The default value of maximumDistance in the configs.xml files is now 500 by default.
-
Version 1.10
- Fixed the name of the downloaded file
- Added information about recommended and not recommended options
- Added SSE - Not CUDA - AVX512 version
-
Version 1.9
- Added SSE - Not CUDA - AVX version from DaydreamingDay to investigate CTD on AVX2 version from DaydreamingDay
-
Version 1.8
- Added SSE CUDA AVX2 and SSE CUDA AVX512 versions of idaan300
-
Version 1.7
- Added the VR not-CUDA version of alandtse
-
Version 1.6
- Fixes the CTD of the SSE CUDA AVX gpgpu-collision version
- Improved compilation of the SSE CUDA AVX gpgpu-new-reduction version
-
Version 1.5
- Replaced the download files by a fomod installer
- Added a SSE NOT-CUDA AVX2 version
-
Version 1.4
- All currently advised versions are labeled 1.4.
- 2 CUDA versions based on the 2 CUDA branches of Karonar1 have been compiled by skullgirls, see the "details about the different versions" section for more information.
- Shorter files names because of windows file name length limitation
-
Version 1.3
- Added version by geniusty removing the auto-jiggling phenomenon
-
Version 1.2 VR
- Performance improved again for VR file: limiting even better the calculus to what you see, and to the physics-enabled skeletons in the cell. I don't know if the performance improvements are measurable, but the logic behind the code improvements is undeniable.
-
Version 1.0
- Initial version
-
- Donations
-
Straight donations accepted
(Faster HDT-Skinned Mesh Physics)
It's now 1 year old!!
A user recently made me aware that I didn't share how much help is needed, so: I need your help!
You can help in lots of different ways, whatever are your modding abilities :)
Like proposing new features, diagnosing and documenting bugs, developing features or bugfixes, documenting features, testing the betas versions, implementing the continuous delivery process...
If you wish to help, just ping me (DaydreamingDay) on discord, the link is just below :)
Please do not report as bug the need to upddate to SKSE 2.2.3, I am already aware (and it seems to work quite well in the meantime).
The Epic version won't be supported as long as SKSE doesn't support it.
Developed by hydrogensaysHDT... Improved by aers, ousnius, Karonar1, alandtse, HsanMartin, DaydreamingDay, romanicles, igloomod, SesamePaste, jg1, antpillager, Acro and webspam!
Hello everybody, this is a skse plugin allowing advanced physics to be applied to actors via xml configuration files.
This mod massively improves performance over the original HDT-SMP, and replaces it totally.
Installation, recommended mods, help and bugs, FAQ, and lots more: read FSMPU - The FSMP User Guide!
Bug reports are now locked on Nexus, you can submit them on github.
Etiquette
I really didn't think that such a response would happen.
I'll ask users to be excellent to each others, dudes and dudettes

and I'll be a little bit more restrictive in my moderation of the comments.
First, I will hide comments when the answer is in the description, or if the question has already been answered in the comments.
Second, I will hide comments insulting others or me, even if the insult is implicit, as long as the insult isn't linked to the work provided by modders.
Third, I will block users insulting others or me, even if the insult is implicit, when the insult is linked to the work provided by modders.
Finally, I will block users disputing the DP repartition agreed with the authors (see the permissions if interested).
I will apply this moderation policy on all my mods.
Of course, I'll be moderate, playful banter isn't insult, and I'll make sure the description is informative enough.
sidfu is from now on blocked from my mods.
My heartfelt thanks to everybody who sees value in this mod

Credits & thanks
Credits and thanks to aers, ousnius, hydrogensaysHDT, Karonar1, alandtse, hsanmartin, skullgirls, idaan300, romanicles, igloomod, Sesamepaste, jg1, antpillager, Acro and webspam :)
Thanks to alandtse, HsanMartin, geniusty, skullgirls, idaan300 and DaydreamingDay for the improved compilation :)
Thanks to BullishMarket and nosferatu2007 for the info leading to this mod creation about the github fork of HDT-SMP by Karonar1 :)
Thanks to BullishMarket yet again for his comment about the performance level of the CUDA version :)
Thanks to raziell74 and SaevaVeritas for their simple explanations that I reused in the FAQ :)
Thanks to romanicles for his asking of debugging symbol files :)
Thanks to zhongjiedong and Ogrescar for their comments informing me I had forgotten to include the adequate configs.xml file :)
Thanks to the best part of the users of this mod to have convinced me not to abandon it :)
And finally, my heartful thanks to the regulars of this mod forum (right now, WodoOfSkyrim, Ogrescar, igloomod, and lots of others!)