Enable Compensation Factor¶
If your agents have decisions that contain a lot of considerations, you should enable Compensation Factor to ensure the decision scores are not quite low.
For more information about Compensation Factor, see: Compensation Factor
Enable KeepRunningUntilFinished¶
If your agents have an important decision that you don’t want to interrupt while it is running, regardless of whether there is another decision with a higher score, you can enable the KeepRunningUntilFinished option of the decision to prevent the agents from making a new decision while it is running.
For more information about KeepRunningUntilFinished, see: KeepRunningUntilFinished
Use MomentumBonus¶
If you want to prioritize the last chosen decision-target pair in the next decision-making round, you can set the Momentum Bonus to a value greater than 1.0 (usually between 1.1 -> 1.25). In the next decision-making round, the last chosen decision-target pair will be prioritized by multiplying its score by the Momentum Bonus, increasing its chances of winning and thereby reducing oscillation between nearly equal decision-target pairs.
For more information about MomentumBonus, see: Momentum Bonus
Add Fallback Decision¶
You should add a fallback decision with a constant score so that your agents always have a decision to run.
- For example, in our example scenes, we always add the Idle decision with a score of 0.1. Therefore, when our agents find themselves in a situation where they don’t know which decision to choose, they will be idle.
Use Decision Weight¶
If you want to prioritize one decision over another, you can adjust its weight to be higher than the other.
For example:
- Normal Layer’s Weight: 1.0
- Combat Layer’s Weight: 2.0
- Urgent Layer’s Weight: 3.0
For more information about Decision Weight, see: Decision Weight
Use empty TargetFilter list for Decisions that target all Entities¶
If the targets of your decision are all entities in the current utility world, you can leave the TargetFilter list of the decision empty. For decisions that have targets and an empty TargetFilter list, the utility world will pass all its entities to the decision.
How Tos¶
How to enable/disable a decision based on a condition?¶
Add a boolean consideration that returns 1.0
(true) or 0.0
(false) depending on the condition result.
How to enable/disable decisions based on states¶
Add a state consideration to each decision. Check the recipe for a state consideration here: Common Consideration Recipes
How to add some randomness to a decision?¶
Add a random consideration to the decision. Check the recipe for a random consideration here: Common Consideration Recipes
How to reduce the oscillation of scores between decision-target pairs¶
For more information about how to reduce the oscillation of scores between decision-target pairs, see: Oscillation between decision-target pairs
If you like Utility Intelligence, please consider supporting it by leaving a 5-star review on the Asset Store.
Your positive feedback motivates me to keep improving and delivering more updates for this framework.
Thank you so much for your support. I love you all! 🥰

Created : January 18, 2025