Search Unity

Shooter AI – The Ultimate Artificial Intelligence Solution

Discussion in 'Assets and Asset Store' started by nikita68, Oct 8, 2013.

  1. PvTGreg

    PvTGreg

    Joined:
    Jan 29, 2014
    Posts:
    365
  2. OnePxl

    OnePxl

    Joined:
    Aug 6, 2012
    Posts:
    307
    This might be a bit silly, but until your announcement just now I did not even know there was a multiplayer version of Shooter AI. I bought the normal Shooter AI for integration in a multiplayer game, is that particularly hard to do, or do I really need the multiplayer version?
     
  3. RyanEarpGW

    RyanEarpGW

    Joined:
    Jun 12, 2014
    Posts:
    65
    @Pulov -
    Sounds like a great idea!

    @PvTGreg -
    For your game Shooter AI would work, but as it is optimized for first-person shooters it might not be the best for your type of game.

    @OnePxl -
    Shooter AI Multiplayer is better optimized for multiplayer use. This is our overview video for it:


    Thanks!
    Ryan
     
  4. nikita68

    nikita68

    Joined:
    Feb 8, 2013
    Posts:
    289
    @Pulov - Anybody that has purchased 1.x can see for themselves, right now! :)

    @OnePxl - As Ryan said, the Multiplayer version is highly geared towards multiplayer. You could do the multiplayer yourself, though it might take some time to get into SAI.
     
  5. OnePxl

    OnePxl

    Joined:
    Aug 6, 2012
    Posts:
    307
    I watched the overview video, but that mentioned it was a single script (add-on) with a network view to sync up Shooter AI over the network. I guess that has changed? Or is the idea still fundamentally the same?
     
  6. emmcd3

    emmcd3

    Joined:
    Dec 16, 2012
    Posts:
    26
    and where might that be, nikita. i just purchased ac ouple of days ago the asset @ the store.

    thanks
     
  7. CreatureSurvive

    CreatureSurvive

    Joined:
    May 3, 2014
    Posts:
    17
    After updating to UFPS 4.8 I'm no longer able to apply damage to the AI
    This is the error message I keep getting

    Code (CSharp):
    1. MissingMethodException: The best match for method Damage has some invalid parameter.
    2. System.MonoType.InvokeMember (System.String name, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object target, System.Object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, System.String[] namedParameters) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System/MonoType.cs:520)
    3. UnityEngine.SetupCoroutine.InvokeMember (System.Object behaviour, System.String name, System.Object variable)
    4. UnityEngine.Component:SendMessageUpwards(String, Object, SendMessageOptions)
    5. vp_HitscanBullet:DoHit() (at Assets/UFPS/Base/Scripts/Gameplay/Combat/vp_HitscanBullet.cs:163)
    6. vp_HitscanBullet:Start() (at Assets/UFPS/Base/Scripts/Gameplay/Combat/vp_HitscanBullet.cs:68)
    Any help would be appreciated thanks.
     
    Last edited: Oct 7, 2014
  8. RyanEarpGW

    RyanEarpGW

    Joined:
    Jun 12, 2014
    Posts:
    65
    @OnePxl -
    Idea is still fundamentally the same.

    @emmcd3 -
    If you're talking about the download link for the beta just send me your order confirmation and i'll send you the link.

    @CreatureSurviive -
    We'll look into it and hopefully get back to you asap with a solution.

    Thanks!!
    Ryan
     
  9. emmcd3

    emmcd3

    Joined:
    Dec 16, 2012
    Posts:
    26
    @RyanEarpGW
    Hi ,

    See below order info. Thanks

    @emmcd3 -
    If you're talking about the download link for the beta just send me your order confirmation and i'll send you the link.



    Thanks!!
    Ryan[/QUOTE]
     

    Attached Files:

  10. red2blue

    red2blue

    Joined:
    Feb 26, 2013
    Posts:
    200
    I wouldn't publish my invoices here in a public forum due to your private data...
     
    RyanEarpGW and Mayureshete like this.
  11. Mayureshete

    Mayureshete

    Joined:
    Jan 18, 2014
    Posts:
    198
    ty corrected it...

    sent Ryan a pm...
     
    Last edited: Oct 10, 2014
    emmcd3, RyanEarpGW and red2blue like this.
  12. emmcd3

    emmcd3

    Joined:
    Dec 16, 2012
    Posts:
    26
    Much appreciated. Its' a secondary account not linked to anything of substance. But, thanks for the action. I guess I was a bit impatient.
     
  13. Ultimar235

    Ultimar235

    Joined:
    Oct 9, 2014
    Posts:
    3
    I have the same issue as CreatureSurviive regarding UFPS 1.4.8.

    I purchased it during the sale then I saw that AI shooter supposedly works straight out of the box with UFPS.

    So I also bought AI Shooter but it does not work as seamlessly as you suggest. I know its a new update and it's bound to have broken things but to advertise that it works as it does on your YouTube tutorial video is kinda misleading..

    Well anyway following the YouTube tutorial there are 2 issues:
    - Can't do damage to enemies.
    - Can't reduce enemy damage to player.
     
  14. Jarretxx

    Jarretxx

    Joined:
    Jul 27, 2013
    Posts:
    9
    Found out how to get the latest UFPS Working with Unity 3d,
    Took me a while but,
    In the VP_hitscan script,
    From this

    // do damage on the target
    if(m_Sender != null)
    hit.collider.SendMessageUpwards(DamageMethodName, new vp_DamageInfo(Damage, m_Sender), SendMessageOptions.DontRequireReceiver);
    else
    hit.collider.gameObject.SendMessageUpwards(DamageMethodName, Damage, SendMessageOptions.DontRequireReceiver);

    Change to this

    // do damage on the target
    if(m_Sender != null)
    //hit.collider.SendMessageUpwards(DamageMethodName, new vp_DamageInfo(Damage, m_Sender), SendMessageOptions.DontRequireReceiver);
    hit.collider.gameObject.SendMessageUpwards(DamageMethodName, Damage, SendMessageOptions.DontRequireReceiver);
    else
    hit.collider.gameObject.SendMessageUpwards(DamageMethodName, Damage, SendMessageOptions.DontRequireReceiver);
     
    RyanEarpGW likes this.
  15. Jarretxx

    Jarretxx

    Joined:
    Jul 27, 2013
    Posts:
    9
    In vp_hitscan round 163
    Change it to

    Code (CSharp):
    1.  
    2. // do damage on the target
    3.  if(m_Sender != null)
    4.  //hit.collider.SendMessageUpwards(DamageMethodName, new vp_DamageInfo(Damage, m_Sender), SendMessageOptions.DontRequireReceiver);
    5.  hit.collider.gameObject.SendMessageUpwards(DamageMethodName, Damage, SendMessageOptions.DontRequireReceiver);
    6.  else
    7.  //Debug.Log( hit.collider.gameObject, hit.collider.gameObject);
    8.  hit.collider.gameObject.SendMessageUpwards(DamageMethodName, Damage, SendMessageOptions.DontRequireReceiver);
    9.  
     
    nikita68, Shigidy and RyanEarpGW like this.
  16. Shigidy

    Shigidy

    Joined:
    Dec 14, 2011
    Posts:
    441
    Hi I'm just trying to get ufps and shooter ai and make a quick example as I'm still learning, but I've ran into this error after trying to set-up the ragdoll and shooter ai.

    upload_2014-10-13_11-26-42.png

    Also, does anybody have any good zombie settings they would like to give away?
     
  17. Ultimar235

    Ultimar235

    Joined:
    Oct 9, 2014
    Posts:
    3
    @Jarretxx

    Cheers it works!

    I had spent quite a lot of time converting it so that the player uses the AI Shooter health/damage system instead lol. Well least that activity helped me get to grips with the code and how things actually work.
     
  18. nikita68

    nikita68

    Joined:
    Feb 8, 2013
    Posts:
    289
    @Everybody

    Just got back from a short holiday, made some small updates to SAI 2.0 beta and heres the new tutorial for UFPS integration:


    Special thanks to Jarretxx!

    Also, post your requests for tutorial videos! :)

    Thanks!
    Nikita
     
    Last edited: Oct 14, 2014
    Jarretxx likes this.
  19. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,315
    i was watching tutorial, then ufps tutorial integration suddenly disapeared ! your documentation suddenly disapeared !

    please check your links.

    do you have an estimation for 2.0 release? is it a breaking release?
     
  20. nikita68

    nikita68

    Joined:
    Feb 8, 2013
    Posts:
    289
    @Damien Delmarle - I had to reupload because we had some audio issues.

    The 2.0 release will be breaking and its our goal to send the update away this week, though it all depends on the new demo we're making.
     
  21. nikita68

    nikita68

    Joined:
    Feb 8, 2013
    Posts:
    289
    New quick setup tutorial for 2.0!
     
    OnePxl likes this.
  22. RyanEarpGW

    RyanEarpGW

    Joined:
    Jun 12, 2014
    Posts:
    65
    @Hypothesys -
    Would be possible to do so but it depends on the pathfinding system you are using.
    But we have not planned to implement flying enemies, as we focus on humanoid enemies.

    Thanks!
    Ryan
     
  23. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,315
    any tutorial for non humanoid characters without ragdoll setup? ( its a request if there isnt yet)

    i followed the tutorial above:
    when i create the character ai there is an error about editor:
    Code (CSharp):
    1. NullReferenceException: Object reference not set to an instance of an object
    2. AIMainCharacterCreationWindow.CreateNewAI () (at Assets/Shooter AI/Editor/Setup/AIMainCharacterCreationWindow.cs:182)
    3. AIMainCharacterCreationWindow.OnGUI () (at Assets/Shooter AI/Editor/Setup/AIMainCharacterCreationWindow.cs:92)
    4. System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
    5. Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
    6. System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:232)
    7. System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MethodBase.cs:115)
    8. UnityEditor.HostView.Invoke (System.String methodName, System.Object obj)
    9. UnityEditor.HostView.Invoke (System.String methodName)
    10. UnityEditor.HostView.OnGUI ()
    11.  
    i tried to go on and ignore this and play the scene, the new character return 3 errors:

    Code (CSharp):
    1. ERROR1:
    2.  
    3. NullReferenceException: Object reference not set to an instance of an object
    4. GatewayGames.ShooterAI.GatewayGamesModelManager.SetIK () (at Assets/Shooter AI/Scripts/Model/GatewayGamesModelManager.cs:215)
    5. GatewayGames.ShooterAI.GatewayGamesModelManager.Start () (at Assets/Shooter AI/Scripts/Model/GatewayGamesModelManager.cs:59)
    6.  
    7.  
    8. ERROR2:
    9. NullReferenceException: Object reference not set to an instance of an object
    10. GatewayGames.ShooterAI.GatewayGamesModelManager.SetIK () (at Assets/Shooter AI/Scripts/Model/GatewayGamesModelManager.cs:215)
    11. GatewayGames.ShooterAI.GatewayGamesModelManager.Update () (at Assets/Shooter AI/Scripts/Model/GatewayGamesModelManager.cs:67)
    12.  
    13.  
    14. ERROR3:
    15. NullReferenceException: Object reference not set to an instance of an object
    16. GatewayGames.ShooterAI.GatewayGamesEars.GetEnemyWithinEarshot (System.String tagOfEnemy) (at Assets/Shooter AI/Scripts/Sensors/GatewayGamesEars.cs:82)
    17. GatewayGames.ShooterAI.GatewayGamesEars.Tick () (at Assets/Shooter AI/Scripts/Sensors/GatewayGamesEars.cs:44)
    18. GatewayGames.ShooterAI.GatewayGamesBrain.Update () (at Assets/Shooter AI/Scripts/Brain/GatewayGamesBrain.cs:185)
    I am using the 2.0 beta multiplayer
     
  24. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,315
    i found the solution to the problem, i used a character which after exporting it from fbx to unity prefab has a transform hierarchy correctly setup, just the rig was not correctly setup, neck reference wasnt assigned into the mecanim avatar definition. now the error is gone.
     
  25. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,315
    one little thing for UFPS users, do we have to use a collider on our player ? it would be nice if you allow to enemies or players to be registered as enemies by the function: public GameObject GetEnemyWithinEarshot(stringtagOfEnemy) from the script GatewayGamesEars
    even when they use a character controller instead of a collider.

    you could do a check for CC component in you foreach loop before using a collider.

    my player stop after reaching it first waypoint which is above the ground, any idea what should cause this ?
     
  26. RyanEarpGW

    RyanEarpGW

    Joined:
    Jun 12, 2014
    Posts:
    65
    @Damien Delmarle -
    Yes you do have to use a collider when using UFPS.
    It might be that the second waypoint is too close to the first one this might cause some problems. So just try increasing the distance between your waypoints a bit and let me know if it worked.

    Thanks!
    Ryan
     
  27. RyanEarpGW

    RyanEarpGW

    Joined:
    Jun 12, 2014
    Posts:
    65
    @Everybody -
    If you are using the ShooterAIV2 Beta, it now includes a Demo scene. I recommend taking a look at it as it might help with some of your problems.


    Thanks!
    Ryan
     
  28. RyanEarpGW

    RyanEarpGW

    Joined:
    Jun 12, 2014
    Posts:
    65
    @Everybody -
    The link for the demo will be posted in the forum as soon as its finished.


    Thanks!
    Ryan
     
  29. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,315
    there is definitely no option to add a collider on the UFPS player setup. if you try to add it the character controller will collide with the collider and this will count as fall damage, killing the player itself one second after scene has started.
    the waypoint is fixed by increased distance thanks anyway.
     
  30. nikita68

    nikita68

    Joined:
    Feb 8, 2013
    Posts:
    289
    @Damien Delmarle - Sorry, I think we misunderstood your question. For UFPS you don't need a collider as its built in with the package. You only need one if you're making your own system. If you follow the YouTube tutorial you'll see everything needed for UFPS integration.

    @Everybody - We're coming very close to release and are crunching bugs as quickly as we possibly can. Also, we're proud to announce a new feature which you've been asking for since a veerrrry long time: AI communications! Now the AI will call reinforcements when it faces an enemy and there are free AI within a certain radius.

    Also, little screenie preview of the first demo scene (amount of AI will be increased):
    https://www.dropbox.com/s/tqxjezoi3eobeww/Demo.png?dl=0
     
    Mayureshete and Ultimar235 like this.
  31. emmcd3

    emmcd3

    Joined:
    Dec 16, 2012
    Posts:
    26
    Hi Nikita,

    On the attached, you'll see a couple of exceptions thrown regarding "tagOfBullet". I have hacked a couple of quick workarounds, but, this would not be the test environment that I should use if I were to return any reliable results. The exceptions occur if I overlay 2.0 on the Asset Store version(1.5.2) or separately run.

    Your recommended fix or advice will be very much appreciated.
     

    Attached Files:

  32. nikita68

    nikita68

    Joined:
    Feb 8, 2013
    Posts:
    289
    @emmcd3 - Thank you for the input, its now fixed in the latest version.

    @Everybody!!!!

    First off, special thanks to everybody who participated in the beta. You provided us with valuable data, and we were able to make this product much better.
    Secondly, thank you every customer who has bought SAI in the 1.x cycle, and tolerated all the bugs and quirks.

    We have just uploaded and sent the latest version of SAI 2.0 to the Asset Store team, and are now awaiting their approval for the update to go live. As said before here are 2 new demo scenes:
    AI vs AI: https://dl.dropboxusercontent.com/u/86419401/Demos/V2/AIvAI/AIvAI.html
    UFPS with SAI: https://dl.dropboxusercontent.com/u/86419401/Demos/V2/SAI-UFPS/SAI-UFPS.html

    The AI vs AI is included with SAI, and the ufps one is just based on that.

    WARNINGS:
    - Once the update is accepted, the new price of Shooter AI will be $50, and Shooter AI Multiplayer will be $70. If you haven't got Shooter AI yet, we highly recommend getting it at the lower price.
    - We will be phasing out the tutorials for 1.x in the coming weeks. Please tell us which new tutorials + features you want.

    Thanks!
    Nikita
     
    hopeful likes this.
  33. Razmot

    Razmot

    Joined:
    Apr 27, 2013
    Posts:
    346
    Hi - This is good news, I'm a fan of shooterAI since the beginning, but I think you should enhance the UFPS demo a bit. The AI enemies are weak, their shooting rate is low, they don't move much. It's too easy to kill them all, so the AI seems dumb, I know it's not but testing the demo doens't give a good impression of shooterAI.

    And maybe you could use the incredibly good new demo level of UFPS in it's latest version to show off how dynamic your AI actually is ? http://www.visionpunk.com/products/ufpsc/webplayer/demo.html
     
    nikita68 likes this.
  34. nikita68

    nikita68

    Joined:
    Feb 8, 2013
    Posts:
    289
    @XenoGalaxies - Thanks for the feedback. :)
    I'll contact UFPS to ask whether we could use their demo, and i'll also improve our current one as well.
     
  35. nikita68

    nikita68

    Joined:
    Feb 8, 2013
    Posts:
    289
    New tutorial out from Pärtel Lang!
     
  36. red2blue

    red2blue

    Joined:
    Feb 26, 2013
    Posts:
    200
    A question about the coming V2. Will the KI also be adjusable with Behavior Designer. I think I read, that V1 was...
     
  37. nikita68

    nikita68

    Joined:
    Feb 8, 2013
    Posts:
    289
    @red2blue - The IK is adjustable via scripts provided on the model, as seen in the tutorial i posted above. With the correct scripts, you can adjust the IK with BD.
     
  38. red2blue

    red2blue

    Joined:
    Feb 26, 2013
    Posts:
    200
    Hi nikita,
    sorry there was a misspelling from my side. I meant the AI (KI is the german word for AI :) ). Will it be possible to tweak the AI behavior with Behavior Designer. I guess this was possible within Version 1, or am I wrong? Sorry for the confusion!
     
    Mayureshete likes this.
  39. Ultimar235

    Ultimar235

    Joined:
    Oct 9, 2014
    Posts:
    3
    Hi

    When is the expected release and how do I update? It's just I have SAI and recently began a project but I don't really want to work on it without seeing what this version has in store.

    One thing I've always found confusing is how all the attributes come together to create a personality. Compare it to say Unreal Tournament (99) where you select a fighting style (cautious, aggressive, etc.) and set aim, strafing, jump, etc. How can I make say a 'cautious' AI personality in SAI?
     
  40. red2blue

    red2blue

    Joined:
    Feb 26, 2013
    Posts:
    200

    If the developer send the asset to unity, it is up to them how long it will take. It could be days up to weeks, depends on the complexety of the asset.

    You can update the asset if you click within unity under the menu "window" --> "Asset Store". In the upcomming window is a download symboled button. The first of the three on the top right. There you can see your purchased assets. If there is an update for the asset it will say "There is a new version available". Just download the update and reimport the asset.

    Hope this helps!
     
    nikita68 likes this.
  41. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,315
    using 2.0 beta i make a new character, if enemy data have the value search automatically for new enemy set to "true" i have the error:

    NullReferenceException: Object reference not set to an instance of an object
    GatewayGames.ShooterAI.GatewayGamesEars.GetEnemyWithinEarshot (System.String tagOfEnemy) (at Assets/Shooter AI/Scripts/Sensors/GatewayGamesEars.cs:82)
    GatewayGames.ShooterAI.GatewayGamesEars.Tick () (at Assets/Shooter AI/Scripts/Sensors/GatewayGamesEars.cs:44)
    GatewayGames.ShooterAI.GatewayGamesBrain.Update () (at Assets/Shooter AI/Scripts/Brain/GatewayGamesBrain.cs:199)
     
  42. thendricks

    thendricks

    Joined:
    Aug 14, 2012
    Posts:
    48
    In 2.x there's a bug which crashes the whole demo scene, I think it's on the OnTriggerEnter function in the health manager because I commented that and now it works perfectly
     
    Last edited: Oct 23, 2014
  43. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,315
    found the solution to my problem earlier, I had to currently assign manually the "current target" in the inspector, is this normal?
     
  44. nikita68

    nikita68

    Joined:
    Feb 8, 2013
    Posts:
    289
    @Everybody! SAI 2.0 is finally out! Everybody that currently has SAI gets this update for free.

    @red2blue -
    1) We haven't made BD integration yet, though its on our plans in the next couple of months.
    2) Thank you for helping with the forums! :)

    @Ultimar235 - Out now! :)
    Also, if you try out the new version, you might find it a bit easier to customize. Contact me directly and we can make some specific behaviours.

    @Damien Delmarle -
    Thats really weird. Looking into it now, though it looks like you haven't set up the tags correctly for the enemies. Try updating to the newest release from the Asset Store, as it may have been a beta error.

    @thendricks -
    Was it the GatewayGamesDamageRegion script? Thats the only health related script that has OnTriggerEnter.
    I've tried it out and we can't get any errors. Are the tags setup for bullets?
    Its not a critical piece of code though, as its only used for projectiles (arrows etc..).
    If the problem still persists, try reimporting SAI. If the errors continue, contact me and we'll get it fixed. :)
     
    red2blue and hopeful like this.
  45. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,315
    enemy (ai) is tagged Team1 player tagged Player, i have checked the inspector using dictionary into variable, so the tags are not hardwriten into code right?

    is the asset store version also the beta ?
     
  46. emmcd3

    emmcd3

    Joined:
    Dec 16, 2012
    Posts:
    26
    @thendricks - If you'r e referring to tagOfBullet related exceptions you have to go set in Tags. I think slot three is the one that oddly empty. Put it in (capped "B") and off you go if I'm the above.
     
  47. emmcd3

    emmcd3

    Joined:
    Dec 16, 2012
    Posts:
    26
    I think anyone might find an upgrade from 4.5.1.3f to 4.5.5 a very good idea. I was getting a bunch of buggy errors referencing bad audio drivers and other nasties.
     
  48. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,349
    Could i use this system as a standalone, like attach only one script to the hero, give it the enemy positions at each frame with additions to your script and get back the place he should go for cover ?

    Thanks

    EDIT: I just realized i had already bought the asset :), so i can implement the answer right away :)
     
  49. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,315
    my enemy almost never hit the player except if i am in very short range, can i increase weapon range somewhere?
     
  50. nikita68

    nikita68

    Joined:
    Feb 8, 2013
    Posts:
    289
    @damein Delmarle -
    1) No the tags are definitely not hard written into the code.
    2) The asset store version is the full release.
    3) If you're having problems with aiming, go to you AI's brain -> Emotion Data -> Set "Emotional Effect Factor" lower. Try playing around with the values, as this affects how much adrenaline, fear etc.. affects the AI.

    @nasos_333 - Use it as much as you want! :) Look into GatewayGamesBrain on how we optimized and implemented it.

    @emmcd3 & thendricks -
    Thank you very much! I've just noticed that we shipped the wrong script for an import script. Replace the code in "GatewayGamesProjectImport" with the following:
    Code (csharp):
    1.  
    2. using UnityEditor;
    3. using UnityEngine;
    4. using System.Collections;
    5.  
    6. namespace GatewayGames.ShooterAI
    7. {
    8.    
    9.     public class GatewayGamesProjectImport : AssetPostprocessor
    10.     {
    11.        
    12.         static void OnPostprocessAllAssets (
    13.             string[] importedAssets, string[] deletedAssets,
    14.             string[] movedAssets, string[] movedFromAssetPaths)
    15.         {
    16.            
    17.             if (IsMyFrameWorkTagFile(importedAssets))  
    18.             {
    19.                
    20.                
    21.                
    22.                 SerializedObject tagManager = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/TagManager.asset")[0]);
    23.                
    24.                 SerializedProperty it = tagManager.GetIterator();
    25.                 bool showChildren = true;
    26.                 while (it.NextVisible(showChildren))
    27.                 {  
    28.                     //set your tags here
    29.                     if (it.name == "data")
    30.                     {
    31.                         //check if bullet already exists
    32.                         if(it.stringValue == "Bullet")
    33.                         {
    34.                             return;
    35.                         }
    36.                        
    37.                         if(it.stringValue == "")
    38.                         {
    39.                             it.stringValue = "Bullet";
    40.                             break;
    41.                         }
    42.                     }
    43.                 }
    44.                 tagManager.ApplyModifiedProperties();
    45.             }
    46.         }
    47.        
    48.         static bool IsMyFrameWorkTagFile(string[] asstNames)
    49.         {
    50.             foreach(string s in asstNames)
    51.             {
    52.                 //replaced by your path
    53.                 if (s.Equals("Assets/Shooter AI/Editor/Setup/GatewayGamesProjectImport.cs"))
    54.                     return true;
    55.             }  
    56.             return false;
    57.         }
    58.     }
    59.    
    60. }
    61.