Table of Contents

Release Notes

1.7.0 22/4/2024

Improvements

  • Added a function to get all runtime added behaviors GetAllRuntimeAddedBehaviors() to the brain.
  • Added a function to remove all runtime added behaviors RemoveAllBehaviors() to the brain.
  • Added the button to remove all null behaviors to the designer windows.

1.6.0 27/3/2024

Improvements

  • RemoveBehavior method is added to WFBrainComponent. This was somehow missed and after adding behaviors you could not remove them. This is the main reason for this release.

Bug Fixes

  • Now having a null behavior in the behaviors array of a brain is checked with a check assertion macro and is catched instead of crashing

1.5.5 20/2/2024

Bug Fixes

  • Fixed a bug where if you saved an action template without openning it, then loading it at the next UnrealEd run could cause crashes.

1.5.4 9/2/2024

Bug Fixes

  • Fixed a few more bugs in visual logger integration and the way actions ticked.

1.5.3 8/2/2024

Bug Fixes

  • Fixed a bug where an action which needs targets and has no targets could crash when creating a snapshot for the visual logger.

1.5.2 5/2/2024

Bug Fixes

  • Fixed a bug where not calling base class's Endplay() in WFBrainComponent was causing issues with actions which have overriten Tick function.

1.5.1 3/2/2024

Bug Fixes

  • Fixed: In certain situations where all targets scored 0 and there was a previous target, evaluate could cause a crash in the debugger.

1.5.0 29/1/2024

Improvements

  • Added action templates feature which allows you to defien a set of actions with their considerations defined and add the template to a behavior. In this way new behaviors can be made quickly by fully premade actions.
  • Added an OnInitialized event to the WFBrainComponent so dynamic initialization scenarios can be coded easily. This event is called after the component is fully initialized and is possessed.
  • Added a combobox to the debugger which you can choose what world to see actors of. This is useful for multiplayer scenarios where you are running a client/listen server and want to see the actors of the server running the AI.
  • Cleaned up the code comments and other small things.
  • Removed a dependency on gameplay tasks which wasn't being used.
  • Updated docs to a new template which has some good features like jumping to sub-headings and pdf export from the page.

Bug Fixes

  • The debugger was not working if the checkbox for sorting actions wasn't set. It is working now.
  • The debugger was sorting the considerations when the sorted checkbox was checked which was incorrect and not useful. It now only sorts actions.
  • Removed the debugger's destructor which wasn't needed and was causing crashes in certain multiplayer scenarios.
  • Removed profiler scopes from methods which did not need it.
  • Fixed component initialization for cases which did not have any initial behaviors attached.
  • Fixed the way we checked for validity of weak pointers which could cause crashes when running in debug mode and was slower too.

Changes

  • Actions no longer have bHasTargets explicitly and an action is considered an action with targets if any of its considerations has bNeedTarget set to true. Having a bool in the action was almost never useful other than weird testing scenarios and was causing many confusions.

1.4.5 25/11/2023

Improvements

  • Added an ensure() macro to make sure an action with bHasTarget set to true has at least a consideration with bNeedTarget set.

Bug Fixes

  • Momentum wasn't sometimes being added for the last target due to a bug in our calculations

1.4.4 18/11/2023

Improvements

  • Now optimizations applied when calculating scores can be disabled so even if a consideration's score is 0, the rest are calculated for debugging purposes. The optimizations are always disabled in the editor but can also get disabled for a build in project settings.

Bug Fixes

  • Fixed the way target score momentum was also affecting final score of the action. It should have only effected the comparison between the targets and not the final score.
  • Fixed target score momentum application in general so it gets added once after all considerations are applied.
  • Fixed the debugger so it shows the correct score when optimizations of score calculation are disabled.

1.4.3 31/10/2023

Bug Fixes

  • A few bugs in the selection algorithm were fixed which could cause a crash in certain scenarios. The bugs where in the random selection algorithms.

1.4.2 25/10/2023

Improvements

  • Now there is a setting in project settings of wise feline to choose scores below a certain number to be considered 0 for actions.

Bug Fixes

  • The weighted random algorithms for selection mode had a bug which is fixed now

1.4.1 06/10/2023

