Change Log

1.0.10 - 20200701

  • Added new Conditionals AmIBeingAttackedByAnyone and CanWeTargetMonster that allow monsters to target and attack each other
  • Added 2 new behavior tree examples BaseMonsterHUNTERAI and BaseMonsterPREYAI that displays how to use the new actions to make monsters attack each other

1.0.9.4- 20210629

  • Bug Fix: Forgot to to check for NULL audio streams when playing animations!

1.0.9.3- 20210628

  • Fixed one bug with UseSkill actions where Animation variables could crash if not set correctly due to an incorrect internal variable name
  • Some minor changes to Movement actions to default to settings used bu Kit default AI (ExtraMovementType.None for attack movement and IsWalking for random movement.)

1.0.9.2 - 20210606

  • Bug fix to changed AimPosition calls in 1.65f

1.0.9.1 - 20210519

  • Bug fix to handle Entities missing due to changes in 1.65 (AimPositions needed to be updated on attack)

1.0.9.0 - 20210509

  • Updated the code to work with MMORPG Kit version 1.65 (2021-05-01) Update

1.0.8.0 - 20210408

  • Changed UseSkill action to allow Target Player to be null so skills can be played without having a target
  • Added Random Audio clips to be played by PlaySkillAnimation action.

1.0.7.4 - 20210322

  • Update to work with latest MMORPG Kit, 1.63g - cases where we needed a target position for using attacks or skills now require an AimPosition which you can create via this code: AimPosition.Create(targetVector3)

1.0.7.3 - 20210318

  • Bug fix: Movement actions could be broken when setting movement speed to Sprint.
  • Bug fix: Movement actions could be broken when the action was unable to tell if it was still moving or now. The kit doesn't offer a good generic current movement state as far as I can see so we track our position to target every action tick and decide we aren't moving if that doesn't change after a few tries.

1.0.7.2 - 20210304

  • Bug fix: Error when closing the Unity game when Radio messages are enabled
  • Bug fix: Error when closing game in IsServer action due to Game singleton already been closed.

1.0.7.1 - 20210301

  • Bug fix: Movement routines could continue after the parent monster was dead causing them to continue their movement sliding along while dead
  • Bug fix: Move to attack action now will no longer move towards a hidden or dead player

 

1.0.7.0 - 20210227

  • Some fixes to movement Actions to ensure new location is on the terrain
  • Added movement actions for NPC Entities (NPCWanderRandomly and NPCMoveToVector) which allows NPC's to move about. There is a tutorial avaliable to explain all the changes needed to get NPCs moving
  • Added a ExtendedNPCEntity to allow NPCs to move.
  • Some fixes to MoveToVector to ensure works in all cases

 

1.0.6.1 - 20210223

  • Bug Fix: Dead Monsters not vanishing. Fixed this bug, caused by an exception in some Formation cleanup code that prevented Kit code from running
  • Added new action : IsEntityAlive that can be used in scripts to determine if the current entity is alive and should be trying to do s
  • Added IsAlive checks for some Actions to prevent the code from trying to do something when inappropriate

 

1.0.6.0 - 20210217

  • Added a new action called GetAPatrolPoint that returns either a random or the NEXT Vector3 from a list of Vectors so you can have entities patrol around given locations
  • Fixed some issues with snapping to local terrain in MoveTo functions. The SnapTo code requires the terrain to have a tag (By default "Terrain") which most people won't have or want. The SnapTo code still exists but is generally not used. Contact me for details if you find you have needing snap to terrain solutions

1.0.5.1 - 20219202

  • Wrapped Editor only code (ReadOnly fields) in defines for release, Was being too fancy for own good, wanted some read only fields in editor

 

1.0.5.0 - 20210129

  • All movement tasks updated to stop using NavTree and instead use internal kit variables to determine if a monster entity as stopped moving. The up side for this, is the Addon now works in 2D mode as well!

 

1.0.4.1 - 20210119

  • Changed AllyID from UInt to Int in action GrabNearbyFreeAllies.

 

1.0.4 - 20210117

  • Added a return of the Wander Target destination selected by the WanderRandomly action
  • Added formations controllers to the MonsterCharacterEntity_EXT script so we can track leaders and followers
  • Added Previous leader to formation control
  • Added code to remove self from a formation if the entity dies
  • New actions added for the follower system, all found within the "Formations" sub folder within tasks/actions and tasks/conditionals/checks
    • FindNearbyFreeAlly returns an alley within a search radius that is not a leader nor in a group
    • GrabNearbyFreeAllies collects *ALL* allies nearby that are not a leader nor in a group upto a follower limit set for the Monster Entity
    • LeaveFormation leaves any formation the monster belongs to and frees all followers (if any)
    • MoveFormation moves all followers of any Monster according to the selected rules
    • Conditional AmIFollower returns SUCCESS if the monster is a follower
    • Conditional AmILeader returns SUCCESS if the monster is a leader
    • SetFormationAttackTarget sets a CharacterEntity target for all monsters within the current formation
  • Added some example and helper code to allow usage of Opsive Formations addon in the kit

 

