Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Tactical Shooter AI - Asset Store Pack

Discussion in 'Works In Progress - Archive' started by squared55, Mar 2, 2015.

  1. AngelBeatsZzz

    AngelBeatsZzz

    Joined:
    Nov 24, 2017
    Posts:
    239
    OK, thanks for reply.
     
  2. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    I expanded on the answer a bit since you posted.
     
  3. ImperativeGames

    ImperativeGames

    Joined:
    Dec 11, 2016
    Posts:
    34
    Hi, I'm trying to use some physics-procedural-ragdoll-animations stuff with TSAI agents. In particular I am interested in using PuppetMaster or Ragdoll - Hit Reaction Manager.
    But I encountered one big obstacle in both cases - unparenting of TSAI agent's ragdoll from parent GameObject with TSAI components causes problems with syncing.

    RHRM is almost working out of the box, but after forces stop affecting ragdoll, it teleports to former-parent TSAI object.
    How can I modify TSAI code to prevent unparenting?
    Ideally it should be one object instead of "Soldier_Ragdoll" and "Team 2_Sniper", for example.

    Unparenting is because somehing-something NavMeshAgent component working, if I remember correctly, but I believe RHRM turns off NavMeshAgent when turns on Ragdoll ^^
     
  4. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    The Start function of the AnimationScript is where the unparenting happens.
     
  5. AngelBeatsZzz

    AngelBeatsZzz

    Joined:
    Nov 24, 2017
    Posts:
    239
    Thank you very much!
     
  6. AngelBeatsZzz

    AngelBeatsZzz

    Joined:
    Nov 24, 2017
    Posts:
    239
    When the AI sees the enemy, if there is no Cover Node nearby, it will run to the enemy in a straight line (occasionally using the dodge action). On the big battlefield, there are usually not many cover nodes. I hope that after the AI sees the enemy, it does not always run to the enemy in a straight line, but occasionally changes direction. Is this possible?
     
    Last edited: Dec 20, 2018
  7. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    You'd need to modify the combat behavior to do so.
     
  8. radiantboy

    radiantboy

    Joined:
    Nov 21, 2012
    Posts:
    1,633
    I've always thought this AI had a lot of promise, but I have never been able to use it properly ever. I have just come back to it and realised why, for some bizarre reason sooner or later the AI just stop killing me, they look at me as I run around but they end up static and not shooting. What could cause this? Infuriating because when it works it works so well.
     
  9. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    Do you have a cover node object in your scene? Sometimes this can happen in scenes without one.

    Any additional info you have regarding your set-up would be useful. Does anything in particular seem to trigger it? Does it happen with the demo agents or scenes? Do different combat behaviors change things? How about changing the layermask variables? Changing the positioning of the target object relative to the player? Are you getting any errors in the console when this happens?
     
    radiantboy likes this.
  10. radiantboy

    radiantboy

    Joined:
    Nov 21, 2012
    Posts:
    1,633
    Thanks very much, no I dont have any covernodes, will try that and your other suggestions, thanks!
     
  11. radiantboy

    radiantboy

    Joined:
    Nov 21, 2012
    Posts:
    1,633
    Still no luck unfortunately, I am using UFPS1, I added some cover nodes, I changed the player target to some other things but it seemed to have no effect. It seems like guys further away from me are worst, they dont even attack once before they ignore me, closer guys attack for a bit, possibly until im out of range or something then never again.

    Weird thing is your demo scenes seem to work without problem, even when I remove the cube from the spawner demo and place my ufps prefab in there they constantly attack with no problem even with long distances.

    Different combat didnt seem to help, tried setting them all to different ones (btw can you do this at runtime or always need to restart game? my scene is huge so these iterative tests are very slow to load). Not quite sure what you mean about the target object relative to player, right now I have the script on my fps camera and the target is set to his head in the mixamo skeleton.

    As for layermask variables, not exactly sure what you mean, you mean the layer for cover nodes?

    Is there any part of the code I can look into or print out to see if hes crashed? there are no errors in the console that I can see. One second he is killing me just fine then next he stops still and wont shoot or move, yet he will rotate and point his gun at me as I go by.

    Would love to get this going properly. I have a very complex large scene that might be causing problems, but im not sure exactly why it would, I can make a video of whats happening if it helps.
     
  12. radiantboy

    radiantboy

    Joined:
    Nov 21, 2012
    Posts:
    1,633
    I dont know what I did but it seems to work now! I messed a lot :) Hopefully I will pin point why, I am going to try making a enemy now that is not one of the supplied prefabs. Fingers crossed :) I love it when it's working, feels very cool. Thanks again.
     
  13. radiantboy

    radiantboy

    Joined:
    Nov 21, 2012
    Posts:
    1,633
    I must say though the process of making an enemy is very very very difficult, everytime i make one it doesnt work, he just teleports across the world and stands still. Very time consuming process which is hellishly hard to get right, would be much better if you had a wizard do all this for the user.

    I cant really seem to do the mask thing with the legs, unity them complains it is missing legs etc.
    I wish there was an easy way to use your soliders and swap out the models, I must have done it right at some point because I have some clown AIs way back from the paragon days.
     
  14. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    Well, there is a wizard for both the agents and the animation controllers. I'm not sure if you're using those already, though. In case you are just dragging scripts around, though, there's details on both wizards in the manual.

    If you're using just humanoid rigs, you might be able to recycle avatars once you get one working, if the two models are similar enough.

    Also: what do you mean by "unity them complains it is missing legs etc"?
     
  15. pierre92nicot

    pierre92nicot

    Joined:
    Aug 21, 2018
    Posts:
    57
    Hi,
    There is a Cover Machine node in the TacticalAI_Control_Cover animation controller, how to use it ?
    There is no "cover" field in the animation wizard.
    Is this related to advanced cover ?
    I cant find anythings about it in the manual.
    I would like to use those animations for the cover system :
    https://assetstore.unity.com/packages/3d/animations/cover-rifle-animset-pro-23360
    (I already use animations from this creator and they all work fine)

    Did you think using a coroutine asset like this one ( https://assetstore.unity.com/packages/tools/animation/mec-threaded-85569 or https://assetstore.unity.com/packages/tools/animation/more-effective-coroutines-free-54975 )
    would increase performance in scenes with a large number of agents ?

    Thanks in advance.
     

    Attached Files:

    • tsai.png
      tsai.png
      File size:
      152.3 KB
      Views:
      779
  16. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    It is related to advanced cover, yes. If you want to use it, I would recommend just duplicating the controller and swapping out the animations. You'll also need to set your agents and cover nodes to use it.

    I cannot speak to how much performance would improve with coroutine assets as I don't own any. However, the best way to reduce performance would be to reduce the complexity of the agents, both in terms of the models but also in how often they fire.
     
    Last edited: Jan 8, 2019
  17. pierre92nicot

    pierre92nicot

    Joined:
    Aug 21, 2018
    Posts:
    57
  18. Russellinho

    Russellinho

    Joined:
    Jan 1, 2016
    Posts:
    8
    This asset looks amazing lol.. I wish I had seen this before I implemented my own FPS AI
     
  19. AngelBeatsZzz

    AngelBeatsZzz

    Joined:
    Nov 24, 2017
    Posts:
    239
    Hi, I have three questions.

    1, my "AI Control" is set to default, my AI agent is also set to the default layer, so they will not shoot each other, but just approach each other. My problem is that in the demo scene, "AI Control" and AI agent are also set to default, but why can AI agents still see each other and shoot?

    2, there are a lot of walls in my scene, I set them as the default layer, and set the "AI Control" to the default layer, so the AI agent can't see each other behind the wall. When the battle occurs, the AI agent has May run to the back of the wall and keep shooting in the direction of the enemy, the bullet will always hit the wall. I need them to stop shooting when they run behind the wall. What should I do?

    3, My AI shooting speed is very fast, the result is that when the AI rotates, it will always keep shooting, so the bullet will fly around, is there any way to stop the AI from firing when it rotates?
     
    Last edited: Jan 10, 2019
  20. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    1. Make sure you are modifying the layermask variable, not the layer. You should be able to select multiple items, and it is in a script, not at the top of the inspector next to tag. Barring that, make sure you only have one AI Controller per scene. Also, make sure you have at least one cover node in your scene.

    2. There's a setting in the GunScript which determines the maximum depth that the agents will not try to shoot through. The reason this exists is to allow the agents to put down suppressing fire when a target hides behind a thin wall.

    3. You should be able to set the maximum firing angle variable in the GunScript. This should help keep any shots fired on target.

    Also, make sure you have disabled performance mode in the AI Controller, as this will simplify the enemy's behavior and possibly cause issues if you don't need that extra bit of performance.
     
  21. AngelBeatsZzz

    AngelBeatsZzz

    Joined:
    Nov 24, 2017
    Posts:
    239
    Thank you.

    1. each AI is divided into two objects, I need to destroy it when the AI enters the house, is there a simple way to destroy the AI?

    2. Is there a way to disable and enable AI?

    3. Can AI bullets not hurt friendly forces?

    4. Is there a way to get all AI to attack each other?
     
    Last edited: Jan 14, 2019
  22. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    1. You'll have to destroy both objects. You can get a reference to the model object through several of the TSAI scripts if you need it.

    2. Enabling the agents can just be done by enabling the actual object like any other Unity object. Disabling the agents might cause problems, depending on the situation (say, if you do it mid-action), but you can improve performance by disabling the mesh renderer.

    3. You can modify the layermasks to have them pass through friendly targets, or setting the bullet prefabs friendlyTag to whatever you want them to hit.

    4. Try setting them to all be on the same team and then listing said team as an enemy team. If that doesn't work, then you can just put them all on different teams and set them as enemies.
     
  23. Cato_xyz

    Cato_xyz

    Joined:
    May 18, 2013
    Posts:
    60
    Hey squared55, first of all thank you for the amazing AI you got there! many options to play with, and so far so good on my mobile tests!

    I was just having one issue; i dont use that much of cover in my game, that makes the enemies to get nose to nose close to the player, ideally i would like the enemies to maintain a distance with the player

    I tried playing around with the gun script var "minimum dist to fire gun" but that only affects the gun, not the movement, idk if you already have a solution for that so i felt like asking.


    Thanks in advance!
     
  24. Atiaen

    Atiaen

    Joined:
    Jan 19, 2019
    Posts:
    15
    Hi great assets squared55 only ai asset I know how to use properly but I also have some questions is it possible to implement it with dialogue system and the second one is is there a way to make it feel like call of duty like ai where they are to move to a certain location but there are enemies in the way so they kill the enemies and continue to the location. Thanks for your response ​
     
  25. Atiaen

    Atiaen

    Joined:
    Jan 19, 2019
    Posts:
    15
    Also one last thing is it possible to detach the gun model from the agent when its health is zero
     
  26. hattyh

    hattyh

    Joined:
    Jul 8, 2015
    Posts:
    15
    Hi, how would i go about making the ai work in a defense mode? Talking about defending a barricade, covering behind it and firing once in awhile to keep the enemies away?
    Because at the moment i have a few problems using the Rifleman prefab included.

    -He ends up running from cover to cover stopping once in awhile to shoot, i just want him to take cover in one spot and let him shoot from there mostly.
    (^More context^: i have set up a couple of cover spots for several ai's behind the barricade, which is why he is moving a lot between them atm)

    -When the enemy is right in front of him on the other side of the barricade he gets confused and starts shooting towards their horizontal direction but shoots straight ahead not aiming down making the bullets travel above the enemies.

    -Sometimes he bends down sideways and starts shooting the ground, he is somewhat aiming at them but ends up shooting mostly the ground.

    Also tried using my own model, he moves as he should, but lays flat not playing any animations, checked the axis and what not, they seem correct. Not sure what i'm missing.

    Other than that, it's a great package which has saved me a ton of time considering i can't even program that well, so thank you! :)
     
  27. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    There is an option in the base script that is similar to minimum dist to fire gun that affects movement.

    TSAI does not cover dialogue, only combat. You can make the enemies move to a certain location by setting an object at the location to the agent's key transform. You can use the OnAIDeath() method in a custom script to un parent the gun or spawn a pick-up item.

    You can use the Key Transform to encourage the agents to defend an area. You can use MoveToPoint/Berserker as your behaviours if you want the agent to exclusively go to one specific point. For animation issues, check the masks on the avatar, and that your custom model/rig is oriented in the right direction.
     
    Mohamed-Anis, Cato_xyz and hattyh like this.
  28. AngelBeatsZzz

    AngelBeatsZzz

    Joined:
    Nov 24, 2017
    Posts:
    239
    Hi, I have a question. Grenade does not harm UCC Player, I tried modifying the "Layer Mask" of "Explosion Script.cs" but it didn't work.

    Here is the code for the grenade to damage UCC Player:

    Code (CSharp):
    1. #if FIRST_PERSON_CONTROLLER && ULTIMATE_CHARACTER_CONTROLLER_SHOOTER
    2.                      hit.GetComponent<Collider>().SendMessage("SingleHitBoxDamage", damageThisTime, SendMessageOptions.DontRequireReceiver);
    3. #endif
    I tried to replace it as:

    Code (CSharp):
    1. hit.GetComponent<Collider>().SendMessageUpwards("Damage", damageThisTime, SendMessageOptions.DontRequireReceiver);
    But got the error of NullReferenceExceptio.
     
    Last edited: Jan 28, 2019
  29. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    It's possible that the damage method takes more than one argument. In that case you would have to directly access the scripts on the struck object with get component. An alternative may be to replace the TSAI explosion prefabs with UCC ones.

    Unfortunately, I don't have UCC, so I can't really give more advice than that.
     
  30. AngelBeatsZzz

    AngelBeatsZzz

    Joined:
    Nov 24, 2017
    Posts:
    239
    Ok, thanks for reply.
     
  31. UndeadPathfinder_

    UndeadPathfinder_

    Joined:
    Mar 21, 2018
    Posts:
    1
    Hey there squared55, I'm a really big fan of your AI asset pack! I really appreciate the time you obviously put into it. I'm currently new beginner at game-designer working on a "time-travel" FPS game where depending on the time-period the player is in, they will fight different enemies. To achieve this, I'm essentially enabling/disabling the skinned mesh renderer of the AI whenever the player presses 'F' so that the AI seem to appear and disappear on command. The problem I'm running into is when the player presses F to make the AI disappear, and then subsequently reappear when pressed again, the AI does not re-engage the player and does not move. When you start the game they act normal and engage normally, but after they skinned mesh renderer is hidden/revealed is when the problem arises. They all still track the player character and are clearly aiming at me so they know my location, but they don't do anything beyond that.

    Apologies if this is an issue I'm looking, like I said I'm just getting the hang of things and was wondering if you'd be able to point me in the right direction. Thanks so much again!
     
  32. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    Well, there are two objects for each agent, so make sure you are enabling/disabling both. Another option would be to only enable/disable specific components, rather than the entire object. This would help isolate the specific one causing the issue, which would help in debugging.
     
  33. Paul-Swanson

    Paul-Swanson

    Joined:
    Jan 22, 2014
    Posts:
    317
    Heya @squared55
    I have good news :) this works with Easy FPS as well:
    https://assetstore.unity.com/packages/3d/characters/humanoids/easy-fps-73776

    I noticed I could use your RFPS methods to get it to work fine. I'll provide steps, so you can ship and update with those too. :) since RFPS has been deprecated you can just add a note or something to it. Gotta take care of my daughter 's night routine then I'll attach my health manager stuff, and tell you how easy it was to integrate with the very minor edits needed.

    **Edit**

    Step 1 uncomment the RFPS section in BulletScript.cs replace the script name with my HealthManager [script is below] script like so:

    Code (CSharp):
    1.               if (hit.collider.gameObject.GetComponent<HealthManager>())
    2.                 {
    3.                 hit.collider.gameObject.GetComponent<HealthManager>().ApplyDamage(damage);
    4.                 }
    Step 2 Open the BulletScript.cs for Easy FPS, and add this in update before the decal spawn:
    Code (CSharp):
    1.         if (Physics.Raycast(transform.position, transform.forward, out hit, maxDistance, ~ignoreLayer, QueryTriggerInteraction.Ignore))
    2.         {
    3.                 //Apply Damage to AI
    4.                 hit.collider.gameObject.SendMessage("Damage", bulletDamage, SendMessageOptions.DontRequireReceiver);
    5.         }
    6.  
    Also add this at the top:
    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using TacticalAI;
    4. public class BulletScript : MonoBehaviour {
    5.  
    6.     [Tooltip("Damage Bullet will do")]
    7.     public float bulletDamage;
    Step 3:
    This is a health manager I wrote for Easy FPS [since it didn't come with one]
    Basically it sets MAX HP and Armor to 200, and for every second that the HP is over 100 [half of 200] it ticks it down 1 point every 1 seconds. Also if you have armor it absorbs 30% of the bullet damage until you have no armor, then its full damage. You put this on the player:
    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4.  
    5.  
    6. public class HealthManager : MonoBehaviour {
    7.     [SerializeField] private int MaxHealthValue = 200;
    8.     [SerializeField] private int MaxArmorValue = 200;
    9.  
    10.     [SerializeField] private float currentHealthValue;
    11.     [SerializeField] private float currentArmorValue;
    12.  
    13.     [Tooltip("armorDisplay to display bullet count on screen. Will be find under name 'armorDisplay' in scene.")]
    14.     public TextMesh armorDisplay;
    15.  
    16.     [Tooltip("healthDisplay to display bullet count on screen. Will be find under name 'healthDisplay' in scene.")]
    17.     public TextMesh healthDisplay;
    18.  
    19.     [HideInInspector]
    20.     public MouseLookScript mls;
    21.     private Transform player;
    22.     [HideInInspector]
    23.     public Transform mainCamera;
    24.  
    25.     public float healthTickDownRate = 1.0f;
    26.     private float healthTimer = 0.0f;
    27.  
    28.     void Awake()
    29.     {
    30.         mls = GameObject.FindGameObjectWithTag("Player").GetComponent<MouseLookScript>();
    31.         player = mls.transform;
    32.         mainCamera = mls.myCamera;
    33.  
    34.         currentHealthValue = MaxHealthValue /2;
    35.         currentArmorValue = MaxArmorValue /2;
    36.     }
    37.  
    38.     void OnGUI()
    39.     {
    40.         if (!healthDisplay)
    41.         {
    42.             try
    43.             {
    44.                 healthDisplay = GameObject.Find("healthDisplay").GetComponent<TextMesh>();
    45.             }
    46.             catch (System.Exception ex)
    47.             {
    48.                 print("Couldnt find the healthDisplay ->" + ex.StackTrace.ToString());
    49.             }
    50.         }
    51.         if (mls && healthDisplay)
    52.             healthDisplay.text = "Health: " + currentHealthValue.ToString();
    53.  
    54.         if (!armorDisplay)
    55.         {
    56.             try
    57.             {
    58.                 armorDisplay = GameObject.Find("armorDisplay").GetComponent<TextMesh>();
    59.             }
    60.             catch (System.Exception ex)
    61.             {
    62.                 print("Couldnt find the armorDisplay ->" + ex.StackTrace.ToString());
    63.             }
    64.         }
    65.         if (mls && armorDisplay)
    66.             armorDisplay.text = "Armor: " + currentArmorValue.ToString();
    67.     }
    68.  
    69.     // Update is called once per frame
    70.     void Update ()
    71.     {
    72.     if (currentHealthValue <= 0)
    73.         {
    74.             Debug.Log("Your dead Son");
    75.             Debug.Log("Dun Dun Dun");
    76.         }
    77.  
    78.         if (currentHealthValue >= 101)
    79.         {
    80.             ReduceHealth();
    81.         }
    82.  
    83.         currentArmorValue = Mathf.RoundToInt(currentArmorValue);
    84.         currentHealthValue = Mathf.RoundToInt(currentHealthValue);
    85.     }
    86.  
    87.     private void ReduceHealth()
    88.     {
    89.         if (currentHealthValue >= 101)
    90.         {
    91.             healthTimer += Time.deltaTime;
    92.             if (healthTimer >= healthTickDownRate)
    93.             {
    94.                 Debug.Log("Do stuff to populate level!");
    95.                 currentHealthValue = currentHealthValue - 1;
    96.                 healthTimer = 0.0f;
    97.             }
    98.         }
    99.         return;
    100.     }
    101.  
    102.     public void ApplyDamage(float damage)
    103.     {
    104.         if (currentArmorValue <= 0)
    105.         {
    106.             currentHealthValue = currentHealthValue - damage;
    107.         }
    108.         else if (currentArmorValue >= 1)
    109.         {
    110.             currentHealthValue = currentHealthValue - (damage * .3f);
    111.             currentArmorValue = currentArmorValue - (damage * .7f);
    112.         }
    113.     }
    114.  
    115.  
    116. }
    117.  
    The GUI element is TextMesh, so alter or change it, as you wish. Now the best part and

    Optional step: for each weapon the player has just duplicate the bullet prefab they gave you and make a new one with a different damage value. and Apply those to each gun.

    Bam, now they are both intergrated with each other, they can damage you, you can damage them, and you bullets can have a variable level of damage.


    Now that's out of the way.
    Does each Hitbox HAVE to be on the hitbox layer? I was planing on having my Decals get set via the layer manager...but if they MUST be set as hitbox layer, either I need to rethink my idea...or use multitag...
     
    Last edited: Feb 17, 2019
  34. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    The hitboxes only need to be on the physics layer that the bullets can hit, as specified in their bullet script. At least for TSAI, I can't comment on other packages.
     
  35. Paul-Swanson

    Paul-Swanson

    Joined:
    Jan 22, 2014
    Posts:
    317
    Does anyone have issues with AI not Dying like they are supposed to? SOmetimes when they die, they remain and scripts don;t get disabled so they just remain there in the scene jerk thier upper torso randomly. I can definitely continue to do damage as when i check the HP was -1000 but they didn't die. I also got several errors in my console so I know it definitely attempted to do something...
    NullReferenceException: Object reference not set to an instance of an object
    TacticalAI.HealthScript.KillAI () (at Assets/Tactical Shooter AI/Tactical AI/Csharp/AI Behaviour Scripts/HealthScript.cs:192)


    nvm, During a edit i removed the colliders from my weapons, I'm guessing whats happened is if it dies and it comes across the empty space it breaks the flow. So just fix the array content, APPEARS to fix the breakage...



    Also reload animations don't play even those they are set up correctly...I duplicated the control animator you attached, and just swapped out for my animations...the sound works...just no animation
     
    Last edited: Feb 24, 2019
  36. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    Yes, having an empty space in either array will cause problems.

    Have you made sure that the reload animation can play at all on your model? The import settings for the could be causing an issue. Another potential culprit could be the masking. Any more information you can give me? Do the demo agents/animations/animation controllers work? If so, what's different between the working things and the broken ones?

    EDIT: Also, make sure the references to the animation script from the gun script are intact.
     
    Last edited: Feb 25, 2019
  37. cubrman

    cubrman

    Joined:
    Jun 18, 2016
    Posts:
    409
    Played STALKER Lost Alpha yesterday, which features quite an improved and fixed in many areas AI from the original STALKER SOC. In my first major encounter my ally got shot, limped with his gun after the engajement for a few seconds, fell down and started dying while crying for help. I gave him a medkit and he got up.

    In my second major encounter, I hit a bandit badly, he ran away limping, then I heard him crying for help (I could not finish him as there was another one around, pinning me). As I finished the last banding, I realized that the limping bandit is no longer crying for help - he was dead due to blood loss.

    Any plans on implementing something like this?
     
  38. Paul-Swanson

    Paul-Swanson

    Joined:
    Jan 22, 2014
    Posts:
    317
    Sorry I meant to reply earlier, Yeah it was the masking, I assumed I could use your included mask on mine. I was wrong.
     
  39. ncho

    ncho

    Joined:
    Feb 1, 2014
    Posts:
    99
    Does the UFPS integration mentioned on the store page refer to UFPS1 or also to 2/the other rewritten Opsive controllers?

    Edit: Actually I just realized it works out of the box. However I want to make sure that all the weapon, shooting and bullet mechanics between the player, using the Opsive First Person Controller, and NPCs, are identical especially since the Opsive controller also controls weapon properties like muzzle flash and so on. Any pointers would be much appreciated
     
    Last edited: Mar 9, 2019
  40. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    There are UFPS1 integration instructions, and UFPS2 doesn't have any special set-up due to how the damage processing is done in that package. I don't officially support any other Opsive controller though, but people have gotten them working together in the past.

    However, while the two packages are compatible (ie: they can damage each other), they are separate, meaning that TSAI weapons will not behave the same way as UFPS ones.
     
  41. mukesh

    mukesh

    Joined:
    Dec 19, 2013
    Posts:
    2
    Hi I am Using your Paid Tactical Shooter AI in my Project, Can you Please resolve the following issues
    • Before combat starts, how can i make the AI agent move on my defined waypoint
    • As soon as the combat start, How can I control the AI agent team so that they find the nearest cover instead of moving towards each other
     
  42. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    To have the agent follow a path when idle, select the Patrol idle behavior and then place your waypoint game objects in the appropriate array in the BaseScript.

    To make the agents use cover, select the Tactical combat behavior and ensure that the layermask variables on the AI Controller and Cover Node scripts includes the physics layers of the objects you want the agents to take cover behind. You may also want to enable dynamic cover using the raycast search method on the agent's cover finder script.
     
    Last edited: May 3, 2019
  43. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    AN ANNOUNCEMENT
    Hi everyone. As you may have guessed from the general lack of updates recently, my life has become increasingly busy to the point where I am no longer able to continue maintaining the package. I've pushed it longer than I probably should have, but now I have made the final decision to deprecate Tactical AI from the asset store.

    WHAT DOES THIS MEAN?
    Tactical AI will no longer be available for new customers to purchase. Unity should still allow existing users to download the package.

    WILL THERE BE CONTINUED SUPPORT?
    I am currently still supporting the package at the time of writing, but I don't know for sure how much longer I will remain able to do so. If you have a question, it's best to ask it sooner rather than later.

    CAN I GET A REFUND?
    If this news means you would no longer like to use Tactical AI, you may contact me for a refund. Please include your invoice number in your message. Refunds will be given on a first-come-first-serve basis and I cannot guarantee their availability. At the moment, I am not putting any hard limits on refund duration, but just as with support, if you want one, sooner is better than later. Additionally, if you purchased the asset on or after April 19, 2019, you may contact Unity directly for a refund.


    Finally, I'd like to thank everyone who's supported the package over the years. It's been really awesome seeing all the cool things you guys have been making with it. Good luck with whatever projects you create next!
     
    Last edited: May 31, 2019
    JamesArndt likes this.
  44. Paul-Swanson

    Paul-Swanson

    Joined:
    Jan 22, 2014
    Posts:
    317
    That's unfortunate. Your AI package was one of the few I actually enjoyed using. At least we're not being left hanging. So that's appreciated. Thanks for letting us know.
     
  45. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,676
    Please consider open sourcing it on Github. That way those customers who are using it can contribute to keep it updated along with Unity updates.
     
  46. f1chris

    f1chris

    Joined:
    Sep 21, 2013
    Posts:
    335
    It something that should be mandatory. He’s just another one of so many dropping it because the sales figures are not on par with expectations. Fly by night developers is the a major problem in the asset store !!!
     
  47. squared55

    squared55

    Joined:
    Aug 28, 2012
    Posts:
    1,818
    This decision has been a long time coming.

    All things considered, I've actually been maintaining TSAI at a loss for the past 5 months. Eventually, it becomes unsustainable.
     
    Last edited: May 17, 2019
    JamesArndt likes this.
  48. RoyalAllen

    RoyalAllen

    Joined:
    Oct 17, 2012
    Posts:
    205
    Best of luck man! Very understandable. I still love the asset. In agreement its one of the best ones!
     
    hopeful likes this.
  49. ParadoxSolutions

    ParadoxSolutions

    Joined:
    Jul 27, 2015
    Posts:
    325
    @squared55 I've used this asset since before the rename, a year ago when I was selling in the AI category I defiantly would have picked it up from you if you are looking for someone else to maintain it. Since the asset store changes and AI being one of the less profitable categories I'm not sure if that is viable thing to do. I am looking for work though and it is my specialty, like many assets only so many people can buy them so 2.0 overhauls at a paid upgrade are necessary or it is unsustainable in the long term; lots of assets either putting up paid upgrades or deprecating lately. I'll probably just end up making custom solutions in the future if it is left as freeware, but I sure could improve it if I had it in a commercial capacity. If you want to pass the torch to a pro who knows your system I suppose I'm open to it.
     
    JamesArndt and RoyalAllen like this.
  50. twangydave

    twangydave

    Joined:
    Mar 30, 2017
    Posts:
    41
    Best of luck Squared - thanks for answering all the questions over the past couple of years. You can always pop it back on the store in a few years time when you are less busy. A great package and great support so many thanks for that and all the best for the future!
     
    RoyalAllen likes this.