-
-
Notifications
You must be signed in to change notification settings - Fork 0
Features
13976_gamedev (Student) edited this page Jul 30, 2026
·
3 revisions
- Data-driven actions: ActionDefinition ScriptableObjects with inline, polymorphic Conditions, Costs, Effects and Targeting. Deriving one class adds your own action piece, which then appears automatically in every editor menu.
- Clean runtime: an observable state machine (Queued, Validating, Reserved, Approaching, Running, CoolingDown, Succeeded, Failed, Cancelled, Blocked), with priority command queues, interruption, target reservation and cooldowns.
- Approach phase: actors walk to their target through a pluggable IMovementAdapter (transform and NavMesh adapters included). Costs are only paid on arrival, so a failed trip charges nothing.
- Job chains: a multi-step job such as "gather then deliver" runs as a single job, and a failed step stops the chain.
- Carrying:
ICarriermakes a load physical. Colonists hold what they haul, up to a capacity, with pick-up and drop-off reporting how much actually moved and a stockpile descriptor to put it down. Goods no longer teleport through a global store, so a load can be interrupted, seen and saved.
- Job Board: colony-sim style shared work. Jobs are posted, idle workers claim them by priority then distance, and failed runs retry before being abandoned.
- Work priorities: per-actor tag-matched weights, where a weight of 0 means "never do this work".
- Day cycle and schedules: an in-game clock with hour and day events, plus tagged shift slots (night shifts wrap over midnight). Hours no slot covers are off duty, and off-duty actors stop taking jobs.
- Skills: tagged skills with levels and experience, so practiced work finishes faster over time.
- Simulation speed: pause, x1, x2 or x3, without touching Time.timeScale.
- Simulation budget: a ceiling on how many actors think per frame, visited round-robin, with the interval stretched by distance from the camera. Actions already running still tick every frame, so movement stays smooth at any distance.
- Group orders: box selection, shift-click and formations (grid, line, circle, wedge), so ten units sent to one point do not fight over one point.
- Save and load:
StarhelmPersistencecovers the clock, orders, the job board, cooldowns, skills, work priorities and carried loads. Anything of yours joins the same save file by implementingISnapshotParticipant.
Utility AI now lives in the framework itself (Need, NeedSet, UtilityOption, UtilityScorer, UtilityBrain), with ResponseCurve shaping how urgency rises - linear, quadratic, inverse quadratic, logistic or step. Urgency used to be linear everywhere, which is why utility AI felt flat: every option rose at the same rate, so the same one always won.
Utility AI driven by dynamic needs, or fully visual Behavior Graphs (Sequence, Selector, Action, Condition, Wait). Every node can be freely renamed, and edges represent the logic. A demo graph ships with the framework, and any actor can be bound to a graph by dropping it on the editor's Drive this AI field.
- Cues answer triggers such as on.spawn, on.death, on.select, narration or any gameplay event, each with delay, duration, cooldown, priority and repeat limit.
- Speech Profiles give a character its own name and lines. Dragging an AI onto the Dialogue panel creates and wires its profile automatically.
- The framework only emits SpeechRequests; your game is free to render them however it likes.
- Live "why" debugger: per-actor decision timelines with reasons, plus pause, slow motion, fast forward and order cancellation. A timeline exports as text, so a tester can attach their last hundred decisions to an issue.
- "Why not?" analysis: the opposite question, answered without running anything - every gate between an actor and an action, with its verdict.
- Scene-view gizmos: target lines by state, reservation rings, arrival radius and per-actor labels.
- Live actor inspector: shows action, progress, queue, record, duty and skills while playing.
- Steady-state execution is allocation-free (pooled instances and contexts, tags normalized once, traces gated out of release builds).
- No coroutines: everything is tick-driven, deterministic and pausable.
- Zero external dependencies, no experimental Unity APIs, and 152 tests (146 EditMode plus a PlayMode assembly that drives the executor over real frames).
See Editor Windows for the tools used to author and debug all of the above.