
설명
A validated conversation graph, four typed condition gates, and a replay-proof transcript journal — deterministic dialogue systems on ticks.
NEXUS Dialogue is a deterministic conversation foundation for Unity. Graphs validate their own structure before the first line is spoken, a typed blackboard feeds four typed condition kinds, the router picks the first available option in canonical order, and every mutation lands in a fixed-key journal that refuses replays before they can corrupt anything. The same graph, the same variables, and the same picks always walk the same path — on every machine, at any frame rate.
- Conversation graphs that validate themselves: choice targets must resolve, self-loops are refused, speakers and conditions must exist — structural errors are caught before play, not during.
- A typed blackboard: bool, int, and string variables with declared defaults; undeclared or cross-typed access is refused, so a typo can never silently gate a conversation.
- Four typed condition kinds (BoolEquals, IntEquals, IntAtLeast, StringEquals) — pure predicates that read the board and never mutate it; gated choices re-evaluate on every pick.
- A deterministic pick law: AvailableChoices filters in canonical order; Pick advances to the resolved target and refuses unknown, gated, or ended picks.
- The DSM v1 lifecycle: Idle, Active, Suspended, Ended — illegal transitions are refused with the exact rule; Ended is terminal.
- Replay-proof conversation journal: BeginEntry refuses a repeated key BEFORE any state changes; a rolling 32-bit checksum folds every line; print it and compare logs.
- Canonical NDG v1 snapshots: byte-stable envelopes (magic|version|length|payload|checksum, FNV-1a fold) with a strict typed decoder — Ok / BadMagic / BadVersion / Corrupt / ChecksumMismatch — that never throws for bad payloads.
- Editor tools: Create Dialogue Agent, the Dialogue Designer (live state, variables, gated choices, deterministic actions), and About — all under Tools > NEXUS Dialogue.
Zero shaders, zero materials, zero rendering code. Unity 2021.3 LTS or newer, all render pipelines, all renderers. 100 EditMode tests included — run them in Test Runner right after import, no Play Mode needed.
Technical details:
Deterministic by construction: same graph + same variables + same picks = same path, same journal, same checksums DiaGraph: validated structure — targets resolve, self-loops refused, missing start refused, one validated entry point per conversation
DiaVariables: typed bool/int/string blackboard with declared defaults; undeclared and cross-typed access refused DiaCondition: four typed kinds (BoolEquals, IntEquals, IntAtLeast, StringEquals) as pure predicates over the board DiaRouter: canonical availability filter, deterministic first-available pick law, end-node detection
DiaStateModel: DSM v1 lifecycle (Idle/Active/Suspended/Ended) with refusal law on every illegal transition DiaJournal: fixed-key entries, replay refusal before any state change, rolling 32-bit checksum
DiaSpeaker: validated name registry — renames never affect routing flow
Canonical NDG v1 snapshots: byte-stable encode, strict decode with typed Ok/BadMagic/BadVersion/Corrupt/Mismatch taxonomy
Engine-free domain assembly (noEngineReferences: true) - dedicated-server projects link it directly
Unity 2021.3 LTS or newer; Built-in, URP, HDRP and custom render pipelines; zero shaders, zero materials; 100 EditMode tests included Demo graph, designer window, and four-button showcase scene included - first conversation in five minutes





