I suggest you watch this video to become familiar with the concepts of Utiliy AI: Introduction to Utility AI
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.
All of the code in this repository was written by humans. No LLMs were used to generate any of the code.
Pull requests generated by LLMs will be rejected. You are free to use LLMs in your own workspace to explore a problem, but any code you submit must be written by you, not the LLM. Do not submit PRs with LLM generated descriptions, they create walls of text that are mostly waffle and nonsense and a waste of everyone's time.