{"id":17721819,"url":"https://github.com/sinbad/suss","last_synced_at":"2025-08-09T08:32:10.375Z","repository":{"id":225357488,"uuid":"765320168","full_name":"sinbad/SUSS","owner":"sinbad","description":"Steve's UtilityAI SubSystem (for Unreal Engine 5)","archived":false,"fork":false,"pushed_at":"2024-04-12T16:24:08.000Z","size":417,"stargazers_count":15,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-04-13T17:14:43.529Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sinbad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"License.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-02-29T17:36:44.000Z","updated_at":"2024-04-15T12:07:02.442Z","dependencies_parsed_at":"2024-03-04T12:27:25.838Z","dependency_job_id":"ae9f98aa-aa18-4e16-9b82-9b71f3a15343","html_url":"https://github.com/sinbad/SUSS","commit_stats":null,"previous_names":["sinbad/suss"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinbad%2FSUSS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinbad%2FSUSS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinbad%2FSUSS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinbad%2FSUSS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sinbad","download_url":"https://codeload.github.com/sinbad/SUSS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246604610,"owners_count":20804100,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-25T15:36:22.049Z","updated_at":"2025-04-01T14:32:18.265Z","avatar_url":"https://github.com/sinbad.png","language":"C++","readme":"# Steve's UtilityAi SubSystem for Unreal Engine 5\n\n## Principles\n\nI suggest you watch this video to become familiar with the concepts of Utiliy AI:\n[Introduction to Utility AI](https://www.gdcvault.com/play/1012410/Improving-AI-Decision-Modeling-Through)\n\nIn SUSS, this is implemented as follows:\n\n* An AI can perform one of a number of **Actions**, which are the concrete steps associated with a decision.\n* 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)\n* **Actions** are scored within potentially multiple **Contexts** (e.g. doing Action 1 to Target A, or to Target B)\n* **Contexts** are generated by **Queries** e.g. currently perceived targets, available attack abilities\n* **Actions** are scored by one or more **Considerations**, the results of which are multiplied together\n* **Considerations** are calculations taking an **Input** derived from the **Context** and applying a **Curve**\n* **Inputs** can be character attributes (e.g. health, ammo), or any other value which can be derived from a **Context**\n* **Curves** can be algorithmic (linear, quadratic, exponential etc) or a custom curve asset\n* **Actions** can belong to **Priority Groups** to provide a preference hierarchy for actions\n\nThese things together mean you can make your AI agents make intelligent decisions in a way that's much \neasier to extend and incrementally add complexity to than many alternative approaches.\n\n\nSUSS comes with quite a few utilities but you can create your own versions of any of these\nelements in order to define your AI exactly as you want.\n\n## Next steps:\n\n* [Main classes](doc/MainClasses.md)\n* [Settings](doc/Settings.md)\n* [Brain Config](doc/BrainConfig.md)\n* [Brain Update Tick](doc/BrainUpdate.md)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinbad%2Fsuss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsinbad%2Fsuss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinbad%2Fsuss/lists"}