Search Unity

[UPDATED] ICECreatureControl v1.4.0 - creature AI for enemies, animals, monsters, zombies ...

Discussion in 'Assets and Asset Store' started by icetec, Aug 11, 2015.

  1. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Hi Greb, the mentioned example was for the old version, the update v1.3.6 comes with a collection of Action scripts for playmaker, which you can find in the ICEIntegration folder. Please let me know if you are missing certain values or features, so I'll try to consider your suggestions in one of the next updates.

    Have a great day!

    Pit
     
    arnesso likes this.
  2. Jacky_Boy

    Jacky_Boy

    Joined:
    Dec 8, 2013
    Posts:
    95
    @icetec thanks for planning the Apex Path integration in 1.3.7. I've been waiting for this many months now.:D
    You project this in a week or so?
     
  3. Sorrowthief

    Sorrowthief

    Joined:
    Dec 14, 2016
    Posts:
    48
    I have been having some issues with colliders. I have two NPC guys set up and they are having a fist fight with one another. Both models and animations came from Mixamo. My mutant guy does a Jump attack that moves him forwards a few feet when he jumps. Unlike other animations from mixamo you cannot save the animation or check IN Place like a walking or running animation. I have a capsule collider on my mutant and he also has a rigid body. When he performs the jump attack and I view him in the scene view, I notice that the apsule collider is not sticking to his body when he goes airborn and stays in his original possition. This is making my mutant jump inside the mesh of my other NPC while performing this animation. Is there anything I can do to stop this? I have played with stopping distance and everything I can think of to make this stop but have failed every time. Woud anyone have suggestions on what I can do for this?

    Here is a link to the animation I am speaking of on Mixamo. https://www.mixamo.com/store/#/search?query=jump%20attack

    Also would anyone know how to make it work to when my Mutant takes a hit that does say 5 or more damage he will use his Defence state or an Impact state. So far when messing with Impact my guy seem to loop it over and over every time he gets hit and I would like it to be only when he takes a high damage hit or something. Thanks


    I see you answered a few questions and think U must have missed mine in the world of words. Was hope you had any insight on this thanks bud, I know you stay pretty busy.
     
    Last edited: Feb 15, 2017
  4. arnesso

    arnesso

    Joined:
    Mar 3, 2015
    Posts:
    96
    Hi,

    First sorry if there was already this question, I haven't found it . Does anybody know how to make healthbar to NPC above them show ICE health and shield like a number? If somebody made similiar to this please a little tip would be great
    thank you :)
     
  5. evilangel89

    evilangel89

    Joined:
    Feb 8, 2017
    Posts:
    269
    Hi,

    Have you guys thought about integration with the Invector 3rd person controller? It's a pretty good controller and I want to integrate this with it, but haven't bought it because I am not sure how difficult it would be.

    Regards,
    Tharindu
     
  6. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    @icetec
    Can it be used with a NPC character having several ranged and melee attacks and make him choose what attack to use based on situation ?
    Can the package be used for npc shooter able to cover and fire at player or use formations ?
    Thanks.
     
  7. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    We were able to get a creature (our eagle I think it was) in the air. From here it seems to be a matter of the same interactors, etc, which now do their math in 3 dimensions (will come down from their orbit altitude to attack a creature on the ground.

    What I would REALLY like to see is a TPCT Invector integration. TPCT has its own AI component, but it's designed for humanoids. TPCT needs an integration with an AI system such as ICE in order to use creatures other than humanoids. This is a void that needs filling, and I think ICE should take assertive steps to become the goto AI for users of TPCT.
     
  8. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Yes absolutely! You can define as many behaviors and target-oriented situations as you wish and combine them together. During the runtime, your creature perceives its surrounding environment, analyzes the situation and selects relevant targets by evaluating risk and use (see also: Target Selection Criteria). Once a specific target has been selected, your creature adjusts its behavior and can decide whether a target is close enough for melee attacks or whether it needs to use a particular firearm or whether it would be better to wait or to flee.

    But please consider, your creature will not do it out-of-the-box, first you have to teach your creature the desired behavior. For this purpose, ICE provides you all required functions and numerous setting options to support suitable and realistic behaviours for nearly each kind of scenario. So you can handle all settings basically quickly with some clicks but depending on the complexity of the desired scenarios the settings can become very extensive and will need a clear concept and time to test and adapt.

    In the current and earlier versions your creature is able to find cover by using several interactors, but the settings for this are very cumbersome and not reliable. To improve this procedure, the next minor update (v1.3.7) includes new movement features to support cover-locations directly. Formation moves are currently not supported, but are already concepted and prepared and will be included in one of the next updates.

    I hope this will be helpful so far but please feel free to contact me whenever you have further questions.

    Have a great day!

    Pit
     
  9. evilangel89

    evilangel89

    Joined:
    Feb 8, 2017
    Posts:
    269
    @icetec Does this asset come with full source code?
     
  10. Duffer123

    Duffer123

    Joined:
    May 24, 2015
    Posts:
    1,216
    @icetec ,

    Thinking of buying this asset. I see it is integrated with opsive's TPC but is it integrated with Devdog's Inventory Pro?
     
    wood333 likes this.
  11. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    yes, the full source code is included (~ 2MB)
     
  12. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Hi Duffer123, the integration of Devdog's Inventory Pro is planned but currently not included. First I have to finish some other integrations.
     
    TonanBora and wood333 like this.
  13. Duffer123

    Duffer123

    Joined:
    May 24, 2015
    Posts:
    1,216
    Great, thanks. If you can say, what integrations are you working on first?
     
  14. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    I am currently working on the implementation of APEX and will then implement Invector. Some users have also asked for an integration of ORK, UNet and Bolt, but since ICE already has its own inventory system, Devdogs Inventory Pro can be implemented more quickly, so I'll prefer it.
     
    TonanBora and wood333 like this.
  15. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    It would be nice.

    I seen this screen, does it only register animals tags? if we can use soldiers, wizards or mutants why is the list restricted to animals?


    Does it contains some spwan/unspawn mechanism ? I mean for bigger maps the ability to spawn and remove creatures based on player distance or zone ?
    When the creatures is far , it is removed , only it's last known position is saved to re spawn it when the player come back near it.
     
  16. Duffer123

    Duffer123

    Joined:
    May 24, 2015
    Posts:
    1,216
    @icetec ,

    Thanks. Looking forward to it.
     
  17. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    The above-mentioned Creature Register Popup contains dynamic contents (creatures, items, locations, weapons etc.) according to the registered entities. The example screen pictures all available creatures of the current scene, but if you add or remove items from the Creature Register the list will be changed.

    Btw. The Creature Register handles the spawning and the population of of your creatures. Here you can define several spawnpoints but also the spawning conditions.
     
    Last edited: Feb 14, 2017
  18. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    How it is handled ? It is prefab instance or does it support some pooling that is faster ? Anyway i am not sure pooling would be easy to manage if there was lot of different creatures in different zones.

    Can the creatures switch to or call custom actions or behaviours coded in C# ?
     
  19. KingLlama

    KingLlama

    Joined:
    Jul 18, 2015
    Posts:
    199
    Im running into a issue with Third Person Controller adapter.

    Assets/ICE/ICECreatureControl/Scripts/Adapter/TPC/ICECreatureTPCAdapter.cs(161,10): error CS0246: The type or namespace name `StatusContainer' could not be found. Are you missing an assembly reference?
     
  20. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Awesome. I'm excited about this one.
     
    icetec likes this.
  21. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Hi KingLlama, instead of the old adapter the new version comes with ICEIntegration, so the integration steps for UFPS, RFPSP, UnitZ and TPC are nearly the same ....

    1. Open your Player Settings and add ICE_UFPS or ICE_RFPSP or ICE_UNITZ or ICE_OPSIVE_TPC to the Scripting Define Symbols.

    2. If you are using RFPSP or UnitZ open the ICE Intergration menu and press 'Adapt RFPSP Scripts' or rather 'Adapt UnitZ Scripts'. If you are using UFPS or TPC you can ignore this step.

    3. Finally, add the ICEWorldDamageAdapter to your creatures (not required for RFPSP).

    Now the integration is done and you can start to prepare your creature as desired e.g. equip it with a ICECreatureRangedWeapon or ICECreatureMeleeWeapon and enjoy the fight ...

    Here you can find further information about the integration ...
    http://www.icecreaturecontrol.com/files/ICEIntegration.pdf
    ... and here about the damage handling ...
    http://www.icecreaturecontrol.com/files/ICEDamageHandling.pdf

    Additional I would like to recommend TonanBora's brilliant videos about working with ICE. (Btw. At the end of this video the settings for flying and diving creatures are also shown).


    Have a great day!

    Pit
     
    KingLlama and magique like this.
  22. KingLlama

    KingLlama

    Joined:
    Jul 18, 2015
    Posts:
    199
    So I reimported the asset and it still is giving me the issue with the statuscontainer.
     
  23. Enoch

    Enoch

    Joined:
    Mar 19, 2013
    Posts:
    198
    Just a FYI but I bought this asset and was trying to get it imported into a 5.6b8 project and it was causing an error:
    Internal error: Recursion detected while updating scripts

    Much pain was caused by the utterly useless error message(unity's fault not yours). I was able to fix this by removing the #if UNITY_5_5 define that surrounded all using UnityEngine.AI; references. Note however that unity didn't tell me that this was a problem I had to go look for the errors myself. In any case you probably want to update that define to support anything Unity 5.5 or higher.
     
    icetec likes this.
  24. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    Is this implemented already in the last versions ?
     
  25. Sorrowthief

    Sorrowthief

    Joined:
    Dec 14, 2016
    Posts:
    48
    I see that perhaps my questions got lost in the thread and was hoping you would get a chance to scroll back up at some point and give me a responce if there is an answer to the issues I'm having. Thanks a lot I know you are super busy.
     
  26. rasto61

    rasto61

    Joined:
    Nov 1, 2015
    Posts:
    352
    How could I use the body part impact with Easy Weapons' raycasted weapon?
     
  27. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Hi Rasto, Calvin's Easy Weapons will be directly supported by ICE

    1. Open your Player Settings and add ICE_EASY_WEAPONS to the Scripting Define Symbols.
    2. Add the ICEWorldDamageAdapter to your creatures.

    that's all ... now your creatures or rather their body parts, Items or weapons will use the damage handler of Easy Weapons.

    Btw. Here also the answers of your previous emails, in case you did not receive them:

    please open the ICECreaturePlayer script and deactivate the ‘Use Hierarchy Management’ flag of the ‘Runtime Behaviour’, this should fix this issue …

    please deactivate the ‘RECYCLE’ function of the creature in the CreatureRegister and test it again, it could be that the trigger will not be reset if the creature dies. Please let me know if this is working for your or not. If not, it would be great if you could send me a sreenshot of your settings …

    I hope my answer will be helpful to you but please feel free to contact me whenever you have a question or runs into a problem with ICE.

    Have a great day!

    Pit
     
  28. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Thank you for this information. Immediately after reading your post I have replaced the above described defines as suggested. The changes will be include in the next minor update. Thanks so much again and sorry for this inconvenience!

    Have a great day!

    Pit
     
  29. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Yeap! You can handle this in several ways, but the easiest one is to use a custom group for your creature. By activating and deactivating such a group object, you can prevent or allow spawning as well as hide or display already existing creatures. To setup such a custom group just activate the GROUP button of a Reference Object and add the prefab of the desired group object, which could be an empty GameObject, to the Custom Hierarchy Group field.

    The spawning process is now only executed as long as the specified group exist and is active in the hierarchy, whereby all newly created objects are assigned to the respective group object as a child.

    Naturally, disabling or removing the group object also affects the subordinate objects so that you can control the spawning behaviour and the visibility of your creatures simply by activating or deactivating a particular group or even loading a scene which contains such group objects.

    Tip: You can using such a group also directly as HOME location and also as spawn point for your creature, so you don’t need to create additional objects.

    Btw. Please ensure that the ROOT node of the Hierarchy Management is NULL, otherwise if the CreatureRegister object was assigned as root, the custom groups will be child objects of the register and will not be removed while loading a new scene.

    Hope this will be helpful so far but please feel free to contact me whenever you have a question or runs into a problem with ICE.

    Have a great day!

    Pit
     
  30. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Hi KingLlama, Unity will not delete automatically obsolete files or folders during the import, so you'll get this error again because the files of old adapter still exists inside your project folder. Please delete the old TPC adapter folder (Assets/ICE/ICECreatureControl/Scripts/Adapter/TPC) to fix your issue!
     
    KingLlama likes this.
  31. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Hi Sorrowthief, this is absolutely right. Your Collider is attached to the highest GameObject of your creature and is therefore not affected by the movements or rather animations of the subordinated bones. Instead of one large collider you could use several small colliders, which are attached to particular body parts, such as the chest, head, arms, legs (or in general to the upper and lower body). By doing so, the colliders will follow the movements as expected.

    By default, there is no way to use multiple specific "Impact" behaviors depending on the received damage values, but you can add additional behavior rules to the "Impact" behavior, so you can define different animations which are randomly used when your creature receives damage.

    Hope this will be helpful so far but please feel free to contact me whenever you have a question or runs into a problem with ICE.

    Have a great day!

    Pit
     
  32. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    That's really nice for large maps.

    Does it contains a raycast sensor able to say if the player is on sight and combine it with Field of view ?

    Is there some alert feature ? when a creature sees a player or is attacked by the player, all
    surrounding creatures are beeing alerted and will choose their appropriate action like fleeing from player or moving near player to attack depending on their parameters.

    Does spawners keep information of creatures they control ?
    If some bad guys of one group spawner are down, when we walk far away and come back, does the spawner keeps how many was down and their position before re spawning.

    Are spawner able to have different types of creatures instead of one type only.
    I would like to be able to

    For example i create a spawner i add some different creatures ot it's list, it will spawn this creature list at game start.
    Or some random creature list generation :
    You give a list of creatures and for eahc you give the probability to be spawn, like a golem character at 90% chance to spawn and a wizard character at 30% Chance to spawn.
    You define to 30 the number total creatures the spanwer will have, at game start the spawner will initialise it's creature list based on the group and probabilties you gave it on parameters.
    This would be usefull.

    Can we make our own behaviours ,conditions , sensors with scoring and parameters ?
    - i code a new action named "take cover" that would be able to detect objects with tag cover around a creature or able to real time detect a cover with raycast.
    And it would be callable based on some specific condition like creature health below a treshold or a medkit around or a random number probabilty.
    - Another action named "fire from cover" would be able to drive a NPC to exit cover and fire at player while re enter into cover to reload for example, or only crouch and stand to fire behind a cover.
    So, is this possible to integrate our own actions or make our add new conditions or new sensors in an easy way and use them with ICE ?
    Keeping ICE functionnality but making it easy extensible and customisable would add lot of value.
     
    Last edited: Feb 15, 2017
  33. rasto61

    rasto61

    Joined:
    Nov 1, 2015
    Posts:
    352
    I do have this working. My questions were more about how to perform an action when a body part takes that damage from a raycast weapon. When the weapon is of type raycast in easy weapons the ChangeHealth is sent as a message to the object that the gun was pointing at the given time. Because of this the neither of the the OnTrigger, OnCollision are called on the body part and the Impact object is not used at all. Would you be able to add to either the body part or the damage adapter the option to perform an action when the ChangeHealth or the SendDamage are called?
     
  34. KingLlama

    KingLlama

    Joined:
    Jul 18, 2015
    Posts:
    199
    Can the AI work with mecanim animations? I see it is supported and look into your documentation but the thing is, it isn't showing the animator feature when adding the controller.
     
    Last edited: Feb 15, 2017
  35. Enoch

    Enoch

    Joined:
    Mar 19, 2013
    Posts:
    198
    I am having a lot of trouble getting the patrol mission to work. I unfortunately must generate Waypoints at runtime, so I have a Empty Gameobject as Prefab that has a IceCreatureWaypoint Component attached. I instantiate that prefab at runtime (I am procedurally generating my level). And I then Target the Creature that I want to patrol and execute the following:
    Code (csharp):
    1.  
    2.                var waypoints = Room.WayPoints;
    3.                 CreatureControl.Creature.Missions.Patrol.Waypoints.Reset();
    4.                 var cwp = CreatureControl.Creature.Missions.Patrol.Waypoints.Waypoints;
    5.                 for (int i = 0; i < waypoints.Count; i++)
    6.                 {
    7.                     var index = cwp.Count;
    8.                     cwp.Add(new WaypointObject(waypoints[i].gameObject));
    9.                     cwp[index].Enabled = true;                  
    10.                     cwp[index].Selectors.Priority = 20;                  
    11.                 }
    12.  
    This "almost" works in that the right number of Waypoints show up, but they each seem to have the exact same target waypoint object instead of each being a different waypoint object. I clearly misunderstand some fundamental way in which these objects work.

    I am not using any object pooling I want to control all of the object spawning directly myself.

    Alternatively if there is some easier way to feed a runtime list of patrol points to the creature and have them patrol them I would love to see it. But the list does not exist at editor time so it must be updated dynamically at runtime.
     
  36. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Hi Rasto,
    if an external Damage Handler (eg Easy Easy Weapons) is used instead of the internal Damage Handling, the ICEWorldDamageAdapter should be added to each part of the body so that these body parts can recognize hits and forward the damage accordingly.

    Here you can see an typical example of a head object, with Collider, Bodypart and Damage Adapter. The damage adapter forwards the received damage value to the associated body part, which increases or decreases the value according to the Damage Transfer Multiplier, and transmits the modified damage value to the superordinate main component (e.g. ICECreatureControl).


    Hope this will be helpful so far but please feel free to contact me whenever you have a question or runs into a problem with ICE.

    Have a great day!

    Pit

     
    BackwoodsGaming likes this.
  37. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Hello KingLlama,
    ICE detects if a creature uses the Legacy or the Mecanim animation system and automatically displays the respective settings. To use Mecanim animations, ICECreatureControl requires an animator component with a runtime animator controller and of course suitable animations.

    Now it can be that your object has both an animation component and an animator component, in such a case a selection popup is displayed and you can choose which system you want to use. If ICE does not find a valid animation or animator component within the object hierarchy, an info box is displayed.

    Please note that the ICE Mecanim system supports several modes. The DIRECT mode works similar to the legacy animation system, so choose here the ADAVNCED mode to control the Mecanim system via parameters.

    Here you will find a brilliant video tutorial by TonaBora, which shows the setup of Mecanim Animation with ICE.


    Hope this will be helpful so far but please feel free to contact me whenever you have a question or runs into a problem with ICE.

    Have a great day!

    Pit
     
  38. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Yes! You can define sensoria settings for following senses: visual (include Field Of View), auditory, olfactory, gustatory and tactile.

    Yes! Your creature can send custom commands to other creatures of its species (e.g. to warn or to call for help and support)

    Yes! Your creature can handle this alone by deactivating its mesh and switching its operation mode.

    Basically the global CreatureRegister handles the spawning activities for all types of object, but you are free to use also additional custom spawners. In this case, you have to make sure that such external spawned objects will register itself (e.g. by using one of the included entitiy scripts, such as ICECreatureControl, ICECreaturePlayer or ICECreatureItem). Howerver, I like your mentioned suggestion and your idea of additional spawners and will prepare such an additional spawner for one of the next updates.


    Yes! ICE provides you with a large framework that you can use to expand or customize the given code as desired. Additional one of the next updates will include an interface for custom missions as well as Templates to create such missions. I wanted to include this interface in the current version, but other features were more important and it was necessary to avoid further delays with the update.

    Btw. You can realize the above-mentioned scenarios also without additional code directly with ICE by using Interactors with multiple rules and advanced selection criteria.

    Hope this will be helpful so far but please feel free to contact me whenever you have a question or runs into a problem with ICE.

    Have a great day!

    Pit
     
    BackwoodsGaming likes this.
  39. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    That's good , it looks like it is a very versatile plugin.

    That's great.

    That's good.
    For example instead of using a simple angle and distance check, some characters attacking action will success based on two conditions :
    - an animation event happening at a specific frame of the attack animation
    - a specific collider (volume or raycast) an a collision event happening
    Can we customize deeper the existing framework or must we code new actions for this example ?
     
  40. rasto61

    rasto61

    Joined:
    Nov 1, 2015
    Posts:
    352


    I understand this, and its working well. Im talking about sending custom messages from the body part when it gets hit. Is there a way to do this?
     
  41. Enoch

    Enoch

    Joined:
    Mar 19, 2013
    Posts:
    198
    I have some more questions about how certain things work in technical terms. As much as I would like this to be a black box, I need some introspection into how things flow and actually work to really wrap my head around things so I can get them properly configured.

    I am going to make some assumptions as to how I think things work, please interject and correct my logic errors:

    1) If there are no active interactions or missions a creature simply goes home (the defined home point). If it's inside a Random position range for its home point it does some leisure assigned action. If it is outside that range it does a travel action. If it is at the stopping distance it does its Rendezvous action and if Random position range is greater than zero it will update to a new random point (we can control this update time). Does the timer here start only after the point is reached or does it just choose a new random position every X increment of time? This also means that if there is no defined Random range the Rendezvous action will never get executed?

    One request I would like to make here is for a flag to allow the random offset position to only generate on the defined navmesh. I know its supposed to just be an offset but I am using mobs mostly indoors and I get lots info log errors for mobs not being able to reach a point (because random offset put the point outside of the navmesh).

    2) If there are interactions or missions defined we check the conditions for activation every frame??

    3)For interactions, Act #1 is always a sensory action of some sort, that will determine if this is a valid target(within range, meets the valid advanced tab requirements, etc).

    4) For interactions, Act #2-X is only ever executed if Act #1 choose this target as the current active target. And this target check is still done every frame (so it could switch if a higher priority target comes into range)?

    5) For interactions, this is where things get really fuzzy for me. I think Act #3 will only ever get executed if the stop distance for Act #2 is met? But I assume you can have both Leasure and Rendezous actions on every act so I don't think Rendezous actions for Act #2 will ever get executed if you actually have an Act #3? And Act#3 won't get executed while Act#2 is in leisure, it waits until the stop distance is met? What is the actual criteria for traversing down the Act list?


    Now for even more questions:
    If I have two interactions with exactly the same the Acts and Target, except for the last act being an attack action that is say Attack 1 for the first interaction and Attack 2 for the second, will the selection of each interaction be random or is it the first interaction that meets the requirement (basically Attack1 is always the winner because its first in the list)?

    Is there a way to achieve random attack types?

    Can we somehow set a timeout on a whole interaction so that if it executes all the way till the end it won't execute a agian for a certain period of time?

    How would I achieve a situation where I want a creature to find a player, seek to them, pick some action from a list of random attacks, wait for the attack to finish, do a block action for a certain period of time (and stay in range), then start the whole process all over again?

    Any plans for a threat list like value evaluation? So that we can define certain targets that are higher threat (and thus higher priority)? This threat value would need to be more dynamic than a straight priority as it would change throughout the game. (Ie, threat value may fade over time, or as targets more further away, or through some external action, etc). The key concept is that it's an advanced data value that is target specific (each target has a separate threat value per creature).


    This seems like a fantastic product. I just need a little more insight into its inner workings to really understand how to do things. Thanks for any help you can give.
     
    Last edited: Feb 16, 2017
  42. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    I'm seeing issues with 1.3.6. Some data for my creature is not being saved when I save the scene. I set up one creature and all the basic setup data seems to save fine, but here are a few things that are not saving:

    • In default behaviors if I activate Dead, it does not save.
    • If I set a removal time for the death, it does not save.
    • If I set the speed of the Dead animation it does not save.

    These are just the ones I've noticed so far, but I've saved my scene and go to another scene and come back and these settings revert back to their default values. I'm using Windows 10 and Unity 5.4.2f2.
     
  43. Enoch

    Enoch

    Joined:
    Mar 19, 2013
    Posts:
    198
    I also found a few Bugs:

    -Creature.TargetChanged is only ever set to true when the target changes. The problem is that it is never set to false, so it is essentially always true if it ever even changes once. I fixed this by adding m_TargetChanged = false; to the top of the UpdateMove function in ice_Creature.cs.

    -Switching to a behavior or behavior rule that has no movement can sometimes leave stray movement on the mob. This is because NavMesh agent can still have stray velocity even though its speed it set to zero and you did a Stop(). I fixed this by also setting the velocity to zero:
    I just added NavMeshAgentComponent.velocity = Vector3.zero; on line 1494 in ice_CreatureMove.cs

    -Negative Movement velocity's don't seem to work at all. The best I could do is set the movement mode to escape but the facing is wrong for that (I just want my mob to backup a little). I have yet to figure out a fix for this but I am still looking.

    Hope this helps.
     
  44. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    I found another bug. In the Interactions editor, the move up/move down buttons don't work. So you can't re-order the interactions.
     
  45. Jacky_Boy

    Jacky_Boy

    Joined:
    Dec 8, 2013
    Posts:
    95
    @icetec Can you please tell me how to get the updated adapter for TPC? On your site it's showing the freshness of the adapters to be very old but I remember you mentioning in the past that you had since released an updated adapter. Did you post it on here instead?o_O
     
    icetec and Teila like this.
  46. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Hi Magique, the initial interactor rule (Act #1) must always be the first rule, so the Act #1 Up and Down keys are always disabled and are only available for all other rules when more than two rules are used. In the near future, I would like to provide the re-order feature for all interactor rules (include the first rule), but for now the up/down buttons for the initial rule are always disabled.

    Have a great day!

    Pit
     
  47. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    OK. Thanks for the clarification.
     
    icetec likes this.
  48. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Hi Jacky_Boy,
    the former apapter concept is obsolete since v1.3.6. Instead of specific apater componenets ICE comes with the ICEIntegration package, which includes all required scripts for the currently supported assets, such as the ICEWorldDamageAdapter for UFPS, TPC, UnitZ, RFPSP and EasyWeapons.

    To combine TPC with the latest version of ICE, first delete the old TPC adapter folder to avoid conflicts with the new integration classes. If this was done, just follow the steps below ...

    1. Open your Player Settings and add ICE_OPSIVE_TPC to the Scripting Define Symbols.
    2. Add the ICEWorldDamageAdapter to your creatures (and their body parts as desired)

    Now the integration is ready and you can start to prepare your creature as desired e.g. equip it with a ICECreatureRangedWeapon or ICECreatureMeleeWeapon and enjoy the fight ...

    Here you can find further information about the integration ...
    http://www.icecreaturecontrol.com/files/ICEIntegration.pdf
    ... and here about the damage handling ...
    http://www.icecreaturecontrol.com/files/ICEDamageHandling.pdf

    Hope this will be helpful so far but please feel free to contact me whenever you have a question or runs into a problem with ICE.

    Have a great day!

    Pit
     
    Jacky_Boy likes this.
  49. icetec

    icetec

    Joined:
    Mar 11, 2015
    Posts:
    592
    Hi Magique,
    I'll check the mentioned properties but I don't think, that it is a serialization based problem. This issue could be related to the general scene handling of Unity. If a component is using a custom editor, Unity can't detect changes automatically, to fix this, the custom editor have to call SetDirty to inform Unity about potential changes. But for some reason, Unity will still not mark the scene as unsaved (* char in the title bar) and will not save changed values in a custom editor without making any further changes in your scene, but if you manipulate also values in a standard editor (e.g. Transform values etc.) or move, add or delete scene objects etc., everything (include the settings of a custom editor) will be saved as expected.

    Please adjust the desired values again and ensure that at least one more change is made in your scene, so that Unity marks the scene as changed before you will save it.

    Btw. If you are using prefabs or if you see that your scene is marked as changed you'll not have this issue. But nevertheless, I'm sorry for this circumstance. I have already tried various solutions to tackle this issue, but so far unfortunately without success, so it would be great if someone here had an idea.

    Have a great day!

    Pit
     
    Last edited: Feb 17, 2017
  50. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    @icetec It looks like you were responding to my issue above, but you didn't actually type a response.