Game Development Reference
In-Depth Information
Decision trees
Decision trees will be the first structure we'll implement and are, by far, the easiest way to
understand how a decision was made. A decision tree is composed of branches and leaves.
Each branch in the tree will wrap an evaluator, while each leaf will be composed of an ac-
tion. Through a sequence of branch conditions, our decision tree will always result in a fi-
nal action that our agent will perform.
To create a decision tree structure, we'll implement an update loop for our tree, which eval-
uates the root branch within the tree and then proceeds to process the resulting action. Once
the action has been initialized, updated, and eventually, terminated, the decision tree will
re-evaluate the tree from the root branch to determine the next action to be executed:
DecisionTree.lua :
require "Action"
DecisionTree = {};
function DecisionTree.SetBranch(self, branch)
self.branch_ = branch;
end
function DecisionTree.Update(self, deltaTimeInMillis)
-- Skip execution if the tree hasn't been setup yet.
if (self.branch_ == nil) then
return;
end
-- Search the tree for an Action to run if not currently
-- executing an Action.
if (self.currentAction_ == nil) then
self.currentAction_ = self.branch_:Evaluate();
self.currentAction_:Initialize();
end
local status =
Search WWH ::




Custom Search