Dynamic Behaviour

Dynamic Behaviour and Ask/Tell Dynamic Dialog have been made free! I now feel like these assets are more of a coding style than anything else, something that needs to be taught not bought.

I will also be posting some tutorials and an article all about this style of programming, which is applying Scriptable Object Architecture to conditionals.

This allows easy implementation of fuzzy pattern matching, dynamic and fuzzy state machines and behaviours, separation of data and logic, extendable Ai and allows behaviours to be created and implemented right in the game engine, even by non programmer users.

Dynamic Behaviour
Version 1.0
This asset lets you control Players and NPCs with a dynamic system using scriptable objects and fuzzy pattern matching state machine. Puts designing your Ai behaviours in the editor with an easy drag and drop process. You can create all kinds of conditions for acts that make amazing behaviours easily! Check the demo project to see this asset in action!

Conditions
A Condition is a class that inherits from ScriptableObject. Conditions have a virtual method Verify that takes an Actor in as a parameter and returns a bool. A condition can be anything a character's health, the time of day whatever you need in your game, it just has to be accessed through the actor that is calling it.
Acts
An Act is a class that inherits from ScriptableObject. It is the action you want your actor to take. Each act has list of Conditions which is used to define the state, CheckConditions method, which verifies all the conditions are met and a virtual PerformAct method. The PerformAct method must be overridden in your new Acts you write, it is where you put your code for your custom Acts.
Platformer
This project also contains a small platformer demo that can be easily extended into a full game.
Actor
This is the MonoBehaviour used to house all the components it contains the fuzzy pattern matching state machine as well as some variables that contain states and data used for actor conditions. It uses a coroutine rather than the update loop so you can control the update rate for each individual Actor.
Player
Player inherits from Actor and contains controller configuration to use with player Conditions. This is where you can add in custom Player behaviour, or you can make your own class that inherits from Actor.
NPC NPC inherits from Actor and contains Target to use with NPC Conditions. This is where you can add in custom NPC behaviour, or you can make your own class that inherits from Actor.
Controller Configuration This contains 4 directional and 8 additional keys to use for player controls. The whole system currently uses the old input system but can be easily extended to the new input or other input systems, just make your own class that inherits from ControllerInput and override the IsActivated method.