Bot and Drone System

Category: Companion Systems, Movement Architecture, and Asset Integration
Context: This page documents the bot/drone layer in Data Division. In the original notes, bot and drone were used interchangeably. Bot was the agnostic systems label; drone was the actual current implementation.

Terminology

Inside the project, Bot and Drone mean the same thing.

That naming choice was intentional. Bot was the broader term in case the project later pivoted into a different machine-companion format. In the implemented branch, the active companion was a drone.

What Was Custom vs. What Was Integrated

This is the main portfolio point:

The integrated asset side came from Drone Controller Pro and included:

What I created and layered on top before and during that integration included:

So this was not “I built an entire drone controller from zero.” It was more specific and more useful than that: I bridged a purchased controller into the project architecture, added an override path, and built the project-specific management layer around it.

BotManagerData

The management side began with BotManagerData.

BotManagerData ScriptableObject

This asset defines what bot prefabs are available to the manager:

Even though only the flyer drone reached a functional state, the architecture was already prepared for a broader bot family.

BotData

At the instance-behavior level, the companion uses BotData.

BotData movement and hover configuration

This stores values such as:

That is the useful split:

The Integrated Drone Prefab

The actual drone prefab used in the project was the integrated drone from the asset stack, partly because the originally intended drone model had unresolved LOD issues.

Integrated drone prefab

That is worth saying plainly in a portfolio context. The point is not pretending the art/prefab source was all custom. The point is how the system was made production-usable.

Component Stack

The integrated object carried both asset-side and custom-side components.

Integrated drone component stack

Visible stack highlights:

This is exactly why the system is portfolio-worthy: it shows practical integration work, not just theoretical design.

The Custom Drone Script

The custom Drone script is where the project-specific bridge becomes legible.

Custom Drone script inspector

That layer references:

That is the relevant engineering point. I did not just drop an asset into the project and call it done. I wrapped it into the rest of the game’s architecture.

Follow vs. Direct Control

BotFollow handled the drone following the player through a NavMeshAgent when the player was not actively controlling it.

When the player switched into direct drone control, the movement stack changed over to the active drone-control layer instead.

That split mattered because it let the same companion behave as:

instead of forcing one mode all the time.

graph TD
    A[Bot Spawned or Assigned] --> B{Player Controlling Drone?}
    B -- No --> C[BotFollow plus NavMeshAgent]
    B -- Yes --> D[Direct Drone Control]
    D --> E[DroneMovement Stack]
    E --> F[Perception / Scouting / Mission Task]
    C --> G[Idle Next To Player or Follow State]
    G --> B
    F --> B

Why This System Mattered

The drone was not just a gadget. It was one of the main identity pieces of the project.

At different points it was expected to support:

So even though the raw movement controller was integrated from an asset, the project-specific work around it was central:

That is why this deserves its own page in the Data Division portfolio rather than being buried inside one long technical export.