My tags and layers were set up correctly and the Footman not moving had nothing to do with the Invector scripts. The issue was that nowhere in the Emerald Invector Tutorial is their mention of the Navmesh requirement. I think your tutorial skipped this step. You may take it for granted, because, ( and forgive me if i am incorrect ), Emerald relies on Unity Navmesh to function. The other three ai assets I own do not require Navmesh, so when I attempted the Emerald Invector Integration, it did not occur to me to create one.
With the navmesh added to the Invector scene, yes, the Footman walks and attacks, and since I successfully performed steps 1-7, my vCharacter is now taking damage from the pesky Footman. I do not like using the Unity Navmesh, but considering that you made the effort to create an integration with Invector TPC, (a real time saver that I prize highly), I will learn Unity Navemesh and continue evaluating Emerald in our demo.
Drawing weapon animation isnāt an available feature yet. However, it is something I would like to be added with a future update. Formations also arenāt a feature as that is more for RTS games. You can can control an AIās destination by using SetDestination (Vector3 AIDestination) so you could have this set to your mouseās position. Formations would have to be handled with additional coding.
My apologies for the confusion! If you had no Nav Mesh, it should have thrown an error. Iāll be sure to add this to the integration tutorials.
Emerald AI version 2.1 is nearly finished. This update focuses on improving the way Emerald AIās Factions and Layers are handled, as well as a couple of needed improvements. Please keep in mind that the new faction system will continue to be expanded. This is the first step for the breeding and herds system. The new faction system should make things more user friendly and less confusing.
Emerald AI 2.1 should be submitted within the next couple of days. Feedback regarding the changes would be appreciated.
2.1 Release Notes
Redesigned faction system that allows users to define custom factions using the Emerald AI Faction Manager. This is done to eliminate the confusion with Unity tags and AI Tags as well as make defining AI factions more user friendly.
The Faction Manager allows users to create global factions that all AI will have access to. These factions can define what faction your AI belongs to and the relations to those factions.
Factions are defined using a custom enum system that dynamically expands depending on the global faction list.
The opposing faction list has been changed to the Faction Relations. The Faction Relations supports up to 5 factions.
A relations system has been added that allows users to define the relation of each defined faction within the AIās Faction Relations list.
Improved combat mechanics
An AIās too close algorithm has been rewritten. AI will now pick a random position around their target to move to, if a target becomes too close. The distance an AI will move is dependent on its Attack Distance. This allows AI battles to be a lot more dynamic and makes AI far more challenging. They will pick various positions around their targets to attack.
Depending on the Too Close Distance set, Ranged AI can now fire and move to another random location so they donāt stay too stationary while in combat.
Ranged and melee AI will now reposition if their sight of their target becomes obstructed by another AI. This also allows melee AI to reposition themselves around their target if they need to.
Melee AI will now only be able to successfully damage a target if they are within 90° of their target (by default). This stops AI from being able to damage their targets if they are greater than 90° away and allows attackers the chance to avoid attacks. This amount can be adjusted via the Damage Settings.
Added a heat seeking option that allows projectiles to follow their target for a certain amount of seconds before firing straight. This gives more variety to spells and makes them harder for players to avoid.
Improved movement in tight spaces while AI are in combat.
Fixed ranged AI from staying stationary if another AI blocks their line of sight.
Fixed backing up bug that would happen with ranged AI.
Fixed a bug that wouldnāt allow AI to properly detect their target if they got too close.
Fixed a bug that wouldnāt allow an AIās Run Attack to consistently trigger and calculate.
Fixed a bug that would allow AI to fire projectiles behind them, if a target was able to move quickly behind them after an attack animation had been started.
Fixed a bug that happened if an AI was killed before their projectile reached their target. Now, an AIās last projectile will continue to move towards their target after theyāve died.
Reduced the generated sphere collider size on projectiles from 0.5 to 0.1. This value stops projectiles from hitting objects they shouldnāt.
Various under the hood improvements. The combat now feels a lot more dynamic and engaging.
Added proper LayerMask enums to the layer portions of the Emerald AI Editor. These layerMasks will also work with Multi-Object Editing and will display all Unity default layers as well as user created layers.
Added an Ignore LayerMask to the Obstruction Detection feature. This allows users to define layers that need to be ignored for a successful attack to be calculated. This is to help the ranged combat system ignore player objects that may be blocking the player.
Added a LayerMask to the detection layers, which was previously typed out using strings. Layers that are checked using this LayerMask will be detectable targets, if they have the appropriate Unity tag and faction.
Added an AI Title to the AIās Settings>Stats section. This allows AI the ability to display a title using the Emeraldās built-in UI system.
Added an option to use or not to use the title feature located at UI Settings>Name Text Settings. Display AI Name and Display AI Title must be enabled in order to use this feature.
Added a script that automatically adds the #if EMERALD_AI_PRESENT custom define. This will allow Emerald integration to be expanded to other 3rd party systems. The custom define allows Emerald specific code to only be compiled if the Emerald define is detected. This allows other 3rd party developers to add Emerald integration code to their systems/tools which means users wonāt have to do it manually. This is largely dependent on the 3rd party developers who want to add integrated support. Integrated support for UniStorm schedules, GKC, Love/Hate, Quest Machine, and other systems is coming soon.
Added a bug report button to the Emerald Docs section of the Emerald Editor. This button will take you to a Google Form allowing you to provide information about possible bugs you may have found. This bug report form is the best way for bugs to be reported so they can be fixed sooner.
The bug report form also allows users to send feature suggestions as well as suggestions for improvement.
Added Idle sounds for AI to play sounds while idling.
Added a min and max seconds that controls how often an idle sound is played. This amount is randomized based off of the min and max.
Added a min and max value to control how often an AI will switch their idling animation. This amount is randomized based off of the min and max.
Added a new setting that controls how far an AIās Detection Radius is expanded if an AI receives damage and there is no detected target. This is to prevent players from dealing damage and not having the AI be able to detect the damage dealer.
Moved Recycle AI option to Optimization Settings.
Improved example scenes
New Skeleton and spider models to better demonstrate Emerald AI and its capabilities. These models fit the style of the Emerald AI example scenes better as well as giving users much higher quality models to use while starting out.
New particle effect for dealing damage. This new particle effect fits the style of the Emerald example scenes better.
After completing the Invector TPC tutorial, I find that melee works both ways, but Invector range attacks do not damage the Emerald ai Footman.
Further, the Integration can not tell the difference between a block and aiming. If I aim a range weapon at the Footman, and keep my finger down on the aim button, aiming constantly and blasting away, then the Footman thinks he is blocked (same input key for block and aim, after all) and The Footman is unable to damage the Invector Player.
Wow those updates sound pretty neat! I like what youāve done with the faction system, it actually saves me a lot of hassle with a jumble of layers and tags when I can use them for other things. Really happy with keeping it inside the AI scripts. One thing Iād like to see in the future (if itās not already there and Iāve missed it) is an expansion of the animator, currently the turn around animation only allows for one speed, which is fine when my AI are walking around, but when they run to chase me they often switch to the turn animation which is walk speed. If i set it to a running animation, they run to turn around then walk slowly while wandering. Itās very jarring to watch my current solution is to just set them to always run, but thereās plenty more room for adding to the controller, and with integration to love/hate and quest machine Iād love to see a more open ended animator that allows you to call states so AI can play emote animations, react to specific quest/story events or use heal potions etc.
@wood333 Invectorās own AI utilise the navmesh, the player does not, but really any AI system requires the navmesh agent to control the areas where it can send AI. Without it the AI will usually just turn in circles on the spot and not be able to chase anyone, as I have used Invectorās AI before I already had navmeshes so I must have done it by default without thinking. The block/aim thing is interesting, I havenāt tried that out yet but it might be quite the issue unless you can remap the key inputs
Hello guys! Looking forward to use Emerald with my upcoming creature, I recieved a kinect v2 today so motioncapture animations is going to bring alot to this creature Im still making ALOT of details. The gum, skin surface, veins, more mouth details around teeth⦠and so on Please gimme your opinion.
Thank you for your response, however, I was looking for a way to tap into your system and extend it in order to create move behaviors. Is it possible to tap into the events when an AI changes state (from passive to attacking the player or another AI) etc?
Currently, the only thing I can see in your API documentation is how to set variables but not read them?
Ranged attacks should be working. Did you edit the vProjectileControl script as stated in the Invector tutorial? I will look to see if there is a better way to implement blocking.
Layers and tags are still needed to differentiate AI from other objects. This is done for performance reasons. If it wasnāt done, AI searching for targets would be searching through 100ās of objects rather than just a small amount. I will be improving the turning speed setting so it can be adjusted better with the next update. I have plans to implement a state that users can apply any animation to. I have tested this a little while back, but didnāt have the time to fully implement it.
The loot system from v1 wasnāt a true loot system. I would like to add some sort of loot system, but I also donāt want to stray too far away from Emerald AI being convoluted. It would most likely be some sort of system that users can add various custom items that the loot system could generate on death. The player could then pick up these items and add it to their inventory. Iād like to make it flexible enough that it could easily be integrated with 3rd party inventory systems.
Hey there!
Very cool. Iām not much of a 3d modeler, but I think itās a great start.
Reading an AIās behavior can be done with the following for passive or aggressive. What other variables would you like to read?
That would be great. Just a gameObject counter, so you can add as many as you wanted, or just one gameObject that can have a script attached to drop random gameObject items (prefabs) defined for your own inventory, or specified gameObject items.
For me, a simple exit on death would be fine. Maybee a pretty much empty script that you could then plug into for the bits you wanted to add⦠perhaps even just an event manager with an ondeath option would do it :), which is pretty much what I do now I guess
For the 2.2 update it would be nice if you could add the possibility to push/knock back an enemy when hit with an special attack or when on death. But then some in air animations is needed for that for example if the enemy would be pushed of a clip. That would be awesome
As what partizan has said, but would it be possible to have multiple hit/knock/back animations based on how many hit points the AI has taken within a scope based on the AI overall health? So for example you could have 1 - 5 HP, just a stumble, 6 - 20 HP - Kneels down in pain, 21- 50 HP falls over and gets up again, 51-99 HP falls over and takes longer to get up - anything over 99 plays the death animation.
Alternatively a switch between standard single hit animation or hit box animations, so you could tie in the animations to individual hit boxes -head shot or sucker punch - goes to instant Death animation, left arm impact (holds arm in pain animation), same for right arm, and legs/feet (limping animation) - Main body impact holds chest in pain. This would not be aimed at Humanoid characters, just generic hit animations for each hit box where the impact was taken. This might be better⦠its a trade off between the two.
Iām excited about the Quest Machine integration in particular: if it could work together with Emerald, that should enable some awesome AI capabilities.
I agree by default Emerald should propose multiple hit animations available it could play randomly or based on hit direction.
However, the plugin canāt cover each specific demands or it will become a mess and hard to maintain as most users donāt need others custom gameplay mechanics.
I donāt think @BHS should code each very specific behaviours users asks, but instead propose some option to let users calls their own actions based on some Event functionnality.
For example when AI attacks , Emerald would have the option to work with pre made behaviour. Or instead using the message functionnality Emerald based on āattackā event message or custom function call.
So you could trigger your own attack functionnality like custom combos, custom damage based on rpg formula, or call another objects scripts for managers or world interaction.
Same for other events (attack, hit, detect player, chase ā¦).
Another advantage is @BHS could propose some sort of addons based on that message and function calls system, like Invektor plugin addons you only use what you need.
For example this could be some āadvanced RPGā addon with damage calculated from weapons objects data with loot system based on Emerald events.
Anyway, event and custom functions calls is a very usefull and missing feature in Emerald.