GithubHelp home page GithubHelp logo

bantamjoe / hivemind Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rev087/hivemind

0.0 2.0 0.0 750 KB

Behavior Tree implementation and visual editor for Unity 3D

License: MIT License

C# 100.00%

hivemind's Introduction

Hivemind

Hivemind is a Behavior Tree implementation for Unity3D that features a visual editor with runtime visual debugging capabilities.

Screenshot

Warning!

This project is in early development, and while everything described bellow is currently functional, keep in mind:

  • Many node types are simply not yet implemented (a warning will be displayed in the inspector for these) and will always return the Error status.
  • There might be many undiscovered bugs.
  • Performance will probably degrade rapidly with very large trees or many concurrent agents.

What is a Behavior Tree?

Behavior Trees are widely used in the game development industry (as well as other fields such as robotics) that allows a designer to map a complex set of branching actions, sensors and conditions that simulate inteligent behavior in an artificial agent, be it an individual game character or a virtual oponent or ally controlling multiple agents or game mechanics.

How to use Hivemind to implement Behavior Trees in your game

The Behavior Tree asset

A Hivemind Behavior Tree is a reusable custom assets that you store in your Unity project, and behave similarly to the native Animator Controller.

As any other asset, simply chose Assets / Create / Behavior Tree to create a Hivemind Behavior Tree asset in your project.

With a Behavior Tree asset selected in your Project view, you can bring up the visual editor by clicking Window / Behavior Tree Editor.

A newly created Behavior Tree will have a single "root" node. Most of the visual editor functionality is controlled via right-click context menus on the nodes and the editor background, as well as the Unity3D inspector for configuring selected nodes.

The Behavior Tree Agent component

Behavior Tree Agent is a component that can be added to any GameObject, that lets you assign an existing Behavior Tree to that Game Object to create AI enabled agents in your game.

Action Libraries

Actions are mapped to methods in classes that inherit from Hivemind.ActionLibrary. The action library methods can then be decorated with the [Hivemind.Action] attribute, making that action available in the visual editor.

Variables

Action Libraries have two inherited variables:

  • agent: holds a reference to the current agent
  • context: a dictionary-like structure that can be used to pass data between actions, instantiated once per behavior tree, per agent
Implementing Action Libraries

Actions can be as generic as the designer wants them, so that they can be reused as much as possible in the project.

An action library class is instantiated (on demand) once per agent, per behavior tree. The behavior tree will call the Start function of the action library as soon as the library is instantiated and the agent and context variables have been populated, so the user can do any necessary initialization.

Multiple Action Libraries can be used in a Behavior Tree, but each will only be instantiated once.

Actions must return a value from the Hivemind.Status enum, which include:

  • Success
  • Failure
  • Running
  • Error
Parameters

The method parameters can be used to configure an action node. Currently, only the C# primitives string and float are allowed. More C# primitives and other value types, as well as common Unity3D object references are planned for future implementation.

Context

The current Context, accessible via the context variable inherited from Hivemind.ActionLibrary, is a key-value store similar to dictionaries, but implemented as a C# generic. It has the following public methods:

  • Set<T>(string key, T value): Sets a value of type T
  • Get<T>(string key): Retrieves a value of type T
  • Unset(string key): Removes a value from the context

Action methods can be decorated with attributes that hint to Context values that method expects or populates, and these will show up on the visual editor inspector:

  • [Hivemind.Expects(string key, Type type)]
  • [Hivemind.Outputs(string key, Tyoe type)]

In the future, a design-time debugging feature will ensure context values required by an action are populated in previous actions. For the moment, a designer can use the above attributes as reference.

Debugging

To watch the execution of a behavior tree in real time, make sure you have selected a Game Object that has a Behavior Tree Agent component attached, and open the Behavior Tree Editor window. The screenshot above illustrates a runing Behavior Tree.

Additionaly, the current Context is displayed in the Behavior Tree Agent component inspector.

hivemind's People

Contributors

rev087 avatar

Watchers

James Cloos avatar BantamJoe avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.