No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-11-15 01:11:59 +00:00
addons/daisy Scaffolding: README, MIT license, Godot project, daisy addon spine + smoke test 2026-11-15 01:07:16 +00:00
docs Scaffolding: README, MIT license, Godot project, daisy addon spine + smoke test 2026-11-15 01:07:16 +00:00
simulation Scaffolding: README, MIT license, Godot project, daisy addon spine + smoke test 2026-11-15 01:07:16 +00:00
tests Scaffolding: README, MIT license, Godot project, daisy addon spine + smoke test 2026-11-15 01:07:16 +00:00
.gitignore Scaffolding: README, MIT license, Godot project, daisy addon spine + smoke test 2026-11-15 01:07:16 +00:00
LICENSE Scaffolding: README, MIT license, Godot project, daisy addon spine + smoke test 2026-11-15 01:07:16 +00:00
project.godot Scaffolding: README, MIT license, Godot project, daisy addon spine + smoke test 2026-11-15 01:07:16 +00:00
README.md Scaffolding: README, MIT license, Godot project, daisy addon spine + smoke test 2026-11-15 01:07:16 +00:00

D.A.I.Sy — Dead Air Intelligence System

D.A.I.Sy is the NPC AI system for DEAD AIR: a reusable three-layer framework in which each layer decides what the layer below it does and lets that layer decide how. It is a prototype — built to simulate the process and churn on the code algos until they are fine-tuned, before any decision-model work touches it.

The name is a daisy chain: NPCs chained to Commanders chained to the Director, knowledge linked up the chain. A daisy chain is also the joke — in a game about dead air, the AI is named after the flower that grows on graves.

The three layers

NPCEntity — execution. The small brain. It takes an order and figures out how to carry it out: navmesh pathing, line-of-sight checks, stuck handling, basic logic. It never decides what to do.

Commander (Controller) — team tactics, small picture, this moment. One Commander runs one team of NPCEntities. It works from what its NPCs know plus a bit more about the environment it is set up in — its turf, the local layout, the positions that matter there. It executes the Director's objectives and decides how.

Director — grand picture, map-based tactics. Fixed in placement and in charge of a base, it runs multiple Commanders and works from the union of what they know. It issues objective commands ("Reinforce XYZ") to specific Commanders or all of them, and intervenes only to prevent coordination failures — all Commanders reinforcing the east gate while everywhere else goes undefended. Otherwise it stays out of their tactics.

The load-bearing rule: bounded knowledge

The Commander and the Director are a hive mind, but a bounded one: they only react to what they notice. If the player stealth-kills an NPC, that NPC silently drops off its Commander's roster — no alert, no entry anywhere. If another NPC finds the body, the Commander learns it lost a unit and goes on alert. If one Commander discovers the player, the Director can put every Commander on alert. Knowledge flows up; alerts flow down. Stealth works because the hive mind's knowledge has gaps, and the gaps are exactly what no NPC has perceived.

Status

Prototype. The working spine is here: knowledge entries, the provisional order vocabulary, the NPC brain, the Commander, the Director, and one smoke scenario proving the silent-drop rule. Code first, model integration later: Commander and Director are both decision roles with a heuristic default, and a local decision model can optionally sit in either slot behind the same interface — but that is future work, tracked in the issues, not built here.

Design

The full design is docs/design.md, as filed in dead-air/game-planning #32.

Repo layout

  • addons/daisy/ — the reusable framework addon (the editor plugin is inert; the addon is not enabled in project.godot yet).
    • src/knowledge.gd — knowledge entries and provenance.
    • src/orders.gd — the provisional order vocabulary.
    • src/npc_entity.gd — the NPC small brain.
    • src/commander.gd — team tactics, ledger, alerts.
    • src/director.gd — objectives and the coordination guard.
  • simulation/ — the prototype's main scene.
  • tests/ — headless checks, starting with the smoke test.

Running the smoke test

From the repo root, with Godot 4.6.3:

godot --headless --script tests/daisy_smoke_check.gd

Expected: DAISY SMOKE CHECK PASS (N checks).

License

MIT. See LICENSE.