Compatibility
The Unity releases this package supports, the versions it declares, what ships inside it, and which powers differ between the GameObject and entity hosts.
On this page
Two numbers decide whether this package installs cleanly: your Unity version and the versions in the package manifest. Both are short lists.
Unity 6.5 or later, official releases only. The manifest sets 6000.5 as the minimum, and alpha or beta builds are outside the supported set. A later official 6.5 release is fine.
Screenshots and captures on this site record the exact editor version they were taken on, so you can tell a product change from a Unity change.
What the manifest declares
Section titled “What the manifest declares”Package io.bitquirky.behavior, version 0.6.0, depends on:
| Dependency | Declared version |
|---|---|
io.bitquirky.graph |
0.2.62 |
| Burst | 1.8.29 |
| Collections | 6.5.0 |
| Mathematics | 1.4.0 |
| Entities | 6.5.0 |
Unity resolves all five for you. Addressables stays outside that list: the optional BitQuirky.Behavior.Addressables assembly compiles when the Addressables package is present, and the rest of the product works without it. See Addressables and builds.
That table is a dependency contract, and it is the set we test against. Render pipelines, target platforms, Unity patch releases, and third-party packages are yours to verify in your own project, so keep the installed manifest beside any support ticket.
What is inside the package
Section titled “What is inside the package”The package ships as Unity assemblies with the full C# source of its runtime and its editor, so you can read the code that decides what your graph does. Seeing the source grants no extra rights: LICENSE.md inside the package is the authority on use, copying, modification, and distribution.
Install and update through Window > Package Manager or the project manifest your team already uses. Copying individual files into Assets/ separates the editor, the runtime, the Graph dependency, the generated code, and the build validators, which ship and move as one unit. Install has the full procedure and Upgrading has the version change.
GameObject and entity hosts
Section titled “GameObject and entity hosts”Both hosts run the same execution core and the same graphs you author in the same editor. What differs is composition and how much the editor can do to a running instance.
| Capability | GameObject | Entity |
|---|---|---|
| Runtime owner | A Behavior Agent component | A BehaviorEntityRuntime for a World you supply |
| Scheduling | Update, FixedUpdate, or your own TickOnce call |
Your system calls the graph tick |
| Managed values | Supported through managed composition | Unsupported in entity blackboard storage |
| Unity object references | Supported where the binding contract permits | Unsupported in entity blackboard storage |
| Member invocation | A generated managed provider | A generated entity binding set and scheduler |
| Live selection | The exact GameObject or component | The exact entity row in Unity’s Hierarchy |
| Pause and Step | One ordinarily scheduled follower | Unity’s Play mode, globally |
| Breakpoints | Per follower, on entered nodes | Unsupported; see what it does not do yet |
| Live value edits | Eligible surfaced properties and fields | Observing only |
One project can run both. Horde Survival runs entity graphs for its crowd; the other three samples run GameObject graphs. One graph instance has exactly one host, checked before it runs, which Runtime explains.
Entity blackboard storage holds unmanaged data, which rules out managed text, your own classes, Unity object references, interfaces, and dictionaries. Entity variables lists what a value shape has to satisfy, and entity bindings covers the target modes that path offers.
What a binding can and cannot carry
Section titled “What a binding can and cannot carry”The supported surface is wide: exact overloads, optional and defaulted parameters, in, ref, out, parameter arrays, closed generic methods, C# events, readable UnityEvents, fields, properties, methods, and the supported collection shapes. Bindings teaches all of it.
Four value shapes are refused on either host: an open generic type, a ref struct, such as Span<T>, a delegate, a pointer. So is a managed constant other than a string, and so is anything the chosen host cannot represent exactly. A non-public member binds only when that exact declaration carries [BehaviorMember], and every runtime call is generated, so nothing is rediscovered for you after a signature changes.
- What it does not do yet: the nodes and controls this release leaves out.
- Upgrading: moving a project to a newer package.
- Performance: the measured Horde Survival figures, with the machine they came from.