# Getting Started

# Information “Arbor 3: FSM & BT Graph Editor”

- I want to make games using finite state machines and behavior trees!
- However, I want to code my behavior that depends on game logic!
- A graph editing window of a finite state machine and a behavior tree that can be used at such time,
  It is a simple graph editor asset that allows you to write scripts according to the behavior you want to create.

## What is finite state machine (FSM)?

- The finite state machine, and behavior in a certain state, it is a mechanism for transition from the state to another.
- For example, switches and lights.
  - The switch and the lamp there is a state of ON and OFF, will also be ON lamp if the ON switch.
  - Switch is switched to ON If you press, is the behavior to switch to OFF and press again.
  - Electric light will be the behavior to put the lights if ON.

For details, please refer to “State machine”.

## What is a Behaviour Tree (BT)?

- It is a tree structure of behaviors that makes it possible to handle the priority of action and the condition for doing actions as a set.
- For example, consider enemy AI.
  - The behavior approaching the player is done if the distance to the player is short.
  - In other cases, it will cycle around a fixed route.
  - Behaviors approaching players can be said to have a higher priority than behaviors traveling on certain routes.

For details, see “Behaviour Tree”.

# Get the Arbor

# Preparation for using Arbor

## Project creation

If you do not have a project that uses Arbor, you need to create a new project.

For details on how to create a project, see Getting started in the Unity Manual.

By choosing Arbor from the “Add Asset Package” button, you can skip importing work later.

If you can not find the Arbor package in the list, see “Importing Arbor” below.

Finally, press the “Create Project” button to create the project.

## Arbor import

This task is necessary if you did not import the Arbor package in “Create Project” or if you want to import Arbor into an already existing project.

To import Arbor, first display the AssetStore window.

From the menu, select “Window > Asset Store” or press Ctrl + 9 on the shortcut.

When the AssetStore window is displayed, click the”My Downloads” button on the toolbar to switch to download list.

Click “My Purchased” and find the Arbor package from the list.

If “Download” button is displayed, click to start downloading.

Click on the “Import” button to display the Import Unity Package window.

Import is completed by clicking the Import button at the lower right of the window.

# How to use

## ArborEditor Window

The Arbor Editor window is a window for editing graphs of state machines and behavior trees.

- ArborEditor Window

## State Machine

ArborFSM is a component that controls the state machine.

You can combine in-game logic by adding ArborFSM to GameObject and setting nodes such as State in the ArborEditor window.

- How to use State Machine

## Behaviour Tree

Behaviour Tree is a component that controls the behavior tree.

You can combine in-game logic by adding BehaviourTree to GameObject and setting nodes such as ActionNode in the ArborEditor window.

- How to use Behaviour Tree

## Data flow

Arbor has a function to pass data between nodes.

You can also use calculator nodes to perform simple calculations.

For details, refer to the “Data flow” page.

Manual : Data flow

## About Parameter container

ParameterContainer is a component used to share data between graphs.

For details, refer to the “ParameterContainer” page.

Manual : ParameterContainer

# Scripting

You can prepare your own behavior and calculation process by creating C# script.

See “Scripting” for details.

Scripting

# To the next step

- ArborEditor window
  I explains the ArborEditor window.
- StateMachine
  I explain StateMachine.
- BehaviourTree
  I explain BehaviourTree added from Arbor 3.
- ParameterContainer
  I explain ParameterContainer.
- Data flow
  I will explain passing data by data slot.

# Tutorial

There is also a tutorial that you can practice basic usage of Arbor.

Tutorial