Behavior Bricks is a visual tool to create behaviors in video-games using one of the most used techniques in the industry: behavior trees. The tool aims speed up the development of these behaviors, allowing at the video-game designers (that they may not have technical expertise) to create and modify these behaviors.
A tool like Behavior Bricks, allows designers to be more involved in the development, so it increases both the team productivity and the final behaviour quality. Using this tool, the AI programmers will provide the constructions bricks of these behaviors, while the designers build the final behaviours using these bricks. These Bricks can be used in multiple behaviors, thus promoting the code reuse. Likewise, in Behavior Bricks, the behaviors are grouped into collections that can be reused in others behaviors as primitive blocks.
Behavior bricks is composed by a framework for execution of behaviors and a visual tool to create and modify them. This tool is integrated as a extension of Unity3D.
Behavior bricks emerges as a solution to a common problem in the video game development, the designers and programmers have a different knowledges and perspectives regarding its development. Behavior Bricks try to be the connecting link between both, to get a more fluid communication and that their roles are much more specific in the development process. Traditionally the programmer built the behaviors, although these behaviours had been designed by the designers. Now, with this tool, the behaviour is created by designers using its visual editor. In this way, the problems of communications between them are reduced. In addition, as the tool have two modeling paradigms: the finite state machine and behavior trees, it can be adapted to different types of behavior and the both development roles.
In Behavior Bricks exist two different primitive actions: actions and conditions. Actions are routines that perform the specific task that modifies the game environment, while the conditions checked the environment state and with this information, decide the part of behaviour should run. All the primitive actions can have input and output fields to communicate the action with others.
To define these primitives is easy for the programmers, because they only must to extend of a class and to tag his input and output fields with a C# attribute.
The interconnection between the different primitive actions is performed by a global blackboard containing the behavior. From this blackboard, the primitive actions can store and read information.