1.0.3 - 20201223

  • Minor fix: Removed 4 occurrences of type casting "as BasePlayerCharacterEntity" to allow all action calls to work for any entity type
  • Fix: Updated some more actions to use smaller subsets of Players when checking for valid players to reduce overhead
  • Enhancement: Monster wandering in action "WanderRandomly" changed to wander around their original spawnpoint for a more natural wander
  • New conditional: "IsValidTarget" allows you to check a Entity to see if it is alive/dead/on map, is in safe zone etc with some settings.
  • Change: Conditional "HasTarget" has had some check code removed to speed it up (It was checking a list of all players every call) - if you still need this functionality use "IsValidTarget". "HasTarget" is now only used to check to see if the target variable is set
  • New Action: "GetSpawnLocation" that returns a Vector3 of the initial spawn location of the entity, useful for tethering back to spawns. Example use can be found in the BaseMonsterAI sample replacing the older method (Which was left in other samples as example of saving variables once)
  • Change: Added a RadioDistance to DevExt for MonsterEntity that limits message sent around by distance so that monsters too far away won't try to respond to radio messages. Check HelpfulMonsterAI for a example use [Thanks to Callepo]

 

1.0.2 - 20201222

Some issues tracked down and fixed with thanks to Callepo
 
WARNING: Some changes to many of the actions, we now use BaseCharacterEntity across the board rather than BasePlayerCharacterEntity to allow monsters AND player characters to use various actions/conditionals
 
  • Fix: "CanWeTargetPlayer" conditional changed to use better player character search code from the kit to reduce overhead if there are a large number of players.
  • Fix: "CanWeTargetPlayer" action no longer tries to target the player if the monster is inside a safe area.
  • Removed AIResponseType and replaced with a direct reference to the Kit variable MonsterCharacteristic
  • Removed AllResponseType from the sample behavior trees.
  • Removed the "CompareAIResponseType" conditional as no longer required
  • Added a new conditional "CheckMonsterAggressionState" which allows a check to against MonsterCharacteristic. This is useful in determining if the monster is Aggressive before allowing it to check for targets. Samples updated to use this new conditional
  • Fix: returned accidentally removed code in MonsterCharacterEntity_DevExt extension that prevented events from being successfully fired
  • MASS CHANGE: All references to BasePlayerCharacterEntity have been changed to BaseCharacterEntity so the actions and conditionals can be used for players *AND* monsters without needing two of every action. All samples and their variables updated to reflect this change
  • Added new action "WhereIsEntity" that returns the transform position of any BaseCharacterEntity (As opposed to "WhereAmI" which returns the transform position of a GameObject)
  • Added new sample Behavior Tree "HelpfulMonsterAI" that shows how to send events and respond to them, assisting any allied Monster Entity. This is a more advanced version of the sample "ChattyMonsterAI" which isn't as thoughtful on how it asks and accepts help
  • Fix: Radio Events include various bug fixes

 

1.0.1 - 20201221

  • Movement actions (MoveToVector, WanderRandomly and MoveToAttackRange) now support all Kit movement modes (None, Walk, Sprint, Crawl and Crouch) instead of just Sprint and NotSprint
  • useBaseMonsterEntityProperties has been removed from MonsterCharacterEntity and replaced by an Action "GetMonsteryEntityVar" so that the user doesn't need to match hidden variable names in any new Tree and can choose WHICH Kit variables they wish to access (Check the sample BaseMonsterAI for example use)
  • Fix: If the player is in a safe area AttackTarget action will no longer attack. Also IsTargetDead will now return success since a player in a safe area cannot be harmed and is "dead" as far as the monster is concerned
  • Fix: MoveToAttackRange handles things better than it did. Monsters should always be able to get in range and never get "stuck" in an endless loop
  • Fix: AttackTarget now checks distance to target and won't attack unless they are close enough
  • Sample change: Add a check in the samples to make sure if the monster has a target, it does not forget this too easily. Prevents wander actions when a target exists
 

1.0 - Release

  • Initial Release

 

 

Introduction to Behavior Trees

 

 

MMORPG KIT and Behavior Designer intergration

If you are using MMORPG KIT for Unity and want to really spice up your monsters AI, Behavior Trees are the perfect way to do so, allowing your AI to seem fluid and responsive while allowing for a easy to visualize and edit GUI when implementing.

Within UNITY, Opsives Behavior Designer is a fantastic tool with some amazing features and great UI.

The problem though is how do you get these two assets to work together? Well this add-on is how, simple to use, no core code changes to the MMORPG kit means upgrades are as simple as I could make it, constant updates as I am using the same add-on for my own projects, and this amazing web site! What more could a person want?