Daywalker
Project Summary
Daywalker is an open-source Unreal Engine 5 developer plug-in that lets teams prototype conversational NPCs locally, offline, and directly inside the Editor. The plug-in exposes a Blueprint-callable node that talks to a small local language-model runner (llama.cpp-class) on the developer’s machine. A minimal persona file and a fixed PromptComposer template shape behavior, while a simple Memory store (JSON file) preserves a few salient facts across the session so NPCs can recall prior interactions.
Daywalker targets the gap between cloud-only character engines and ad-hoc wrappers by providing a cohesive, documented, and extensible local-first workflow. The v1 deliverable includes the UE5 plug-in, runner, persona schema/loader, PromptComposer, a basic Memory slot, a small demo map with two NPCs (guard and merchant), and concise documentation. Code will be released under a permissive license to encourage adoption and community contributions.
Technical Approach
Architecture consists of five parts:
-
UE5 plug-in in C++ exposing a
DaywalkerAgent
Blueprint node (Initialize, QueryLLM) and editor settings for runner host/port and model name. -
Local runner process with
/health
and/generate
endpoints; initial output is buffered text for simplicity. - Bridge client in the plug-in with timeouts and error surfacing to the UE log.
- Persona schema (JSON) loaded at init; a fixed PromptComposer template inserts role, goals, style, and safety note.
- Memory store as a JSON file holding the last N utterances with a small size guard to keep prompts bounded.
The MVP acceptance tests are: plug-in loads; runner responds; end-to-end echo in PIE; persona alters style; memory enables a single fact recall on re-engagement. Post-v1: optional streaming, SQLite store, voice/TTS, behavior-tree hooks, and future UEFN exploration when platform pathways allow.