Frequently Asked Questions

GAIS_Cover
YuewuDev

Author

YuewuDev

Created: Oct 12, 2026Updated: Oct 12, 2026

Table of contents

GenericAISystem FAQ

These answers cover the most common decisions when integrating commands, squads, Movement Intent, Tactical Assignment, and networking.

Why are the docs split into concepts, how-to, parameters, and extensions?

Each role answers a different reader task: understand the boundary, perform an integration, look up a field, or change supported behavior. Debugging is kept separate so symptom-driven investigation does not replace the reference contract.

Which class should I extend for commands?

Use UGAIS_SimpleCommandDefinition or UGAIS_MultiVariantCommandDefinition for authored configuration. Override UGAIS_CommandDefinition for dynamic legality or scoring, and UGAIS_CommandExecutionDefinition for a different execution backend.

Is Tactical Assignment required for every command?

No. Use CommandSystem when the exact Unit, Command, and target are known. Use Tactical Assignment when the system must choose among candidates, targets, scores, and capacity.

Why do Stack and Queue both exist?

Stack selects the current behavior layer and fallback. Queue executes a sequence of already-decided tasks. Neither replaces Tactical Assignment or CommandSystem.

Why are there candidates but no command?

Check IntentTag, Unit mappings or Resolver, command validity, target shape, reservations, and capacity. Candidates do not imply a resolved or allocatable command.

Does Movement Intent move the unit directly?

No. It is consumed by UGAIS_UnitMovementIntentDriver and the project's movement backend.

Do I need TeamAgent if the project already has a team system?

Not necessarily. Implement UGAIS_ProjectPolicy to query the existing source of truth; use TeamAgent when the default replicated agent representation is appropriate.

Why is slot-score explanation absent in Shipping?

Detailed slot diagnostics are intended for editor/development debugging. Keep gameplay behavior independent of diagnostic-only output.

Why does Server... do nothing from a client?

The caller may not own the relevant Pawn or squad host. Route the request through the project's authoritative PlayerController or network service and validate permission on the server.