Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sinbad/suss

Steve's UtilityAI SubSystem (for Unreal Engine 5)
https://github.com/sinbad/suss

Last synced: about 2 months ago
JSON representation

Steve's UtilityAI SubSystem (for Unreal Engine 5)

Awesome Lists containing this project

README

        

# Steve's UtilityAi SubSystem for Unreal Engine 5

## Principles

I suggest you watch this video to become familiar with the concepts of Utiliy AI:
[Introduction to Utility AI](https://www.gdcvault.com/play/1012410/Improving-AI-Decision-Modeling-Through)

In SUSS, this is implemented as follows:

* An AI can perform one of a number of **Actions**, which are the concrete steps associated with a decision.
* Potential **Actions** are **scored** against each other, and one of them will be picked based on this score (plain best, or weighted random with a cut-off)
* **Actions** are scored within potentially multiple **Contexts** (e.g. doing Action 1 to Target A, or to Target B)
* **Contexts** are generated by **Queries** e.g. currently perceived targets, available attack abilities
* **Actions** are scored by one or more **Considerations**, the results of which are multiplied together
* **Considerations** are calculations taking an **Input** derived from the **Context** and applying a **Curve**
* **Inputs** can be character attributes (e.g. health, ammo), or any other value which can be derived from a **Context**
* **Curves** can be algorithmic (linear, quadratic, exponential etc) or a custom curve asset
* **Actions** can belong to **Priority Groups** to provide a preference hierarchy for actions

These things together mean you can make your AI agents make intelligent decisions in a way that's much
easier to extend and incrementally add complexity to than many alternative approaches.

SUSS comes with quite a few utilities but you can create your own versions of any of these
elements in order to define your AI exactly as you want.

## Next steps:

* [Main classes](doc/MainClasses.md)
* [Settings](doc/Settings.md)
* [Brain Config](doc/BrainConfig.md)
* [Brain Update Tick](doc/BrainUpdate.md)