Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.

[RELEASED] Enemy AI

Discussion in 'Assets and Asset Store' started by Viniterra, Mar 24, 2020.

  1. Kallex2

    Kallex2

    Joined:
    Dec 5, 2016
    Posts:
    14
    Looks really promising; do you have any experience/gotchas for using these with multiplay/network synced, particularly with PUN 2 / Photon Realtime?
     
  2. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176
    I had used Photon and the legacy Unet for some integrations with player controllers before, but not with the Enemy AI package itself.
     
  3. Kallex2

    Kallex2

    Joined:
    Dec 5, 2016
    Posts:
    14
    I got the asset, going to integrate it in and see if I can get it to work. There were some collisions with MFPS 2.0 both using MFPS parts, but didn't seem too major and hopefully it seemed to be related on examples only.
     
  4. mentalgear

    mentalgear

    Joined:
    Jul 19, 2019
    Posts:
    22
    Checked out the demo, which is really helpful ! (though unlimited player health mode would help to better evaluate the AI behaviour) Overall Enemy Tactics are really impressive.
    Yet, there are some small hicups I wanted to report, like when an enemy tries to escape a room from which the player attack him, instead of leaving directly, they make some unnecessary "dodge around the corner" move. Also, sometimes nearby enemies within the line of sight, don't react if they have their backs turned (video at 1:15 HLJ Prototype Game Play 17SEP20), even though you just shot their buddy. This seems to be an issue with the audial system that doesnt work 360 ? Maybe also make sound-reaction dependent on sound volume, e.g. a silenced weapon has a lower alert radius than others.
    Last but not least, showing how enemies switch to melee when in close range would also be useful.
     
    Last edited: Oct 1, 2020
  5. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176
    Unfortunately I have never used MFPS. I do recommend you to make the integration with an already set FPS controller, and then follow the video tutorial to setup the enemies, that will only add the needed files, avoiding necessary conflicts and errors.
     
    Last edited: Sep 30, 2020
  6. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176
    1) Could you provide an example on what you call unnecessary dodge around the corner?
    2) I could not see an enemy not reacting on the video link you have provided. Based your report, an enemy will react to player shots even if they have their backs turned, as long as you have configured the alert manager properly. You can control the alerts triggered by the calls for the root alert callback function, for example not calling it if the player is using a silenced weapon.
    3) The Enemy AI currently provides only shooter actions for the enemies, but it is not difficult to extend the FSM, adding melee actions for them.
     
  7. mentalgear

    mentalgear

    Joined:
    Jul 19, 2019
    Posts:
    22
    Thx for the quick reply.
    1) When an enemy tries to run from you and leaves a room, they do they whole look around the corner, then carefully slip around the corner, instead of just leaving through the door.
    2) The first solider is shot, the second soldier just behind continues patrolling like nothing happened.

    If I correctly understand, for the "hearing" alert system, it doesn't take into account the volume of a sound, only the proximity ? Bit of a bummer, since I thought the pack could have been a great addition for stealth games. But if the user is required to activate/deactivate the "sound alert" based on the weapon, it's not really useful. I hoped enemies would react automatically based on sound proximity and volume.
    3) Great, maybe you could provide an example on how to setup ? Would make the package more versitable and you could add it to the features.
    4) One more thing: Are there events generated when NPCs change states ? Like a switch into an alert state, or when they require backup from other NPCs. That would be super helpful in making a realistic game, since the player could hear (via a sound effect) when an NPC hears them and gets alert, or play an NPC animation when they want other NPCs to circle the player.
    5) Does this asset also support Root Motion ?
    6) Maybe add overview map to demo ?
     
  8. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176
    1) Sorry, I still have difficulties to understand that move. Maybe if you could provide a video of that situation, it would be great.

    2) The situation in the scene is clearly a lack of the alert management system usage. Please note that this package was created for shooter (action) games, so many of its design decisions was made focusing on the action. For an action type game, for example, a simple boolean on the weapon script to set it to silenced or not, together with a conditional to check it when calling for the alert, may do the job. But in fact the enemy perception system with senses was created considering stealth mechanics inspirations. I believe it may provide a good starting point for some extensions to the stealth genre. Some of them you have already suggested and are really interesting. Thanks for that, I'll consider it.

    3) You mean how to setup the shooter part? If so, you can follow the enemy setup video tutorial:



    4) I believe you can trigger events on the State Controller itself. The specific one you've mentioned by checking, when a transition occurs, if the state has changed its alert level.

    5) All the plug and play setup is based on Mecanim humanoid animations with root motion.

    6) What do you mean here, add a minimap?
     
  9. wheelbarrow

    wheelbarrow

    Joined:
    Sep 12, 2011
    Posts:
    168
    Hi, I have this asset, and am about to use it for the first time, but I have a problem regarding the "AimTarget" for the state controller; my player toon spawns at the start of each scene, how do I go about setting the Aim Target for that, seeing as there is no Player/bone to set as a target until after the scene starts?
    Thanks.
     
  10. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176
    Hello, assuming you are using a humanoid player, you can assign the bone by runtime, at the Start() function of the enemy's StateController. Find the player by tag and then use the Animator.GetBoneTransform to get the bone you want for the aim (probably the chest bone):

    https://docs.huihoo.com/unity/5.5/Documentation/ScriptReference/HumanBodyBones.html
     
  11. wheelbarrow

    wheelbarrow

    Joined:
    Sep 12, 2011
    Posts:
    168
    Thanks, I'll give that a shot.
     
    Viniterra likes this.
  12. Stormjar

    Stormjar

    Joined:
    Sep 17, 2015
    Posts:
    2
    Hi does anyone know how to integrate this with Opsive's UFPS character controller? I'm really dyslexic so can't code and I'm struggling to get them working together. Thanks for any guidance!
     
  13. jnbbender

    jnbbender

    Joined:
    May 25, 2017
    Posts:
    455
    This asset looks really nice (haven't purchased) but I think a great update would be allowing the AI switch between a Shoot & Melee style attack.
     
  14. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176


    (Expand the video description and look for the "Third-party player scripting" section)
     
  15. cloverme

    cloverme

    Joined:
    Apr 6, 2018
    Posts:
    159
    I have an issue where when an AI reaches a waypoint, it seems to jitter back and forth quickly for a second before continuing. I was wondering what the solution to that is.
     
  16. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176
    could you provide a video of this situation?
     
  17. cloverme

    cloverme

    Joined:
    Apr 6, 2018
    Posts:
    159
    Thanks for the reply! I think I figured it out, the waypoint position on the y-axis was a bit lower than the nav mesh. If it happens again, I'll post a video of it. In short the AI was turning 45° to 90° on the y-rotation then back again very quickly for 1-2 seconds.

    So, let me you tell this. I've used almost every AI asset out there (Invector, Emerald, etc) and for a stealth/shooter, yours is the best, hands down. Not only is it very performant, but your FSM model is also 10x better than the other packages out there. I'm in the process of switching over to your AI package from Invector.

    A couple of questions...
    1) How can I make the AI target the other AI's through a method/code? I'm trying to simulate the behavior of an Enemy switching sides/teams.

    2) Is there a way to pause the AI during a patrol through code? I'm trying to simulate the behavior of an Enemy is confused for a few moments, then goes back to patrol (or another state). What I'm doing now is setting the aiActive to false, switching the state to WaitState, waiting x seconds, then switching the state back, and setting aiActive to true. However I was wondering if there was a different way to do this?

    3) I'm currently building in functionality to sneak behind an Enemy and do a stealth takedown. It would be cool if a future version had this for other gamedevs too.

    Great work overall, thanks for making such a great asset!
     
  18. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176

    Thank you for the feedback, I appreciate that.

    1) A starting point is to change the enemy Aim Target, and also observe the enemy target mask to include possible new layers representing new targets.

    But please note that this asset was designed for a single player experience, where all the enemies target the player all the time, and also the levels are always reloaded upon player death. To change an enemy Aim Target during runtime can lead to unexpected behaviors and other issues, since this has never been tested before. So it may be necessary to make some adjustments on the code, in order to work properly.

    2) I believe a better way is to create a ConfusedState, put inside it the wait action and a new consused navigation action, that navigates to random near points, and intercalate that actions. Then create a ConfusedDecision to make the transition from and to this new state. Finally create the necessary transitions in the states it can be triggered (e.g. the patrol state). Remember to create the transition back in the ConfusedState to a default one (i.e. the patrol state itself).

    3) The current HearDecision stores the player position in one frame and compares to the position in the next one. It is a naive way to detect player movement, but it is enough for most action games.

    A more refined way, considering a stealth approach, requires redesigning the Hear Decision class. Basically, you must create a trigger sphere in the player that changes its radius upon movement. The faster the movement, the louder it is, the larger the radius. It can have a zero radius in case the player is sneaking, so he will not be detected by the enemy ears.

    Then you can check, in the hear decision, for this specific trigger sphere instead of checking for the player collider (see the OverlapSphere() function inside the CheckTargetsInRadius() of the Decision parent class).

    Hope it helps.
     
  19. cloverme

    cloverme

    Joined:
    Apr 6, 2018
    Posts:
    159
    I got an issue where sometimes the EnemyAI's seem to gather to close to each other during an Attack. What code do I need to modify to get them to find another spot to shoot from?
     
  20. alsoknownas-stefan

    alsoknownas-stefan

    Joined:
    Apr 3, 2020
    Posts:
    11
    Before I purchase Enemy AI (or the bundle), I want to know if it is possible to only use the cover system for enemies in my project. Basically, I want to call the 'search for player' method and the 'seek cover' method when I please, regardless of the other states of the FSM. The rest of the FSM I would like to disable. Is it possible and if so, how?
     
  21. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176

    Hi, thank you for your interest.

    I believe that can do that by creating a dummy state in the FSM and transitioning to it when needed, with proper FSM decisions. This state will be triggered every time the enemy performs external actions unrelated to the FSM.

    But some scripting knowledge is required to achieve that, since that dummy state may deal with changing animation controllers etc.
     
    cloverme likes this.
  22. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176
    Hello, take a look at the CoverLookup script.
     
    cloverme likes this.
  23. cloverme

    cloverme

    Joined:
    Apr 6, 2018
    Posts:
    159
    Thanks, I figured it out... I added some code to check to see if there's another enemy ai within 3-4 meters, if that's the case, I send it to find another shooting location. I also check to see if one AI is in front of another, if so, I send it to look for another place.

     
  24. cloverme

    cloverme

    Joined:
    Apr 6, 2018
    Posts:
    159
    I needed to do the same thing, you have to modify the code and be very comfortable with c#. I basically just "tricked" the decisions to do what I want it to. It's easier than coding a new state, but the dev would know best. You should get the AI, it's amazingly performant, it consumes about 40% less resources than Emerald and his FSM AI is like 10x leaner than the invector one. I used all the AI's from the asset store in testing, this one is the best one as long as you are a developer. It's aiming & IK setup is also one of the best as well.

    Anyway, here's what I did to force an AI into a cover routine:
    -Created a function in the StateController.cs to set a boolean value (i.e SeekCover = true)
    -Set personalTarget = aimTarget.position in the Update for statecontroller.
    -Added this to FeelAlertDecision in Decide ( if (controller.SeekCover) return true;)
    -Added this to TakeCoverDecision in Decide ( if (controller.SeekCover) return true;)

    The AI will go find a coverspot to hide (assuming you setup the layers, etc correctly)
    - To reset the AI back to normal, toggle SeekCover to false then set the currentState = PatrolState and personalTarget = new Vector3(0, 0, 0);

    The AI will go into its routine.
     
  25. alsoknownas-stefan

    alsoknownas-stefan

    Joined:
    Apr 3, 2020
    Posts:
    11
    Thank you for your detailed answer. This is perfect, thanks :)
     
  26. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176
    This seems really nice.

    A question, have you set these obstacles as covers? The enemys does not seem to look for cover behind them.
     
  27. cloverme

    cloverme

    Joined:
    Apr 6, 2018
    Posts:
    159
    Thanks, much appreciated!

    Yeah, it has to do with the decision point in AttackState for Advanced Cover. I think because there's so many decision points in the AttackState and then the waitrounds, plus the randomized decision, the AI may not take cover very often before they're killed, even when adjusting the changeCoverChance variable. The FSM can change the state to something else depending on the situation (like moving to ClearShotDecision state) so it make take a while before they seek cover.

    What I did is create a function that allows me to put any AI into a cover position at any time. So like, if one AI is blocking another or takes 75% damage, I can send it to take cover. Below is a screenshot showing the AI taking cover behind the obstacles:



    A couple of the other mods I made:
    • Changed the tracer, bullets, and other effects to use object pooling so that the instantiate/destroy performance was improved. (
      )
    • Added ability to use multiple random audio clips for the shot sound effects
    • Ability to do stealth where the enemy can't detect the player in shadows and do a stealth takedown.

    -C
     
    Viniterra likes this.
  28. JC_LEON

    JC_LEON

    Joined:
    May 20, 2014
    Posts:
    507
    Hi I'm interested to purchase your great AI asset but before i would to know if i can use it with Neo FPS shooter template
    https://assetstore.unity.com/packag...neofps-fps-controller-template-toolkit-150179
    since this is the template I use as base of my game and if with your enemy ai asset I eventually can create even a non-shooter ai to simulate melee ai attacks like animals, monsters , zombies and so on
    and if i eventually purchase the asset i can have some help for integration with my game..

    let me know..

    cheers

    Giuseppe
     
  29. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176
    Thank you for your interest.

    You can integrate the Enemy AI asset with any type of 3D game, including a FPS. To do that using your template, you must follow the setup video tutorial:



    You also can use the FSM system of the package to create your own states for a specific AI, like the ones you mentioned (animals, monsters, etc.) For that, you must know the Unity animation system and some scripting to create the required actions and decisions for the states in the FSM.
     
  30. JC_LEON

    JC_LEON

    Joined:
    May 20, 2014
    Posts:
    507
    many thakns for your reply .i'll try and purchase it asap and let you know
     
    Viniterra likes this.
  31. alsoknownas-stefan

    alsoknownas-stefan

    Joined:
    Apr 3, 2020
    Posts:
    11
    In several youtube comments, you mentioned that you would be putting out a video in which you describe how to make your custom FSM. That would be great, since I am now looking to expand/change the default FSM.
     
  32. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176

    Hi, thanks for the interest. It's still in the plans, but the pandemic has changed things a bit.

    For this tutorial, the video part is fully recorded, but I need to acquire some better equipment to record the audio part. I'm working on it now.
     
  33. aggaton

    aggaton

    Joined:
    Jul 3, 2021
    Posts:
    104
    @Viniterra Hi, I bought and imported all three packages, however there seem to be some compile errors

    Code (CSharp):
    1. Assets\TPS Bundle\Cover+Shoot\Scripts\PlayerScripts\ShootBehaviour.cs(185,34): error CS1061: 'ThirdPersonOrbitCamBasic' does not contain a definition for 'BounceVertical' and no accessible extension method 'BounceVertical' accepting a first argument of type 'ThirdPersonOrbitCamBasic' could be found (are you missing a using directive or an assembly reference?)
    2.  
    3. Assets\TPS Bundle\Cover+Shoot\Scripts\PlayerScripts\CoverBehaviour.cs(156,35): error CS1061: 'ThirdPersonOrbitCamBasic' does not contain a definition for 'ToggleClampHorizontal' and no accessible extension method 'ToggleClampHorizontal' accepting a first argument of type 'ThirdPersonOrbitCamBasic' could be found (are you missing a using directive or an assembly reference?)
    4.  
    5. Assets\TPS Bundle\Cover+Shoot\Scripts\PlayerScripts\CoverBehaviour.cs(161,35): error CS1061: 'ThirdPersonOrbitCamBasic' does not contain a definition for 'ToggleClampHorizontal' and no accessible extension method 'ToggleClampHorizontal' accepting a first argument of type 'ThirdPersonOrbitCamBasic' could be found (are you missing a using directive or an assembly reference?)
    6.  
    7. Assets\TPS Bundle\Cover+Shoot\Scripts\PlayerScripts\ShootBehaviour.cs(332,36): error CS1061: 'ThirdPersonOrbitCamBasic' does not contain a definition for 'BounceVertical' and no accessible extension method 'BounceVertical' accepting a first argument of type 'ThirdPersonOrbitCamBasic' could be found (are you missing a using directive or an assembly reference?)
    8.  
    9. Assets\TPS Bundle\Cover+Shoot\Scripts\PlayerScripts\ShootBehaviour.cs(360,34): error CS1061: 'ThirdPersonOrbitCamBasic' does not contain a definition for 'BounceVertical' and no accessible extension method 'BounceVertical' accepting a first argument of type 'ThirdPersonOrbitCamBasic' could be found (are you missing a using directive or an assembly reference?)
    10.  
    11. Assets\TPS Bundle\Cover+Shoot\Scripts\PlayerScripts\CoverBehaviour.cs(478,34): error CS1061: 'ThirdPersonOrbitCamBasic' does not contain a definition for 'LockOnDirection' and no accessible extension method 'LockOnDirection' accepting a first argument of type 'ThirdPersonOrbitCamBasic' could be found (are you missing a using directive or an assembly reference?)
    12.  
    13. Assets\TPS Bundle\Cover+Shoot\Scripts\PlayerScripts\CoverBehaviour.cs(480,34): error CS1061: 'ThirdPersonOrbitCamBasic' does not contain a definition for 'UnlockOnDirection' and no accessible extension method 'UnlockOnDirection' accepting a first argument of type 'ThirdPersonOrbitCamBasic' could be found (are you missing a using directive or an assembly reference?)
    14.  
    15.  
     
  34. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176

    Hi, what three packages? You just need to import the TPS bundle package on a blank project to acess all the features.
     
  35. PDTokay

    PDTokay

    Joined:
    Jan 11, 2018
    Posts:
    5
    It works with some tinkering. Ive set it up and using it. What do you need to know?
     
    Viniterra likes this.
  36. FelDagaroth

    FelDagaroth

    Joined:
    Jun 23, 2021
    Posts:
    8
    I just purchased and have been playing with Enemy AI and it's awesome! I haven't had a chance to fully delve into the decisions and actions, but I didn't notice anything for fleeing and/or cowardly AI - any suggestions on where to focus or start to make that?
     
  37. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176
    Hello, thanks for the feedback.

    The easyest way to do that is to create a proper state and respective action(s) to perform the desired behavior, and then create the decisions/transitions from the involved states to this new flee state. For more information upon the FSM and its components, take a look at the README file.
     
  38. Shindluder

    Shindluder

    Joined:
    Jan 19, 2021
    Posts:
    1
    I am working on a "kind of" Point & Click adventure with stealth elements, so this mentioned video would be awesome to create my own states and behaviours. Sadly i am more like an artist and pretty bad at coding, so i hope your upcoming tutorial shows some helpful examples. Keep Up the great work, Cheers.
     
  39. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176
    Hey thanks for your message. I pretend to launch a tutorial about a more stealth approach for the enemies, using a new scene. It modifies some states in FSM to achieve this scenario, but it is quick and easy to do in fact.

    The scene is already done, but I really need to grab some time to finish the video and publish it. Hope to conclude it soon.

    EDIT.: Here is a preview for the scene:

     
  40. Iainduthie

    Iainduthie

    Joined:
    Oct 30, 2013
    Posts:
    5
    Just got the asset was wondering something whats the best way to make them fight each other or is that not possible without some heavy changes to the system?
     
  41. cloverme

    cloverme

    Joined:
    Apr 6, 2018
    Posts:
    159
    I haven't tried this yet, but will give it a shot. I think it's it's just matter of layer detection for gameobjects. The code supports it, I'll try giving it a shot and let you know. I've done some heavy mods on the code though to support some new functionality, but essentially should be straightforward.
     
    Viniterra likes this.
  42. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176
    These are the steps for creating a companion, which is a similar situation:

    - Start with 2 configured enemies in the scene.

    - Create a custom GeneralStats script for a new type of AI. Let's call it AllyStats. You can clone the original EnemyStats for that.

    - Create a new layer to differentiate the 2 AI types, name it Ally. Put one of the configured enemy root under the Ally layer, and also set that same layer in his Hips bone. Pay attention to not set the children game objects, only the ones you are changing.

    - Under the State Controller of the Ally, Set the AllyStats asset as the General Stats parameter, and open it (AllyStats) for editing.

    - Add the Enemy layer under the Shot Mask, and also under the Target Mask. As this is a companion, you must remove the Player layer from these masks also.

    Get back to the State Controller of the Ally character, and under its Aim Target parameter, put the Spine2 bone of the enemy.

    Now go to the other Enemy, and under its State Controller, put the Ally Spine2 bone under its Aim target.

    Now open the EnemyStats for editing. Add, under the Shot Mask, the Ally layer, and also under the Target Mask.
    Finally, under the AttackAction script, you must change the line 134, from:

    HealthManager targetHealth = target.GetComponent<HealthManager>();
    to:
    HealthManager targetHealth = target.root.GetComponent<HealthManager>();

    OBS.:

    As the system focus in the single player experience, dynamic changes of target is not currently supported, as all enemies always focus on the player, and when he dies the scene ends/restarts.

    To address this, a script must be created, that will dynamically manage the aim target for the enemy, based on the character that is entering his senses. With this script, you will be able to keep the Player layer in both Enemy shot and target masks, together with the ally.

    You can also create a similar script for the ally, to dynamically change its current target based on the same senses principle, but considering only the enemies.
     
  43. innoveca

    innoveca

    Joined:
    Apr 29, 2016
    Posts:
    2
    Thank you for the amazing AI kit. I am wondering whether I can integrate this system into the game that I am currently building with playmaker.
     
  44. Iainduthie

    Iainduthie

    Joined:
    Oct 30, 2013
    Posts:
    5
    amazing i will give it a go because sounds like it should work thank you
     
    Viniterra likes this.
  45. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176
    You can integrate with existing player controllers using the video tutorial. Only minimal scripting is needed, for health /damage management:

     
  46. PRfsJay

    PRfsJay

    Joined:
    Apr 22, 2021
    Posts:
    14
    Good Morning. Its been a while since I have been using this fantastic asset but I am about to get back to it and I have a question: Do the enemy AI need the waypoint system or can they be spawned on the navmesh and walk around on their own? I seem to recall from months back that they need the waypoints made for them so they walk around.
     
  47. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176

    Hi, thanks for the feedback. Yes, the bots need waypoints in order to navigate, otherwise they will stand still.

    As a suggestion for the most basic navigation, you can create a manager script that dinamically gerenates random waypoints and then populate the enemy navigation array with them.
     
  48. TwistedBarrelGames

    TwistedBarrelGames

    Joined:
    Feb 10, 2021
    Posts:
    1
    Hi there, I’ve been using your asset for the past 2 months and overall I’m very satisfied with the results.

    I saw in your previous post that you were going to make a tutorial on creating a custom FSM with a hostage. Funny enough, I am in need of this very thing but my understanding of creating a custom FSM is beyond me.

    I would really appreciate it if you could share this tutorial publicly or privately?

    it would be extremely helpful, especially since I also need to create a custom state for my enemies being flashed by a flashbang. I can get the animation to play, but the enemy still fires at me during the animation.

    Here’s some footage of my project so far:

    https://youtube.com/shorts/0lL0i1vyFUw?feature=share
     
  49. Viniterra

    Viniterra

    Joined:
    Dec 4, 2014
    Posts:
    176
    Hi, could you reach me through the support form?
     
  50. egutentag

    egutentag

    Joined:
    Nov 27, 2020
    Posts:
    3
    Did someone managed to do pooling on the NPC? i am getting wired behaviors on spawning.