Announcement

Collapse
No announcement yet.

UTGameCrowdAgent Log Error | Error: Can't call UpdateRBBonesFromSpaceBases() |NpActor

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

    UTGameCrowdAgent Log Error | Error: Can't call UpdateRBBonesFromSpaceBases() |NpActor

    I'm getting this error in every tick, and it results in 200mb log files as there are 30-40 agents active on the map and this error always loops for all the agents.
    Code:
    [0108.13] Error: Can't call UpdateRBBonesFromSpaceBases() on (UTGameCrowdAgent_151)->(SkeletalMeshComponent_216) during async work!
    [0108.13] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
    [0108.13] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
    [0108.13] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
    [0108.13] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
    [0108.13] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
    I will be very glad if someone can help me on this.
    The 'bishop_crowd' archetype is the same as the default one, instead it has a physic asset assigned and the collision settings are like this:


    and the kismet properties if its relevant


    Also; At UTGameCrowdAgent.uc there is a line:
    SkeletalMeshComponent.UpdateRBBonesFromSpaceBases( TRUE, TRUE);

    Is the error about this value?

    #2
    I'll have to bump this, sorry.

    Comment


      #3
      The default tick method of UTGameCrowdAgent is TG_PostAsyncGroup

      ON UDN it says that: If it changes collision, spawns collidable actors, writes to Novodex data, then it should go in TG_PreAsyncWork

      So i did this, but i'm getting the same error. Is this error related to the code of utgamecrowdagent.uc?


      [0013.14] Error: Can't call UpdateRBBonesFromSpaceBases() on (UTGameCrowdAgent_1)->(SkeletalMeshComponent_58) during async work!
      [0013.14] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!

      Comment


        #4
        another bump.

        Comment


          #5
          Did you change the tick group of both the actor and the mesh component?

          Comment


            #6
            Originally posted by Spoof View Post
            Did you change the tick group of both the actor and the mesh component?
            Just seen the reply. When the error started to happen the tick group of the actor and mesh component were at their default settings (same as Bishop Crowd Archetype that spawns the robot)

            Comment


              #7
              Is this all Kismet or do you have unreal script affecting it?

              Logically, something is attempting to call UpdateRBBonesFromSpaceBases() during the asynchronous phase while physics is still simulating. The tickgroup of the actor and component seem to be correct, so it's likely that another actor using TG_DuringAsyncWork is trying to call the function through a reference to the agent.

              Comment


                #8
                Originally posted by exittoexist View Post
                The default tick method of UTGameCrowdAgent is TG_PostAsyncGroup
                I just checked the API and the default, for both actor and skeletal mesh component, is TG_DuringAsyncWork.

                Comment


                  #9
                  Originally posted by Spoof View Post
                  I just checked the API and the default, for both actor and skeletal mesh component, is TG_DuringAsyncWork.
                  Thanks for the reply. I haven't tried changing UTGameCrowdAgent.uc after seeing the log errors. The error is either caused by the bishop_crowd archetype settings ( which i use the default values of the Robot) , the Kismet or the code.

                  I even tried spawning an animal mesh [it was snake i think] with the mobile crowd system , and i got the same error.

                  UTGameCrowdAgent.uc
                  Code:
                  **
                   * Copyright 1998-2012 Epic Games, Inc. All Rights Reserved.
                   */
                  class UTGameCrowdAgent extends GameCrowdAgentSkeletal;
                  
                  /** Stop agent moving and pay death anim */
                  function PlayDeath(vector KillMomentum)
                  {
                  	if ( WorldInfo.TimeSeconds - LastRenderTime > 1 )
                  	{
                  		LifeSpan = 0.01;
                  	}
                  	else
                  	{
                  		SkeletalMeshComponent.SetHasPhysicsAssetInstance(true);
                  		// If we had stopped updating kinematic bodies on this character due to distance from camera, force an update of bones now.
                  		SkeletalMeshComponent.MinDistFactorForKinematicUpdate = 0.f;
                  		SkeletalMeshComponent.ForceSkelUpdate();
                  		SkeletalMeshComponent.UpdateRBBonesFromSpaceBases(TRUE, TRUE);
                  
                  		CollisionComponent = SkeletalMeshComponent;
                  		SetTickGroup(TG_DuringAsyncWork);
                  		SkeletalMeshComponent.SetTickGroup(TG_DuringAsyncWork);
                  		SkeletalMeshComponent.PhysicsWeight = 0.0;
                  		SetPhysics(PHYS_RigidBody);
                  		SkeletalMeshComponent.SetBlockRigidBody(true);
                  		SkeletalMeshComponent.PhysicsAssetInstance.SetAllBodiesFixed(FALSE);
                  		SkeletalMeshComponent.SetRBChannel(RBCC_Pawn);
                  		SkeletalMeshComponent.SetRBCollidesWithChannel(RBCC_Default,TRUE);
                  		SkeletalMeshComponent.SetRBCollidesWithChannel(RBCC_Pawn,TRUE);
                  		SkeletalMeshComponent.SetRBCollidesWithChannel(RBCC_Vehicle,TRUE);
                  		SkeletalMeshComponent.SetRBCollidesWithChannel(RBCC_Untitled3,FALSE);
                  		SkeletalMeshComponent.SetRBCollidesWithChannel(RBCC_BlockingVolume,TRUE);
                  		SkeletalMeshComponent.SetTraceBlocking(false,true); 
                  
                  		if( KillMomentum != vect(0,0,0) )
                  		{
                  			SkeletalMeshComponent.AddImpulse(0.5*KillMomentum, Location, '', false);
                  		}
                  		LifeSpan = DeadBodyDuration;
                  ;
                  	}
                  }
                  
                  defaultproperties
                  {
                  	Health=20
                  	bProjTarget=true
                  	
                  	Begin Object Name=SkeletalMeshComponent0
                  		SkeletalMesh=SkeletalMesh'UTExampleCrowd.Mesh.SK_Crowd_Robot'
                  		AnimTreeTemplate=AnimTree'UTExampleCrowd.AnimTree.AT_CH_Crowd'
                  		AnimSets(0)=AnimSet'CH_AnimHuman.Anims.K_AnimHuman_BaseMale'
                  		Translation=(Z=-42.0)
                  		TickGroup=TG_DuringAsyncWork
                  		PhysicsAsset=PhysicsAsset'CH_AnimCorrupt.Mesh.SK_CH_Corrupt_Male_Physics''
                  	End Object
                  	
                  	RotateToTargetSpeed=60000.0
                  	MaxWalkingSpeed=200.0
                  }
                  The Log Error:
                  Code:
                  [0049.90] Error: Can't call UpdateRBBonesFromSpaceBases() on (UTGameCrowdAgent_0)->(SkeletalMeshComponent_70) during async work!
                  [0049.90] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
                  [0049.90] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
                  [0049.90] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
                  [0049.90] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
                  [0049.90] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
                  [0049.90] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
                  [0049.90] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
                  [0049.90] Error: Can't call UpdateRBBonesFromSpaceBases() on (UTGameCrowdAgent_2)->(SkeletalMeshComponent_72) during async work!
                  [0049.90] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
                  [0049.90] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
                  [0049.90] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
                  [0049.90] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
                  [0049.90] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
                  [0049.90] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!
                  [0049.90] DevPhysics: Error (2) in file ..\..\Physics\src\NpActor.cpp, line 1223: PhysicsSDK: NpActor::moveGlobalPose: WriteLock is still acquired. Procedure call skipped to avoid a deadlock!

                  Comment

                  Working...
                  X