Skip to main content

Deerbrain

Based on game build 7140014 | Last updated: 2026-03-03

Overview

Deerbrain implements the decision-making logic for deer entities in Don't Starve Together. It uses a behavior tree (BT) to orchestrate actions based on the deer's current context: whether it is part of a herd or solitary. The brain coordinates movement, alert awareness, and panic responses by integrating with several components, including combat, deerherding, hauntable, and knownlocations. When active in a herd, the deer follows herd-wide directives (e.g., staying near the herd location, grazing together), while solitary deer rely on solo logic like fleeing from players and wandering.

Usage example

local inst = CreateEntity()
inst:AddTag("deer")
inst:AddComponent("deerherding")
inst:AddComponent("combat")
inst:AddComponent("hauntable")
inst:AddComponent("knownlocations")

inst.brain = DeerBrain(inst)
inst.brain:OnStart()

Dependencies & tags

Components used:

  • combat (via :HasTarget(), target)
  • deerherding (via :GetClosestHerdAlertTarget(), :HerdHasAlertTarget(), :IsActiveInHerd(), :IsGrazing(), :SetHerdAlertTarget(), herdlocation)
  • hauntable (via panic)
  • knownlocations (via :GetLocation())

Tags: Checks deer and notarget; no tags added or removed by this brain itself.

Properties

PropertyTypeDefault ValueDescription
instActor(inherited)The entity instance this brain controls.
btBTnil (set on OnStart)The behavior tree instance managing the deer's decision logic.

Main functions

OnStart()

  • Description: Initializes and assigns the behavior tree for the deer. Constructs two distinct sub-trees—solomentality for solitary deer and herdmentality for herd members—and combines them in a PriorityNode that selects the appropriate behavior based on herd participation.
  • Parameters: None.
  • Returns: Nothing.
  • Error states: No explicit error handling; assumes required components and tuning values (TUNING.DEER_HERD_MOVE_DIST, etc.) are available.

Events & listeners

  • None identified.
    This brain does not directly register or fire events; it relies on state-based checks and component callbacks within the behavior tree nodes.