9E4ECDDE / MultiplayerDynamicBonesMod

GNU General Public License v3.0
17 stars 8 forks source link

MultiplayerDynamicBonesMod

Makes dynamic bones multiplayer, allowing other players to interact with yours and vice versa, in addition to optimizing dynamic bones and more.

How to install? Follow the Automatic Installation instructions at https://melonwiki.xyz/#/README?id=installation-on-il2cpp-games Then drop the mod dll in the Mods folder.
This mod requires UIExpansionKit

Hotkeys Description
F1 Enable/disable the mod. You can also use the button in the quick menu if you're in VR or don't want to use the keyboard.
F4 Dump a list of active players working with the mod, useful for debugging.
F5 Open an ingame editor of Dynamic Bones settings if enabled in Mod Settings (Local only)
F8 List what colliders are attached to your bones.
F9 List colliders attached to other player's bones.
F11 Prints list of all Avatars in current list

Once the mod has been run at least once, it creates a settings file in the vrchat folder under UserData, in a .cfg file. See the bottom of this document for a list of all settings.

Screenshots!

Toggle/Settings Menu

From the 'MDB Settings' Button on the Quick Menu - A fast way to get to the most commonly adjusted settings
(The Quick Menu button can be disabled entirely by the 'Quick Menu Button' preference in Mod Settings)
image

MDB Avatar Config

This Menu focuses on Customizing Dynamic Bone interaction with other avatars on a per avatar basis
This is on the Quick Menu when you select another Player or on the side of the big Avatar menu for your own avatar

image

Sub Menus

image

MoarBones

Because the world always needs more Dynamic Bones!
This can be toggled in Mod Settings
image
"I hear you like bones~" Toggles this feature on/off
"Performance Limit" Limits this to the first 10 avatars loaded since last toggle/world change
"Don't effect local avatar" Stops moarbones from effecting you. Your own movements are networked through IK, so this is enabled by default.

Or from MDB Settings on the Quick Menu
image

Changelog:

Known bugs:

Todo:

Settings

Setting Name Default Value Display Text Extra info
What gets Mutliplayered - - -
EnabledByDefault true Enabled by default If mod is enabled when game starts
OptimizeOnly false Optimize bones, don't enable interaction [QM] Options such as DistanceDisable, EnableJustIfVisible and, DynamicBoneUpdateRate will still apply to help optimize dynamic bones. I recommend using this when you don't want to interact with others instead of disabling the mod completely
OnlyMe false Only I can interact with other bones [QM]
OnlyFriends false Only friends and I can interact w/ eachothers bones [QM]
DisallowDesktoppers false Desktopers's colliders and bones won't be multiplayer'd [QM]
OnlyHandColliders true Only enable colliders in hands [QM]
OnlyDynamicBonesOnBreasts false Only the breast bones will be multiplayer'd [QM] 'Breast bones' is defined as anything attached to the chest and not a child of the Left/Right Shoulder or Neck.
InteractSelf false Add your colliders to your own bones (May cause buggy interactions) [QM]
OthersInteractSelf false Add other avatar's colliders to their own bones (May cause buggy interactions) [QM]
AddAutoCollidersAll false Auto add hand colliders to avatars that don't have them (Requires reload of avatar) [QM] If this setting is enabled, you can disable this behavior per avatar by selecting them and opening the 'MDB Avatar Config' on your QuickMenu. Toggle the hand collider option on that menu to 'Disabled'
ExcludeSpecificBones true Exclude Specific Bones from being Multiplayered [QM] If the bones/colliders set in the per avatar exclude menus wont be multiplayered
IncludeSpecificBones true Include Specific Bones or Colliders to be Multiplayered[QM] If the bones/colliders set in the per avatar include menus will bypass filters
Bone settings - -
DistanceDisable true Custom value for disabling bones if beyond a distance [QM]
DistanceToDisable 4 Distance limit For above setting, in meters
DisallowInsideColliders true Disallow inside colliders from being multiplayered [QM]
DestroyInsideColliders false Destroy inside colliders (Requires reload of avatar) [QM]
ColliderSizeLimit 1f Collider size limit
DynamicBoneUpdateRate 60 Dynamic bone update rate
DynamicBoneUpdateRateAdjSettings true Adjust bone properties in a ratio from update rate change
EnableJustIfVisible true Enable dynamic bones only if they are in view Uses the visibility of an avatar's skinned mesh render to check for view
VisibilityUpdateRate 1f Visibility update rate (seconds)
BoneRadiusDivisor 4 Replace DB radius: Divisor - New Radius is BoneLegnth / ThisValue
EndBoneRadius 0.05f Replace DB radius: This is the fallback radius if the calculated value is 0
AdjustRadiusExcludeZero false Replace DB radius: Excludes bone with a radius of 0 from being changed
AdjustRadiusForAllZeroBones false Replace DB radius: Adjust All Zero Radius Bones - Replace the radius for all bones with a radius of 0 on all avatars
DisableAllBones false Disable all Dynamic Bones in Scene [QM]
Mod settings - -
KeybindsEnabled true Enable keyboard actuation(F1, F4 and F8) See above for bindings
UpdateMode 2 A value of 2 will notify the user when a new version of the mod is available, while 1 will not.
EnableEditor false EnableEditor (F5) GUI for live editing of bones, may need some work?
QuickMenuButton 1 Quick Menu Button - 1:Settings Menu, 2:Just Toggle, 0:None (Restart Req) Controls the state of the button that gets placed on your Quick Menu
LogLevel 0 Console Logging Level: 0-Default, 1-Info, 2-Debug, 3-ExtraDebug(Very laggy), -1 Silent Mode Logging info if you really want it
MoarBones false MoarBones: I hear you like bones~
MoarBonesPref true MoarBones: Performance Limit
MoarBonesNotLocal true MoarBones: Don't effect local avatar Enabled by default as the local avatar movements are networked
Hidden Lists/Text files - -
AvatarsToAddColliders.txt null Doesn't show in settings One line per avatar, this is populated through the in game menus. AvatarName+Hash
AvatarsToAdjustDBRadius.txt null Doesn't show in settings One line per avatar, this is populated through the in game menus. "AvatarName+Hash, 0.1-∞|0|-2", 0.1-∞ = Multiply to scale bones radius's by, 0 = Replace with Calculated, -2 = 'Exclude from Adjusting All Zero Radius Bones'
AvatarsToWhichNotApply.txt null Doesn't show in settings One line per avatar, this is populated through the in game menus. "AvatarName+Hash, True|False" True = Exclude, False = Include
BonesToAlwaysExclude.txt null Doesn't show in settings One line per Bone, user exact bone names This must be manually populated in the config file Example: (, are line breaks) Left Z_Wing_Bone_3, Left Z_Wing_Bone_2, Left Z_Wing_Bone_1, Right Z_Wing_Bone_3, Right Z_Wing_Bone_2, Right Z_Wing_Bone_1
BonesToExclude.txt null Doesn't show in settings One line per Bone, this is populated through the in game menus. AvatarName+Hash:db:BoneName
BonesToInclude.txt null Doesn't show in settings One line per Bone, this is populated through the in game menus. AvatarName+Hash:db:BoneName
CollidersToExclude.txt null Doesn't show in settings One line per Collider, this is populated through the in game menus. AvatarName+Hash:dbc:ColliderName
CollidersToInclude.txt null Doesn't show in settings One line per Collider, this is populated through the in game menus. AvatarName+Hash:dbc:ColliderName

[QM] means the setting is on the QuickMenu Settings Menu