Announcement

Collapse
No announcement yet.

Advanced Locomotion System V3

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Originally posted by karma4jake View Post
    jonathan light
    Did you import the mesh and then assign/reassign it to the actual als skeleton? I would try changing the retargeting options from "animation" to "skeleton" on some of those bones in that area to see what effect it has.

    I tried the pack with a few meshes and it seemed okay by just importing them in and just assigning to als skeleton instead of its own.
    if I tried
    I would like a video of your solution if it were possible
    I would be very grateful

    Comment


      Originally posted by jonathan light View Post

      if I tried
      I would like a video of your solution if it were possible
      I would be very grateful
      Did you try a method similar to this? What kind of character are you using? Is it from Character Creator? Maybe that particular mesh is skinned wrong or something idk,

      https://youtu.be/IQVrgRWD4Qk

      Comment


        So we're now working with this as its amazing!

        Could you give us a hint on how we could convert this to always look at the mouse position for a top down style game?

        I was thinking we need to get the Look rotation and Character rotation arrow to rotate with the mouse?

        Could anyone provide any help? Thanks!
        Just added our project to DBIndie. 17/07/16

        Comment


          Can someone please link the documentation, I can't find it anywhere !?!

          Comment


            This networking code is convoluted and an unnecessary waste of bandwidth. You don't need to use any multicasts and you shouldn't - those are used for time critical events and most certainly never for cosmetics. The animation is based on what the character is doing, that's already communicated, you don't need to replicate the animation states - they're derived already!

            The netcode also doesn't work - test it with latency, it'll get corrected constantly.

            You don't replicate movement input either, it's already done from CMC via Acceleration. There's no reason to replicate any rotations either, again it's already done. "Base Aim Rotation" is your friend.

            I love the rest of the work, though. Let me help you with the replication --

            Fixing the replication issues
            Does not include ragdoll or input events
            1. Remove replication from every replicated variable
            2. Remove every instance of "Is Locally Controlled" and "IsNetworked" and allow all to run the code (except from the debug nodes)
            3. Remove every RPC call to server
            4. Switch: Set Looking Rotation should be changed from Get Control Rotation to Get Base Aim Rotation and it should be normalized (eg: https://i.imgur.com/K5wM8ui.png ) alternatively you can feed it through Delta (Rotator) and leave input B empty, it normalizes it (just looks ugly and newbies might delete it thinking it does nothing).
            5. Switch getters for Character Rotation to Get Actor Rotation anywhere it's being used for computations (not for setting actual rotation, etc) - just consider it carefully and you'll be fine. If you don't, simulated proxies will jitter when rotating.
            6. Switch: Set Movement Input from Character Movement -> Get Last Input Vector to Character Movement -> Get Current Acceleration -> Normalize ( https://i.imgur.com/O5P5OgO.png )
            Remaining issue: The Custom Acceleration graph desyncs at higher latency

            Result: Nothing is replicated, nothing is RPCd. Meaning you save all that bandwidth. And it works just the same. Why does this work? Because CMC already replicates all this stuff for you!

            Thanks so much for your hard work

            ---

            Edit: As for the ragdoll, I haven't taken much of a look at it. If you had a ton of players ragdolling all over the place you might want to simply replicate the location instead of multicasting it (you may have to temporarily raise the net update rate)
            Last edited by Vaei; 07-09-2018, 01:28 AM.

            Comment


              EDIT - Bluemak offered the solution on MP comments section:

              Open the animation that has the turn. There is an anim notify in blue. Click on it and then change the animation montage to the corresponding character animation montage. For some reason when you retarget it keeps the old character montage. You need to do it for each turning animation.



              There's no explanation of the process to change your character. Someone did a video using 'assign skeleton' but that's largely useless because I need proper retargetting to our skeleton.

              I retargetted it to my character and the character wont turn from the animation (while aiming). I'm using the original character BP and everything else uses interfaces, so there's no possibility of a missing cast (and I triple checked it).

              If I duplicate the ALS mannequin's anim BP the issue does not occur, it's only when I use the retargetting:



              If I export the mannequin, then import it (to create a new skeleton and mesh) and then retarget to that, the issue occurs - meaning it's not related specifically to our mesh/skeleton.
              Last edited by Vaei; 06-14-2018, 12:41 AM.

              Comment


                For IK to work on custom characters you need to add these two nodes to the post process anim BP

                (
                copy this text (exactly) to the clipboard then paste it into the BP ) - the author should do this too so everyone gets the fix

                Code:
                Begin Object Class=/Script/AnimGraph.AnimGraphNode_CopyBone Name="AnimGraphNode_CopyBone_2"
                   Node=(SourceBone=(BoneName="foot_l"),TargetBone=(BoneName="ik_foot_l"),ControlSpace=BCS_WorldSpace)
                   ShowPinForProperties(0)=(PropertyName="SourceBone",PropertyFriendlyName="Source Bone",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_CopyBone:SourceBone", "Source Bone Name to get transform from"),CategoryName="Copy")
                   ShowPinForProperties(1)=(PropertyName="TargetBone",PropertyFriendlyName="Target Bone",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_CopyBone:TargetBone", "Name of bone to control. This is the main bone chain to modify from. *"),CategoryName="Copy")
                   ShowPinForProperties(2)=(PropertyName="bCopyTranslation",PropertyFriendlyName="Copy Translation",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_CopyBone:bCopyTranslation", "If Translation should be copied"),CategoryName="Copy",bShowPin=True,bCanToggleVisibility=True)
                   ShowPinForProperties(3)=(PropertyName="bCopyRotation",PropertyFriendlyName="Copy Rotation",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_CopyBone:bCopyRotation", "If Rotation should be copied"),CategoryName="Copy",bShowPin=True,bCanToggleVisibility=True)
                   ShowPinForProperties(4)=(PropertyName="bCopyScale",PropertyFriendlyName="Copy Scale",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_CopyBone:bCopyScale", "If Scale should be copied"),CategoryName="Copy",bShowPin=True,bCanToggleVisibility=True)
                   ShowPinForProperties(5)=(PropertyName="ControlSpace",PropertyFriendlyName="Control Space",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_CopyBone:ControlSpace", "Space to convert transforms into prior to copying components"),CategoryName="Copy")
                   ShowPinForProperties(6)=(PropertyName="ComponentPose",PropertyFriendlyName="Component Pose",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_SkeletalControlBase:ComponentPose", "Input link"),CategoryName="Links",bShowPin=True)
                   ShowPinForProperties(7)=(PropertyName="Alpha",PropertyFriendlyName="Alpha",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_SkeletalControlBase:Alpha", "Current strength of the skeletal control"),CategoryName="Settings",bShowPin=True,bCanToggleVisibility=True)
                   ShowPinForProperties(8)=(PropertyName="AlphaScaleBias",PropertyFriendlyName="Alpha Scale Bias",PropertyTooltip="Alpha Scale Bias",CategoryName="Settings")
                   ShowPinForProperties(9)=(PropertyName="LODThreshold",PropertyFriendlyName="LOD Threshold",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_SkeletalControlBase:LODThreshold", "* Max LOD that this node is allowed to run\n* For example if you have LODThreadhold to be 2, it will run until LOD 2 (based on 0 index)\n* when the component LOD becomes 3, it will stop update/evaluate\n* currently transition would be issue and that has to be re-visited"),CategoryName="Performance")
                   NodePosX=-1216
                   NodePosY=-64
                   NodeGuid=3D529F464631BCBC2571CB90F6F2AD35
                   CustomProperties Pin (PinId=43D7FC874A52A88DCDB27693B5000DB7,PinName="bCopyTranslation",PinFriendlyName="Copy Translation",PinToolTip="Copy Translation\nBoolean\n\nIf Translation should be copied",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="true",AutogeneratedDefaultValue="False",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
                   CustomProperties Pin (PinId=675B2AAC4EB23090EC92EFB6F0ED8FA3,PinName="bCopyRotation",PinFriendlyName="Copy Rotation",PinToolTip="Copy Rotation\nBoolean\n\nIf Rotation should be copied",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="true",AutogeneratedDefaultValue="False",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
                   CustomProperties Pin (PinId=921880B64C270A813E9EFEB4E0B0B65D,PinName="bCopyScale",PinFriendlyName="Copy Scale",PinToolTip="Copy Scale\nBoolean\n\nIf Scale should be copied",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="False",AutogeneratedDefaultValue="False",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
                   CustomProperties Pin (PinId=1064BFA340A02FC1050B8A89301484EA,PinName="ComponentPose",PinFriendlyName="Component Pose",PinToolTip="Component Pose\nComponent Space Pose Link Structure\n\nInput link",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=ScriptStruct'"/Script/Engine.ComponentSpacePoseLink"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="(LinkID=-1,SourceLinkID=-1)",AutogeneratedDefaultValue="(LinkID=-1,SourceLinkID=-1)",LinkedTo=(AnimGraphNode_LocalToComponentSpace_0 79D2C07643B31E75C8555BA9137569CD,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
                   CustomProperties Pin (PinId=AF2B6F824D6ED80EA2BBE29F16B4AF4D,PinName="Alpha",PinFriendlyName="Alpha",PinToolTip="Alpha\nFloat\n\nCurrent strength of the skeletal control",PinType.PinCategory="float",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="1.000000",AutogeneratedDefaultValue="1.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
                   CustomProperties Pin (PinId=072ECDD041D5929851356895BC6DA776,PinName="Pose",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=ScriptStruct'"/Script/Engine.ComponentSpacePoseLink"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(AnimGraphNode_CopyBone_0 1064BFA340A02FC1050B8A89301484EA,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
                End Object
                Begin Object Class=/Script/AnimGraph.AnimGraphNode_CopyBone Name="AnimGraphNode_CopyBone_0"
                   Node=(SourceBone=(BoneName="foot_r"),TargetBone=(BoneName="ik_foot_r"),ControlSpace=BCS_WorldSpace)
                   ShowPinForProperties(0)=(PropertyName="SourceBone",PropertyFriendlyName="Source Bone",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_CopyBone:SourceBone", "Source Bone Name to get transform from"),CategoryName="Copy")
                   ShowPinForProperties(1)=(PropertyName="TargetBone",PropertyFriendlyName="Target Bone",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_CopyBone:TargetBone", "Name of bone to control. This is the main bone chain to modify from. *"),CategoryName="Copy")
                   ShowPinForProperties(2)=(PropertyName="bCopyTranslation",PropertyFriendlyName="Copy Translation",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_CopyBone:bCopyTranslation", "If Translation should be copied"),CategoryName="Copy",bShowPin=True,bCanToggleVisibility=True)
                   ShowPinForProperties(3)=(PropertyName="bCopyRotation",PropertyFriendlyName="Copy Rotation",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_CopyBone:bCopyRotation", "If Rotation should be copied"),CategoryName="Copy",bShowPin=True,bCanToggleVisibility=True)
                   ShowPinForProperties(4)=(PropertyName="bCopyScale",PropertyFriendlyName="Copy Scale",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_CopyBone:bCopyScale", "If Scale should be copied"),CategoryName="Copy",bShowPin=True,bCanToggleVisibility=True)
                   ShowPinForProperties(5)=(PropertyName="ControlSpace",PropertyFriendlyName="Control Space",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_CopyBone:ControlSpace", "Space to convert transforms into prior to copying components"),CategoryName="Copy")
                   ShowPinForProperties(6)=(PropertyName="ComponentPose",PropertyFriendlyName="Component Pose",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_SkeletalControlBase:ComponentPose", "Input link"),CategoryName="Links",bShowPin=True)
                   ShowPinForProperties(7)=(PropertyName="Alpha",PropertyFriendlyName="Alpha",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_SkeletalControlBase:Alpha", "Current strength of the skeletal control"),CategoryName="Settings",bShowPin=True,bCanToggleVisibility=True)
                   ShowPinForProperties(8)=(PropertyName="AlphaScaleBias",PropertyFriendlyName="Alpha Scale Bias",PropertyTooltip="Alpha Scale Bias",CategoryName="Settings")
                   ShowPinForProperties(9)=(PropertyName="LODThreshold",PropertyFriendlyName="LOD Threshold",PropertyTooltip=NSLOCTEXT("UObjectToolTips", "AnimNode_SkeletalControlBase:LODThreshold", "* Max LOD that this node is allowed to run\n* For example if you have LODThreadhold to be 2, it will run until LOD 2 (based on 0 index)\n* when the component LOD becomes 3, it will stop update/evaluate\n* currently transition would be issue and that has to be re-visited"),CategoryName="Performance")
                   NodePosX=-1216
                   NodePosY=160
                   ErrorType=4
                   NodeGuid=BED04FC94B0BAF58A561A9950F18827C
                   CustomProperties Pin (PinId=43D7FC874A52A88DCDB27693B5000DB7,PinName="bCopyTranslation",PinFriendlyName="Copy Translation",PinToolTip="Copy Translation\nBoolean\n\nIf Translation should be copied",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="true",AutogeneratedDefaultValue="False",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
                   CustomProperties Pin (PinId=675B2AAC4EB23090EC92EFB6F0ED8FA3,PinName="bCopyRotation",PinFriendlyName="Copy Rotation",PinToolTip="Copy Rotation\nBoolean\n\nIf Rotation should be copied",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="true",AutogeneratedDefaultValue="False",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
                   CustomProperties Pin (PinId=921880B64C270A813E9EFEB4E0B0B65D,PinName="bCopyScale",PinFriendlyName="Copy Scale",PinToolTip="Copy Scale\nBoolean\n\nIf Scale should be copied",PinType.PinCategory="bool",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="False",AutogeneratedDefaultValue="False",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
                   CustomProperties Pin (PinId=1064BFA340A02FC1050B8A89301484EA,PinName="ComponentPose",PinFriendlyName="Component Pose",PinToolTip="Component Pose\nComponent Space Pose Link Structure\n\nInput link",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=ScriptStruct'"/Script/Engine.ComponentSpacePoseLink"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="(LinkID=-1,SourceLinkID=-1)",AutogeneratedDefaultValue="(LinkID=-1,SourceLinkID=-1)",LinkedTo=(AnimGraphNode_CopyBone_2 072ECDD041D5929851356895BC6DA776,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
                   CustomProperties Pin (PinId=AF2B6F824D6ED80EA2BBE29F16B4AF4D,PinName="Alpha",PinFriendlyName="Alpha",PinToolTip="Alpha\nFloat\n\nCurrent strength of the skeletal control",PinType.PinCategory="float",PinType.PinSubCategory="",PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue="1.000000",AutogeneratedDefaultValue="1.000000",PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
                   CustomProperties Pin (PinId=072ECDD041D5929851356895BC6DA776,PinName="Pose",Direction="EGPD_Output",PinType.PinCategory="struct",PinType.PinSubCategory="",PinType.PinSubCategoryObject=ScriptStruct'"/Script/Engine.ComponentSpacePoseLink"',PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(AnimGraphNode_ModifyBone_102 4324171144775F12BF4610A840698087,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)
                End Object

                Comment


                  I'm putting together an ai crowd demo using advance locomotion + AI Behavior toolkit, for the most part everything is running smoothly except for a couple of issues I need help with.

                  Ue4 - 4.19

                  1. On hard direction changes, character goes face down, rotates around and comes back up. This is only when adding y-up mesh to the mannequin skeleton, I saw in the forums about root bone rotation in anim graph however I can't see it anywhere, happens in both player and ai controlled.

                  2. With the behavior toolkit theres a function with the ai to take a slot which when nearyby will transform and rotate to match and play a montage. When pausing the simulation and going frame by frame, character walks there, rotates the correct direction that I've set for 1 frame then reverts back to original rotation then begins playing the montage, which works for non ALS ai)

                  Any assistance would be much appreciated!

                  Kind Regards,

                  -Caleb

                  Comment


                    How do you apply IK to different skeleton? I have to use skeleton translation retargeting and seems like virtual bones connected to bones from non-retargeted animation.

                    I tried to set translation offsets to IK bones, tried this. Nothing works to me. Character rather puts a foot into terrain than change height of it.
                    Attached Files
                    Last edited by Two-faced; 08-29-2018, 06:51 AM.
                    Available for contract hiring! Complex mechanics, quick game prototyping, VR, AI, Animation, Tools for designers.

                    Check out my latest game! Last Joy - 2D RPG with unique combat system.

                    Comment


                      Originally posted by Enraged91 View Post
                      Hello everyone,

                      I'm trying to find out how I disabled the foot correction and I was hoping for some advice.

                      First a small video showing what's supposed to happen.

                      https://www.dropbox.com/s/ub5bafufhs...53.02.mp4?dl=0

                      Now a video showing what my character is doing.

                      https://www.dropbox.com/s/twwjxtyb60...34.01.mp4?dl=0

                      It almost seems as though I've managed to disable the foot correction altogether. I haven't changed the mesh or done anything with the IK system. Any ideas on where to look for fixing this issue?
                      Hey Enraged91 in case you or anyone is stuck on that, the thing is when you re import animations for the first time the curve names get messed up, go to all locomotion animations and rename the curves, all curves that go from -1 to 1 are FootPosition and the curves that stay at same value are FootDirection, to disable stops you would have to remove and fix those states in the animBP, and then you can remove the event for getting foot values, should be obvious if you dig into the animBP

                      Comment


                        Originally posted by Vaei View Post
                        This networking code is convoluted and an unnecessary waste of bandwidth. You don't need to use any multicasts and you shouldn't - those are used for time critical events and most certainly never for cosmetics. The animation is based on what the character is doing, that's already communicated, you don't need to replicate the animation states - they're derived already!

                        The netcode also doesn't work - test it with latency, it'll get corrected constantly.

                        You don't replicate movement input either, it's already done from CMC via Acceleration. There's no reason to replicate any rotations either, again it's already done. "Base Aim Rotation" is your friend.

                        I love the rest of the work, though. Let me help you with the replication --

                        Fixing the replication issues
                        Does not include ragdoll or input events
                        1. Remove replication from every replicated variable
                        2. Remove every instance of "Is Locally Controlled" and "IsNetworked" and allow all to run the code (except from the debug nodes)
                        3. Remove every RPC call to server
                        4. Switch: Set Looking Rotation should be changed from Get Control Rotation to Get Base Aim Rotation and it should be normalized (eg: https://i.imgur.com/K5wM8ui.png ) alternatively you can feed it through Delta (Rotator) and leave input B empty, it normalizes it (just looks ugly and newbies might delete it thinking it does nothing).
                        5. Switch getters for Character Rotation to Get Actor Rotation anywhere it's being used for computations (not for setting actual rotation, etc) - just consider it carefully and you'll be fine. If you don't, simulated proxies will jitter when rotating.
                        6. Switch: Set Movement Input from Character Movement -> Get Last Input Vector to Character Movement -> Get Current Acceleration -> Normalize ( https://i.imgur.com/O5P5OgO.png )
                        Remaining issue: The Custom Acceleration graph desyncs at higher latency

                        Result: Nothing is replicated, nothing is RPCd. Meaning you save all that bandwidth. And it works just the same. Why does this work? Because CMC already replicates all this stuff for you!

                        Thanks so much for your hard work

                        ---

                        Edit: As for the ragdoll, I haven't taken much of a look at it. If you had a ton of players ragdolling all over the place you might want to simply replicate the location instead of multicasting it (you may have to temporarily raise the net update rate)
                        Hi all, i was going through those steps, and ran into 2 problems, first is when using get base aim rotation, l am only getting pitch replicated in the aimoffset, not the whole "head look first then turn body" functionality i am kind of lost as to why since i am still not 100% comfortable with these blueprints.
                        Second is that without replication of MovementInput variable the pivots wont play, any ideas? i cant think of a way to fix it that does not use a replicated "desired velocity" or input rpc, maybe a rpc that triggers only when input has changed direction? that may work and will save bandwidth

                        Comment


                          Originally posted by Clazzid View Post

                          Hi all, i was going through those steps, and ran into 2 problems, first is when using get base aim rotation, l am only getting pitch replicated in the aimoffset, not the whole "head look first then turn body" functionality i am kind of lost as to why since i am still not 100% comfortable with these blueprints.
                          Second is that without replication of MovementInput variable the pivots wont play, any ideas? i cant think of a way to fix it that does not use a replicated "desired velocity" or input rpc, maybe a rpc that triggers only when input has changed direction? that may work and will save bandwidth
                          The only thing that stopped my pivots from playing is when I retargetted the anim notify references weren't updated. There's no need to replicate anything or send any RPC.

                          Not sure about the aim offset. I no longer use ALS, made my own system.

                          Comment


                            I have yet to get a single character to remap properly. Whenever I've tried the paragon assets, the arms go all noodly. At least thats what happens when retargetting the animations as someone suggested in another post. Same thing happens with custom characters. Has anyone else had this issue or perhaps has a solution?

                            Comment


                              Originally posted by zeroax1s View Post
                              I have yet to get a single character to remap properly. Whenever I've tried the paragon assets, the arms go all noodly. At least thats what happens when retargetting the animations as someone suggested in another post. Same thing happens with custom characters. Has anyone else had this issue or perhaps has a solution?
                              This.

                              A client has asked me to take a look at the project they've gotten together and so far, I'm unable to get any of my custom Skeletal Meshes to work with the system, at least without the legs being weird and turn-in-place not working properly.

                              Currently, I'm just retargeting the Animation BP's from the original content and then re-assigning everything else until it seems to work without any warnings etc.

                              Comment


                                Originally posted by DylanEF94 View Post

                                This.

                                A client has asked me to take a look at the project they've gotten together and so far, I'm unable to get any of my custom Skeletal Meshes to work with the system, at least without the legs being weird and turn-in-place not working properly.

                                Currently, I'm just retargeting the Animation BP's from the original content and then re-assigning everything else until it seems to work without any warnings etc.
                                When you retarget, does your character just turn in place over and over again? If so, I am having the same problem.

                                Comment

                                Working...
                                X