Announcement

Collapse
No announcement yet.

Adventure Kit

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

    #61
    I'm enjoying using your adventure kit. I have plans for it but I have a question.

    I have a character model ready to be rigged, but I am clueless on how to go about this. How would I rig it?

    Comment


      #62
      Hi, first off Free Time Coder if your reading this You are a rockstar !! This is effing great thank you.

      now
      I added a few simple things to it I suspect most people may like, and thought I would post up a couple of the changes here for the sake of coolness and in hopes of a second opinion and or maybe to find help with future changes, or one of you have done the same thing maybe more efficiently. Lets get this sweet kit bigger and better eh.

      1; footstep sounds. Adding this snippit of code to the pawn will enable that.
      Code:
      simulated event PlayFootStepSound(int FootDown)
      {
      	local SoundCue FootSound;
      
      	FootSound = SoundCue'A_Character_Footsteps.FootSteps.A_Character_Footstep_DirtCue';
      	PlaySound(FootSound, false, true,,, true);
      }
      Noobs keep in mind you will also have to set up notifies in the animset, don't be scared it only takes a minute
      I plan to upgrade this later to add various sounds for various areas, shallow water wood bridges metal ect ect.


      2; Ragdoll and sound upon death. add this to pawn
      Code:
      /////////////  Ragdoll
      event TakeDamage (int Damage, Controller InstigatedBy, Object.Vector HitLocation, Object.Vector Momentum, class<DamageType> DamageType, optional Actor.TraceHitInfo HitInfo, optional Actor DamageCauser)
      {
          super.TakeDamage(Damage,InstigatedBy,HitLocation,Momentum,DamageType,HitInfo,DamageCauser);
          PlaySound(SoundCue'A_Character_CorruptEnigma_Cue.Mean_Efforts.A_Effort_EnigmaMean_PainMedium_Cue',true,,, HitLocation);
      
      }
      
      //For when the player dies
      function bool Died(Controller Killer, class<DamageType> damageType, vector HitLocation)
      {
      	if(Super.Died(Killer, DamageType, HitLocation))
      	{
      		Super.PlayDying(damageType, HitLocation);
      		LifeSpan=0;
      		// Ensure we are always updating kinematic so that it won't go through the ground
      		Mesh.MinDistFactorForKinematicUpdate = 0.0;
      
      		Mesh.SetRBCollidesWithChannel(RBCC_Default,TRUE);
      		Mesh.ForceSkelUpdate();
      		Mesh.SetTickGroup(TG_PostAsyncWork);
      		CollisionComponent = Mesh;
      
      		// Turn collision on for skelmeshcomp and off for cylinder
      		CylinderComponent.SetActorCollision(false, false);
      		Mesh.SetActorCollision(true, true);
      		Mesh.SetTraceBlocking(true, true);
      		SetPhysics(PHYS_RigidBody);
      		Mesh.PhysicsWeight = 1.0;
      
      		// If we had stopped updating kinematic bodies on this character due to distance from camera, force an update of bones now.
      		if( Mesh.bNotUpdatingKinematicDueToDistance )
      		{
      			Mesh.UpdateRBBonesFromSpaceBases(TRUE, TRUE);
      		}
      
      		Mesh.PhysicsAssetInstance.SetAllBodiesFixed(FALSE);
      		Mesh.bUpdateKinematicBonesFromAnimation=FALSE;
      		Mesh.SetRBLinearVelocity(Velocity, false);
      		Mesh.SetTranslation(vect(0,0,1) * BaseTranslationOffset);
      		Mesh.WakeRigidBody();
      		return true;
      	}
      	return false;	
      }
      
      //////   for  skeletal mesh component down in the default properties
      
      	Begin Object Class=SkeletalMeshComponent Name=InitialSkeletalMesh
      		CastShadow=true
      		bCastDynamicShadow=true
      		bOwnerNoSee=false
      		LightEnvironment=MyLightEnvironment;
      
      		BlockRigidBody=true;                     ///////  i changed this from false  to true   for ragdoll
      		bHasPhysicsAssetInstance=true;     ////////  added this for ragdoll
      
      		CollideActors=false;
      		BlockZeroExtent=false;
      
      		AnimSets(0)=AnimSet'AdvKit_Pawn.AS_AdvKit_Pawn'
      		AnimTreeTemplate=AnimTree'AdvKit_Pawn.AT_AdvKit_Pawn'
      		SkeletalMesh=SkeletalMesh'AdvKit_Pawn.SK_AdvKit_Pawn'
      		PhysicsAsset=PhysicsAsset'AdvKit_Pawn.PA_AdvKit_Pawn'
      
      		Scale = 13
      	End Object
      In regards to this Ragdoll bit here having changed the BlockRigidBody to true I found that the only diff is now if the player (boxman) dies on a slide material area boxman falls through it. If I don't change it to true then boxman just falls through the all floors upon death.

      3; I wanted to adjusted the height at which boxman dies from a fall so adding this to pawn

      Code:
      function TakeFallingDamage()
      {
      	local float EffectiveSpeed;
      
      	if (Velocity.Z < -0.5 * MaxFallSpeed)
      	{
      		if ( Role == ROLE_Authority )
      		{
      			MakeNoise(1.0);
      			if (Velocity.Z < -1 * MaxFallSpeed)
      			{
      				EffectiveSpeed = Velocity.Z;
      				if (TouchingWaterVolume())
      				{
      					EffectiveSpeed += 100;
      				}
      				if (EffectiveSpeed < -1 * MaxFallSpeed)
      				{
      					TakeDamage(-2000 * (EffectiveSpeed + MaxFallSpeed)/MaxFallSpeed, None, Location, vect(0,0,0), class'DmgType_Fell');  
      //////////   changing the -2000  there just after Take Damage will also have a effect
      				}
      				}
      		}
      	}
      	else if (Velocity.Z < -1.4 * JumpZ)
      		MakeNoise(0.5);
      	else if ( Velocity.Z < -0.8 * JumpZ )
      		MakeNoise(0.2);
      }
      
      ////////  In default properties
      	MaxFallSpeed=+1000.0  /// lowering raising this number will effect the death from fall height

      4; Next I noticed (at least on my end) that the water doesn't do sounds or particle effect when jumping in. So I butchered the U****erVolume and got this. an upgraded water volume

      Code:
      /**
       * Works like a normal Water Volume, but has an extra variable to
       * configure water surface Z for the swimming state of the 
       * AdvKitPlayerController and Camera
       * 
       * 2013 by FreetimeCoder
       * www.freetimestudio.net
       */
      Class AdvKi****erVolume extends WaterVolume
      	placeable;
      
      /**the Z value of the water surface location*/
      var() float fSurfaceHeight;
      
      /** effects to play based on what type of Actor you are **/
      var ParticleSystem PS_EnterWaterEffect_Pawn;
      
      var ParticleSystem ProjectileEntryEffect;
      
      
      simulated event Touch( Actor Other, PrimitiveComponent OtherComp, vector HitLocation, vector HitNormal )
      {
      	local ParticleSystem PS_WaterEffect;
      	local ParticleSystemComponent PSC_WaterEffect;
      	local float MaxSpeed;
      	local float Vel;
      	local float ParamValue;
      	local EMoveDir MoveDir;
      	local vector ParticleVect;
      	local AdvKitPawn AKP;
      
      	Super.Touch( Other, OtherComp, HitLocation, HitNormal );
      
      	if (WorldInfo.NetMode != NM_DedicatedServer && (WorldInfo.TimeSeconds - Other.LastRenderTime < 0.2) && Pawn(Other) != None)
      	{
      		//DrawDebugCoordinateSystem( HitLocation, Rotator(HitNormal), 64.f );
      
      		AKP = AdvKitPawn(Other);
      
      		if( AKP != none )
      		{
      			if ( (AKP.Physics == PHYS_Walking) || (AKP.Physics == PHYS_Swimming) )
      			{
      				// no splash when walking or swimming
      				return;
      			}
      			PS_WaterEffect = PS_EnterWaterEffect_Pawn;
      			ParamValue = 1.0;
      			MaxSpeed = AKP.GroundSpeed;
      		}
      
      		PSC_WaterEffect = WorldInfo.MyEmitterPool.SpawnEmitter( PS_WaterEffect, HitLocation, Rotator(HitNormal), self );
      
      		if( PSC_WaterEffect != none )
      		{
      			MoveDir = Other.MovingWhichWay( Vel );
      			if ( ParamValue == 0.0 )
      			{
      				ParamValue = 5.0 * Vel/MaxSpeed;
      			}
      
      			// this is the value between 0 and 5 which the PS desires
      			//`log( "MoveDir: " $ MoveDir $ " Vel: " $ Vel $ " ParamValue: " $ ParamValue );
      			switch( MoveDir )
      			{
      			case MD_Forward: ParticleVect = vect(1,0,0) * ParamValue; break;
      			case MD_Backward: ParticleVect = vect(-1,0,0) * ParamValue; break;
      			case MD_Left: ParticleVect = vect(0,-1,0) * ParamValue; break;
      			case MD_Right: ParticleVect = vect(0,1,0) * ParamValue; break;
      			case MD_Down: ParticleVect = vect(1,0,0) * ParamValue; break;
      			case MD_Up: ParticleVect = vect(1,0,0) * ParamValue; break;
      			default:  break;
      			}
      
      			PSC_WaterEffect.SetVectorParameter( 'Direction', ParticleVect );
      		}
      	}
      }
      
      simulated function PlayEntrySplash(Actor Other)
      {
      	if( EntrySound != None )
      	{
      		Other.PlaySound(EntrySound);
      		if ( Other.Instigator != None )
      			Other.MakeNoise(1.0);
      	}
      	if ( !WorldInfo.bDropDetail && WorldInfo.NetMode != NM_DedicatedServer && Other.IsA('Projectile')
      		&& (Other.Instigator != None) && Other.Instigator.IsPlayerPawn() && Other.Instigator.IsLocallyControlled() )
      	{
      		WorldInfo.MyEmitterPool.SpawnEmitter(ProjectileEntryEffect, Other.Location, rotator(vect(0,0,1)));
      	}
      }
      
      defaultproperties
      {
      	TerminalVelocity=+01500.000000
      	EntrySound=SoundCue'A_Character_Footsteps.FootSteps.A_Character_Footstep_WaterDeepLandCue'
      	ExitSound=SoundCue'A_Character_Footsteps.FootSteps.A_Character_Footstep_WaterDeepCue'
      
      	ProjectileEntryEffect=ParticleSystem'Envy_Effects.Particles.P_WP_Water_Splash_Small'
      
      	PS_EnterWaterEffect_Pawn=ParticleSystem'Envy_Level_Effects_2.Vehicle_Water_Effects.P_Player_Water_Impact'
      }
      I now need to ask a question please. I have added what I assume will enable a crouch function for this and added the nodes in the animtree, but I am having trouble getting the crouch animations added to the animset. obviously I don't have the original skeleton. but that prob no biggie I plan to create my own character and animations from scratch anyway.

      Finally my last point is a goal for the future, a weapon system!! Anyone else working on getting weapons I hopeing to get a sword in here.
      Maybe we can compare notes or something....
      also has anyone else noticed that the vaulting height is lower than the jump height its driving me nuts as its faster to just jump up there than to walk up and auto vault up.
      anyway right on.

      Comment


        #63
        Thank you so much for this Kit.
        Its really awesome!



        edit:

        I just installed UDK 2014-02, my previous version was 2013-02

        in 2014-02 the third person camera doesn`t seem to work.
        does anyone else have that problem too ?

        Comment


          #64
          This is so awesome.. love it.. well done and many thanks for sharing.
          I have one problem now. I can't find a way to get this into UE4 (I'm not a programmer). I was able to use it in UDK and everything went great. Any plans to make a UE4 version of this?

          Best wishes

          Comment


            #65
            Originally posted by DjWilly View Post
            This is so awesome.. love it.. well done and many thanks for sharing.
            I have one problem now. I can't find a way to get this into UE4 (I'm not a programmer). I was able to use it in UDK and everything went great. Any plans to make a UE4 version of this?

            Best wishes
            Problem is you cannot just put it into UE4. This is UnrealScript. And UE4 doesn't include UnrealScript anymore.
            For the game I'm working on I'll need alot of the features of FTC's Adventure Kit.
            If he doesn't plan to port it to UE4, I might do that...

            Comment


              #66
              Hi,

              sorry for my long abscence, but I had a lot of stuff to do an no time for much else.

              @clayblaze
              Have you set the Root Bone Options in your Animation Sequence in the AnimTree?
              They need to be RBA_Translate and RRO_Extract.

              @led2012
              Replacing lines 111 and 112 of the AdvKitCamera, however you need to use vNewLocation instead of Pos and rNewRotation instead of Rot.

              @Chip98
              This is a really general question, basically every rig can work, but I have recorded a Quicktip for a potential pitfall:
              http://www.youtube.com/watch?v=CicRlfE0IDs

              @McTune
              Nice Additions. And, by popular demand, I have uploaded the original rig:
              http://www.freetimestudio.net/Downloads/AdvKitRig.zip
              Also I did not think about the vaulting height being lower than the jump height, sorry

              @Gaara
              Sorry can't test it right now, but I don't think the api changed this much so it should still work. Can you describe what's wrong in more detail?

              @DjWilly
              As JBJHJM said, the code is not portable like that. I don't have any plans (nor time) to port the Kit to UE4 at this moment, sorry.

              @JBJHJM
              Go for it

              greetings
              FTC

              Comment


                #67
                Originally posted by FTC View Post
                Hi,
                @clayblaze
                Have you set the Root Bone Options in your Animation Sequence in the AnimTree?
                They need to be RBA_Translate and RRO_Extract.

                Yes.

                I have the anim sequence plugged into "Jump Down" input of both "Wall" and "No Wall" sections of "bLedgeClimbOnWall" node.
                And it works in "No Wall" conditions (root animation drives the pawn and then it turns to walking state), but under "Wall" condition it bugs out.
                I still don't have all of the other animations for climbing states, is the "Wall>Jump Down" dependant on other sequences somehow maybe?

                Comment


                  #68
                  O_O

                  Woah.

                  Comment


                    #69
                    Originally posted by clayblaze View Post
                    Yes.

                    I have the anim sequence plugged into "Jump Down" input of both "Wall" and "No Wall" sections of "bLedgeClimbOnWall" node.
                    And it works in "No Wall" conditions (root animation drives the pawn and then it turns to walking state), but under "Wall" condition it bugs out.
                    I still don't have all of the other animations for climbing states, is the "Wall>Jump Down" dependant on other sequences somehow maybe?
                    Very strange, codewise it should do exactly the same. The OnWall flag is mainly only for the AnimTree when it comes to jumping down. Have both ledgeClimbState Blend Nodes in the AnimTree "Play Active Child" set to true? Maybe that's it.


                    Oh and:
                    Originally posted by FTC View Post
                    @DjWilly
                    As JBJHJM said, the code is not portable like that. I don't have any plans (nor time) to port the Kit to UE4 at this moment, sorry.

                    @JBJHJM
                    Go for it
                    This may have changed


                    greetings
                    FTC

                    Comment


                      #70
                      I'm stumped trying to substitute the default pawn with my own custom one. My pawn is just frozen in place when the level starts.

                      In AdvKitPawn I've replaced this part:
                      Code:
                      AnimSets(0)=AnimSet'AdvKit_Pawn.AS_AdvKit_Pawn'
                      		AnimTreeTemplate=AnimTree'AdvKit_Pawn.AT_AdvKit_Pawn'
                      		SkeletalMesh=SkeletalMesh'AdvKit_Pawn.SK_AdvKit_Pawn'
                      		PhysicsAsset=PhysicsAsset'AdvKit_Pawn.PA_AdvKit_Pawn'
                      With my own references. Is there something more I need to do? I guess the pawn is not getting possessed in the controller script, but I cannot work out where to make the substitutions.

                      Comment


                        #71
                        If you replace your pawn it will either
                        a) spawn very small
                        - or b)
                        spawn really big
                        - its hilarious i did it teh other day

                        - And i got the Adventure to shoot aswel [but i dont code so its rubbish]

                        Comment


                          #72
                          Argh, I am so confused. :/

                          Okay, I've got my new player model in 3DS Max. I've rigged it so it can be animated using a biped. I don't know where to go from there. I can't find any tutorials that explain what I'm looking to do.

                          Do I need to recreate my own animations or is there a away I can use the ones from the Adventure Kit?

                          Basically, I just need someone to tell me where I go after I've got my character made and rigged. Thanks.

                          Comment


                            #73
                            Well if you wish to use the advKit animation then you need to rig your model with the kits rig. If you want to create your own animations then create your own animations. Use the same naming as in the kit's anim templates and animtree. Be sure to take a good look into the Adventure kits Animtree, get a good idea how it is set up, and what all animations you will need to create.

                            Here is a great set of tutorials to help you out what to do inside UDK once you get your animations done.
                            https://forums.epicgames.com/threads...torial-9-added!

                            Comment


                              #74
                              Thank you so much! Wasn't expecting a reply today.

                              Also, how do I get a hold on of the AdvKit rig? I can't find it. Sorry for being an annoying n00b.

                              Comment


                                #75
                                McTune is implying that you should open the "xxx.upk" select the skeletal mesh and check "show bones", as well as viewing the animsets/ & anim tress in those upk's
                                ^ then recreate these ^
                                - if you create your own animations using your new Key Frames - you just need to name these the same way as ADVKit OR rename the ADVkit anims to suit your own work.


                                - make notes as you work, post these as mini tutorials for others,

                                Comment

                                Working...
                                X