Bug Fixes

  • Deleting the considerations and actions which became null because their class was deleted was not possible before. We added a button which cleans them.

1.4.0 21/09/2023

Improvements

  • Added two weighted random variations to selection mode of the WFBrainComponent.
  • Added cleanup logic so after a level unload all target lists of all actions are cleaned up from destroyed actors in the level unload.
  • Added the ability to work with the keyboard in the behavior designer window.
  • Improved the designer windows to not reference actions and considerations by UPROPERTY pointers and reference them by their index in the behavior's list instead so we avoid any unanticipated issues with UE's slate and editor systems regarding blueprint reinstantiations and other systems.
  • WFSubSystem and Debugger now reference all WFBrainComponents by weak pointers to not cause any issues in the editor in the lyra sample.

Bug Fixes

  • Fixed thinking behavior of WFBrainComponents so after an action finishes, another starts immediately and we don't wait for thinking time interval to do the next thinking. Previously the agent had nothing to do between finishing an action and waiting for the next thinking interval.
  • Fixed the problem that the conversion code was modifying objects too many times, Now it only does its job once and go to sleep
  • A lot of other fixes and improvements in the debugger and designer windows

1.3.8 09/09/2023

Open one of the behaviors once after you did this upgrade and then save all of your behaviors when prompted by UE or by clicking File>Save All in Unreal Ed.

Bug Fixes

  • The conversion code still had issues and we fixed it and it will fix stuff automatically

1.3.7 07/09/2023

Bug Fixes

  • We created a regression in 1.3.6 where considerations where not duplicated when duplicating actions of the behaviors at startup of the runtime. That bug is fixed now. The reason was that the outer of considerations were not the actions anymore so their reference was being copied so considerations were shared between actions.

1.3.6 05/09/2023

Bug Fixes

  • The outer of consideration sub-objects were actions and it meant they would have trouble serializing when upgrading the plugin or some other times which we could not find out. Now the considerations have their outer set to their behavior like the actions.
  • GetWFSubSystem now doesn't crash if you try to get it when the world is null

1.3.5 04/09/2023

Bug Fixes

  • The Gameplay debugger now shows the active/currnet action with a different color from others and puts a * in front of it.
  • The Wise Feline debugger now highlights the active/current action too.

1.3.4 02/09/2023

Non-unity builds are disabled in this release again due to an issue which we will fix in the future.

Improvements

  • Action and consideration names are now unique at runtime.
  • WFSubSystem now fires an event when its list of WFBrainComponents is changed.

Bug Fixes

  • The debugger window now always has an updated list of all WFBrainComponents in the game.
  • Now WFBrainComponents remove themselves correctly from the WFSubSystem.

Changes

  • The WFSubSystem now doesn't use weak pointers so the array can be directly used in the SWFDebugger widget without copying elements. Since all WFBrainComponents remove themselves from the sub-system in EndPlay(), there should not be any issues.

1.3.3 30/8/2023

Bug Fixes

  • WFBrainComponents will remove themselves from WFSubSystem when they get destroyed now.

1.3.2 29/8/2023

Improvements

  • Non-unity builds are supported now. We are building the plugin with unity disabled from now on because some users wanted it.

1.3.1 26/8/2023

Improvements

Some of the stuff below both can be treated as improvements and fixes so read on.

Bug Fixes

  • Now if a WFBrainComponent is not possessed at BeginPlay, it will initialize itself at the time it gets possessed by a controller/possesses an actor depending on the fact that you attached it to an AIController or a pawn. In other cases you have to call initialize yourself but you can attach it to an ordinary actor too.
  • The class names for blueprint classes of actions and considerations no longer show a _C at the end of the class name in the behavior designer.
  • Lots of checks has been added to the designer UI and the runtime code to prevent user mistakes or our mistakes to crash the game.
  • The designer UI now turns red when it has corrupted/null actions/considerations. You should report them if you find them.
  • A button is added for cleaning up the invalid behavior assets which is not displayed by default but can be shown by checking the show debug UI buttons checkbox in Wise Feline settings in project settings.
  • Logs are added for places which something is invalid and the user needs to fix it. If you send a null action to AddAction member function, it will uses an Ensure (if you run a development, Debug, Test or shipping editor build) to report the problem to the crash reporter.

