{"id":15160402,"url":"https://github.com/orikome/senteai","last_synced_at":"2025-10-24T18:30:38.510Z","repository":{"id":251219149,"uuid":"836763918","full_name":"orikome/SenteAI","owner":"orikome","description":"A modular utility-based AI for Unity.","archived":false,"fork":false,"pushed_at":"2025-01-19T20:48:54.000Z","size":2671,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-31T03:36:34.428Z","etag":null,"topics":["bullet-hell","game-ai","unity","unity3d","utility-based-agent","utility-based-ai"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"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/orikome.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"publiccode":null,"codemeta":null}},"created_at":"2024-08-01T14:05:04.000Z","updated_at":"2025-01-19T20:48:56.000Z","dependencies_parsed_at":"2024-08-01T15:43:37.337Z","dependency_job_id":"b4b018d3-002d-439e-abcc-66d53b239dfd","html_url":"https://github.com/orikome/SenteAI","commit_stats":{"total_commits":228,"total_committers":2,"mean_commits":114.0,"dds":0.5,"last_synced_commit":"09123f2ae8d920cda7ed5a5e76bfc3d9dcc38a69"},"previous_names":["orikome/senteai"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orikome%2FSenteAI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orikome%2FSenteAI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orikome%2FSenteAI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orikome%2FSenteAI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orikome","download_url":"https://codeload.github.com/orikome/SenteAI/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238016463,"owners_count":19402577,"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":["bullet-hell","game-ai","unity","unity3d","utility-based-agent","utility-based-ai"],"created_at":"2024-09-26T23:00:39.592Z","updated_at":"2025-10-24T18:30:38.504Z","avatar_url":"https://github.com/orikome.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SenteAI\n![Unity Version](https://img.shields.io/badge/Unity-6000.0.36f1-blue)\n![License](https://img.shields.io/badge/License-MIT-green)\n\u003e *Empower your game with a modular AI system that simplifies decision-making and adapts to player actions.*\n\nSenteAI is an exploration of creating a dynamic, utility-based AI that can adapt to player actions. Each AI agent is composed of stackable `Module` components, which handle things such as health, vision, or the agent's brain for decision-making. \nThese `Module` components, along with `Action` components, can be easily added or customized to adjust an agent's behavior, as they are both part of Unity's `ScriptableObject` class.\n\nThe name \"Sente\" (先手) is derived from Japanese, meaning \"seizing the initiative\" or \"taking the first move.\" It reflects the idea behind the AI, where agents are proactive and continuously evaluating their environment to seize opportunities.\n\n## ✨ Features\n\n- **Modularity**: Easily stack `Module` components to create complex behaviors\n- **Utility-Based Decision Making**: AI that adapts to changing game conditions\n- **Selection Strategies**: Experiment with various decision-making algorithms\n- **Visual Debugging Tools**: Real-time visualization of agent decision-making processes\n- **Agent Factions**: Support for players, allies, enemies, and neutral entities\n\n\n## 🛠️ Prerequisites\n- Unity 6 (6000.0.36f1)\n- Git\n\n## 📚 Examples\nThe `Agent` base class is shared by both the `Player` and the `Enemy` for handling common functionality, such as executing `Module` components.\n### Agent\n```csharp\npublic class Agent : MonoBehaviour\n{\n    public List\u003cModule\u003e Modules { get; private set; } = new();\n    public List\u003cAgentAction\u003e Actions { get; private set; } = new();\n\n    public virtual void Update()\n    {\n        foreach (var module in Modules)\n        {\n            module.Execute(this);\n        }\n    }\n}\n```\n### Brain\nBoth the `Player` and the `Enemy` have a brain `Module`, which handles the execution of `Action` components such as attacking or moving.\n```csharp\npublic class Brain : Module\n{\n    public override void Execute(Agent agent)\n    {\n        if (!_cooldownHandler.IsReady())\n            return;\n\n        AgentAction decidedAction = ActionSelectionStrategy.SelectAction(agent);\n\n        if (decidedAction != null)\n        {\n            decidedAction.Execute(\n                agent.firePoint,\n                ActionSelectionStrategy.GetShootDirection(agent)\n            );\n            _cooldownHandler.Reset();\n        }\n    }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forikome%2Fsenteai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forikome%2Fsenteai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forikome%2Fsenteai/lists"}