1.3.0 24/8/2023

Improvements

  • Now actions have a boolean to force interrupt lower priority actions even if they are uninterruptable. This is useful for making reactions like getting damage as an action which should always happen no matter what is being executed. The variable is bForceInterruptLowerPriorityActions.
  • The main tick of the brain component is a bit faster now since it doesn't call UpdateTargets for actions which don't have bHasTarget set. Previosly it was called and the UpdateTargets() function would have immediately return which was a waste.
  • WFBrainComponent is now blueprintable and you can inherit blueprints from it to be compatible with Lyra sample and other projects which need this (Thanks to David Radobenko from our discord community).

Changes

  • The display name of the WFBrainComponent is changed to WFBrainComponent to not be confused with UE's BrainComponent.

Bug Fixes

  • Now always an action which requires targets returns 0 as the score if it has an empty list of targets. Previously if it did not have considerations with targets, it would have returned the calculated score for the non-targeted ones.

1.2.5 24/8/2023

Bug Fixes

  • Fixed the way that right clicks were handled in the designer UI for renames and some other operations which in certain cases could cause issues.

1.2.4 21/8/2023

Improvements

  • The GetAIController method of the actions now returns the correct controller even if the brain is attached to the Pawn and not the AIController.

Bug Fixes

  • Fixed the bug where editing colors and some other properties in an action's detail panel would cause an assertion to fail
  • Fixed a bug where having a targetted action with no targetted consideration would score as 1.

1.2.3 15/8/2023

Bug Fixes

  • Fixed deleting multiple items which are selected at the same time.
  • Fixed updating the maps of considerations and actions correctly when doing copy paste on actions in the designer UI.
  • Fixed a set of other small issues

1.2.2 11/8/2023

Bug Fixes

  • Fixed a bug where blueprint recompiles corrupted our action due to using weak pointers in the editor UI instead of UProperties to hold action and consideration references.
  • Fixed a bug where a road could be moved onto itself in the editor window.

1.2.1 9/8/2023

Bug Fixes

  • Fixed a bug in the Gameplay debugger code of Wise Feline.

1.2.0 5/8/2023

Improvements

  • Added multiple action selection algorithms to the brain component so you can choose the highest scoring action (which is the old and default behavior) or choose one randomly from the top N actions. The random selection can either take action priorities into account or not.
  • Added support for action priorities. The priority of all actions is 0 by default but if you change the priorities then an action with a non-zero score will take priority over an action with any score of a lower priority. This allows you to group actions based on their importance. Priority can be changed at runtime too.
  • Added the executing action to the consideration class so when calculating consideration score, you can see what action this consideration is executing for and return a different score based on the action or the fact that this action is the action being executed in the UWFBrainComponent or not.

Changes

    • Changed the execution algorithm so the executing action will not stop if its score becomes 0 and there is no other action with a higher score to execute. The new behavior is more useful and more intuitively correct.

Bug Fixes

    • Fixed a bug where after the list of targets became empty, active target wasn't being set to nullptr.
  • Fixed the crash in visual logger when the controlled actor is null.
  • Fixed a bug where copying and pasting actions was messing everything up.
  • Fixed a crash in our GamePlay Debugger code which happend when there was no WFBrainComponents list was empty.

1.1.0 19/6/2023

  • Added the ScoreDeltaForMidActionSwitch data member to the WFBrainComponent so you can specify how much score delta is good enough to switch from an action to a better one mid-execution. This doesn't affect score comparison for the times that the current action is finished. You can finish actions by calling ActionBase::Finished().
  • Added the ability to turn off automatically evaluating action targets and the next action to execute. If you set WFBrainComponent::bManualExecution to true then you have to call WFBrainComponent::Think() yourself in blueprint or code. This is useful for turn based games or other games which AI calculations are very heavy and are only needed at specific times.

Acknowledgements

Many of our users helped us fix lots of bugs. A list of some of them follows

  • Sigurdur Gunnarsson
  • C4PT41N N3MO (discord username)
  • David Radobenko twitter
  • Ata Yuksel