v0.10.0¶
This is the first release you can ship to players. Packaged Unity and Unreal games now run a player server that sends no telemetry, loads knowledge-base indexes baked at build time, and never downloads models. The plugins install from GitHub: Unity by Git URL, Unreal as prebuilt zips for UE 5.7 and 5.8. A Welcome window walks you through the licence and the server. The Dialog Lab gains typed checks, multi-dialogue suites, a statistics view and a headless mode for CI, and canned lines, intent instructions, tool descriptions and attribute prompts can now be localized.
Canned responses and intent instructions change field names, telemetry settings change, and the server starts only after you accept the licence. See Breaking changes and behavior changes before upgrading.
Highlights¶
- Packaged games are shippable. Unity and Unreal player builds launch the Client Prod server, which is built without telemetry and only loads what you ship. See Telemetry.
- Indexes baked when you build. The Unity and Unreal builds bake every knowledge-base index and hotword vocabulary before staging, and fail the build if one cannot be baked. See Indexes are baked when you build.
- Install from GitHub. Unity installs by Git URL and downloads its server once; Unreal ships prebuilt plugin zips that work in Blueprint-only projects. See First Inference in Unity and First Inference in Unreal.
- Welcome window and licence. Accept the Tryll Runtime Licence and set up the server from one window in Unity and Unreal. See Auto-launch the Server.
- Dialog Lab for CI. Typed checks, Dialog Suites, a Statistics view with 95% intervals, and a headless command-line run that gates CI on pass-rate thresholds. See Compare dialog variants and Run the Dialog Lab in CI.
- More text you can localize. Canned response lines, intent instructions, tool descriptions and
ClassifyAttributesLLMprompts now take Text IDs. See Localize prompts with your localization system. - Report a bug from the editor. Open the logs folder in one click and post the report in the Discord Bug Hunt channel. See Report a bug.
Shipping your game¶
- Packaged players run the Client Prod server. Unity and Unreal player builds copy the Client Prod server next to the game and launch it with
--mode client-prod. It sends no telemetry and has no setting that turns telemetry on. The editor keeps the Client Dev server. See Auto-launch the Server and Run the Tryll server. - Indexes are baked at build time. A shipped game never builds a knowledge-base index. Each knowledge base ships its
.usearch, a.bm25keyword index and a.bake.jsonrecord of what they were built from, and a speech model that uses hotwords ships itsbpe.vocab. A missing file, or one that does not match its records or embedding model, is an error. Unity and Unreal Windows builds runtryll_server --bakeon the storage folder before staging and fail the build on any error. For a C++ or Python app, runtryll_server --bakeyourself before packaging;--checkverifies without writing. See Ship storage folders for builds. - Players do not download or delete models. In
client-prod,DownloadModelandDeleteModelfail with6009 ModelManagementDisabled. Ship every model with the game. See Model Management.
Unity package¶
- Install from GitHub by Git URL. In the Package Manager, use + → Install package from git URL… with
https://github.com/TryllEngine/tryll-unity-plugin.git#v<version>. The package does not carry the server: the Welcome window downloads the matching server once and checks its SHA-256. Unity 6.3 (6000.3) or later and Git are required. See First Inference in Unity. - Git installs work in deeper project folders. No path in the package is longer than 120 characters now, so installing from the Git URL no longer fails with "Filename too long" when the project path is long.
- The bundled MackySoft copy is private to Tryll. Tryll's copy of SerializeReferenceExtensions is now the
Tryll.MackySoft.SREassembly, and your own scripts no longer see it. A project can now also install the upstream package. If your scripts used[SubclassSelector]or[AddTypeMenu]through Tryll's copy, install the upstream packagecom.mackysoft.serializereference-extensions. - Unity Localization no longer breaks the build. With
com.unity.localizationinstalled, the Tryll package failed to compile. It now references the Localization assemblies, so the Unity Localization Text Provider works. See Localize prompts with your localization system.
Unreal plugin packages¶
- Install from GitHub. The Unreal plugins are released at github.com/TryllEngine/tryll-unreal-plugin. See First Inference in Unreal.
- Prebuilt plugin zips per Unreal Engine version. Each release has
TryllClientfor UE 5.7 and 5.8 (with the Tryll server inside),TryllMetaHumanLipSyncfor UE 5.7 and 5.8, andTryllMCPfor UE 5.8. Unzip them into your project'sPlugins/folder; Blueprint-only projects work. Packaging a game still needs Visual Studio 2022. - Help & Community window in Unreal. Window → Tryll → Tryll Help & Community shows the client and server versions and the protocol, checks for a newer release, and links to the docs, support and the community. It also opens the Welcome window and the logs folder.
Welcome window and licence (Unity and Unreal)¶
- Tryll Welcome window. Unity: Window → Tryll → Welcome. Unreal: Window → Tryll → Tryll Welcome. It has two setup steps, Licence and Server, plus links to the docs and the community. It opens at startup until you accept the licence, and after a plugin update. Tick Show this window at startup to see it every time.
- Accept the licence to start the server. The editor starts the server only after you accept the Tryll Runtime Licence. Until then, a start fails with "Accept the Tryll Runtime Licence in the Tryll Welcome window first." and the Welcome window opens. Batch mode, commandlets,
-unattendedruns,TRYLL_SERVER_MODE=tryll-dev, a server you start yourself and packaged players are not gated. In Unreal, Play → Standalone Game is gated like the editor. See Auto-launch the Server. - Read the licence shows the plugin's
LICENSE.mdin a read-only window. When the licence text changes, you accept again. Withdraw takes the acceptance back and stops the editor's server. - One licence file in every package. The Unity and Unreal plugins, the server download and the Python wheel each carry
LICENSE.md, and the docs show the same text at Tryll Licence. The text is a placeholder until the first public release.
Telemetry¶
- Telemetry is part of the licence. Accepting the Tryll Runtime Licence means agreeing to telemetry, and it is always on in the editor. There is no separate choice. Telemetry on the Welcome window's licence step opens the docs page. See Telemetry and the licence.
- Your shipped game sends no telemetry. Telemetry runs only in the editor. The server that ships with your game is built without it. See In your shipped game.
- Detail levels. The editor sends content-free
basictelemetry by default. Project Settings → Telemetry Level choosesBasic,Turns, orFull; the editor passes it as--telemetry-levelon the next launch.offis command-line only (--telemetry-level off) and Client Dev raises it tobasic. Inserver-config.json,telemetry.levelreplacesactivity_enabledandinclude_user_content. See Telemetry and Server Configuration. - Server install event. Unity sends one anonymous
tryll.server.installevent after each server install. Unreal sends it once per plugin version, after you accept the licence. See Server install event. GameNameis a project label. In Unity and Unreal runtime settings it is the session name and the fallback for--project-name. Telemetry groups by a hidden project id instead. See TryllRuntimeSettings.
Dialog Lab (Unity and Unreal)¶
- Typed checks. A Dialog Script step now has a Checks list: add any number of checks, each with its own type and fields, including several of the same type. New check types: Regex ▸ Match, Word count with a minimum, Calls tool and Calls no tool. Every check has an Enabled toggle and an optional Note label. See Add deterministic checks.
- Global Checks replace Global Regex Forbid, take any check type, and apply to generated turns only.
- Seeded lines are checked against Global Checks. A seeded assistant line that breaks a global text check now gets a warning before Run and in the run's notes, since global checks never count seeded turns.
- Dialog Suites. Drop a Dialog Suite (an ordered list of Dialog Scripts) on the Lab to run several dialogues in one run. Each dialogue gets a fresh agent, the Grid groups rows by dialogue with foldable headers, and each dialogue's results appear as soon as it finishes. See Run several dialogues at once.
- Statistics view replaces Summary: per-variant turns passed, checks passed and clean dialogues, each as a percentage and a count, with 95% intervals computed across seeds (from 5 seeds per variant), a difference-from-baseline mode, and tables of where turns fail and which check types fail. Grid is now the default view. See Compare variants with Statistics.
- Headless mode for CI. Run a Dialog Script or Suite from the command line with one agent and N seeds (Unity:
-executeMethod Tryll.Client.Editor.TryllDialogLabBatch.Run; Unreal:-run=TryllDialogLab). The run writes the JSONL export and a summary, and exits0,1or2against pass-rate thresholds in a JSON config. See Run the Dialog Lab in CI and Dialog Lab headless run. - Export format 4 records every check outcome, passes included. Import still reads format 3, and the Unity and Unreal Dialog Labs now read each other's exports.
- Existing Dialog Scripts convert automatically when loaded. In Unity, Assets ▸ Tryll ▸ Upgrade Dialog Scripts writes the converted form to disk; in Unreal, resave the converted assets.
- Variant colours no longer include green or amber, so they cannot be mistaken for pass/fail.
- Mouse wheel over the Grid scrolls down. It used to scroll the columns sideways first when the pointer was over a row of answers. Scroll the columns with the header's scrollbar (or Shift+wheel in Unity).
Localization¶
- More fields take a Text ID. Besides prompts, you can now tick Localize text on a tool description and, on
ClassifyAttributesLLM, on the system prompt, the statement and each choice prompt. Each canned response line and each intent-to-instruction line has its own text, which can be a Text ID. See Localize prompts with your localization system. - What reaches a live agent. A language change rewrites an attribute's system prompt, statement and choice prompt from the next turn. Tool descriptions, canned lines and intent instructions belong to structural lists, so their Text IDs are resolved when the agent is created; recreate the agent to pick up a new language.
- Unity raises
LocalizedTextApplied. After a language change, Unity now raisesLocalizedTextAppliedonce an agent's new prompts are acknowledged, like Unreal'sOnLocalizedTextApplied, so a prefill or reset can wait for them. Each agent gets exactly oneLocalizedTextAppliedorLocalizedTextFailedper language change; after a server rejection, nodes the server accepted keep the new language.
Workflow editors (Unity and Unreal)¶
- Node fields are grouped. The inspectors group every node's fields under Input, Model, Prompt, Storage, Behavior, Output and Advanced, with Advanced folded by default. The node reference pages use the same groups, and every field description is rewritten as author-facing text. See Workflow Nodes.
- A docs button on every node. The node inspector has a ? button, and the canvas node an Open Documentation item, that open the node type's reference page.
Reporting bugs¶
- Open the logs folder from the editor. Window → Tryll → Open Logs Folder (Unity) and Window → Tryll → Open Tryll Logs Folder (Unreal) open the folder where the server writes this project's logs and crash dumps, even when the server is not running. The Help & Community window has the same button, and a Report a bug button next to Join our Discord. See Report a bug.
- Post the report in Discord. Report a bug sorts bugs by kind, says which evidence each needs, and points at the public Bug Hunt channel. Attach the logs and the crash dump. If a file has private information you do not want posted there, leave it out and say so; we will contact you for it.
Models and catalogs¶
- Four models leave the public model catalog. NVIDIA Orchestrator 8B and Qwen2.5 3B Instruct allow only non-commercial use. Vikhr 7B Instruct 0.4 and SenseVoice Multilingual stay out until their licences are confirmed. If a graph or a project setting names one of them, pick another model in the Model Manager.
Documentation¶
- New guides: Run the Dialog Lab in CI, Score several attributes of one line, Give an NPC a memory it can search and Report a bug, in a new Help and support group.
- New reference pages: STT Models (offline versus streaming recognizers, languages, hotword support) and Dialog Lab headless run, plus the Tryll Licence.
- Every client in more guides. Unity, Unreal, C++ and Python tabs were added where they were missing, including playing TTS audio from C++ and Python in Add voice output to an agent, and reconnecting after a dropped connection in Connect and manage a session.
- Corrected reference pages. Error Codes now says which requests return
6005and the 7xxx and 8xxx codes, Server Configuration gives the real defaults for the released server (workflow.tool_call_pause_timeout_msis0, wait forever; only a source checkout sets2000), and Mermaid diagrams render on every page.
Breaking changes and behavior changes¶
- The schema changed — rebuild every client. Localizable canned lines and intent instructions change shape. Upgrade the server and every client together (Unity, Unreal, Python, C++). Mismatched peers fail at connect: the client rejects the server's protocol version with
5004 ProtocolVersionMismatch. See Wire Protocol. CannedResponseandIntentToInstructionlists are renamed.CannedResponse.inline_stringsis nowlines, andIntentToInstruction.inline_stringsis nowinstructions(paired by position withinline_keys). Each entry can be inline text or a Text ID. Code that builds these nodes must set the new fields; an older peer would see an empty list.RegexGuardrail.inline_stringsis unchanged. See Canned Response and Intent to Instruction.- Accept the licence before the editor starts a server. Until you accept the Tryll Runtime Licence in the Welcome window, auto-launch in the editor (and Unreal Play → Standalone Game) fails. CI that runs the editor interactively must accept it once, or run in batch mode,
-unattended, or withTRYLL_SERVER_MODE=tryll-dev. - Telemetry settings changed.
--disable-telemetryis removed; use--telemetry-level off(Tryll Dev only, raised tobasicin the editor).telemetry.activity_enabledandtelemetry.include_user_contentare no longer read; usetelemetry.level. A sink'sendpointandproject_api_keyare no longer config fields. See Telemetry. - Shipped games must carry baked indexes. A packaged player refuses a knowledge base whose
.usearch,.bm25or.bake.jsonis missing or out of date, and a hotword model without itsbpe.vocab. The Unity and Unreal builds now fail when a knowledge base or speech model cannot be baked, for example when its embedding model is not downloaded or its config has noindex_file. - Unity is now installed by Git URL and needs Unity 6.3 or later and Git. The server is no longer inside the package; the Welcome window downloads it.
- Scripts that used Tryll's MackySoft copy (
[SubclassSelector],[AddTypeMenu]) need the upstreamcom.mackysoft.serializereference-extensionspackage. - Four models left the public catalog. NVIDIA Orchestrator 8B, Qwen2.5 3B Instruct, Vikhr 7B Instruct 0.4 and SenseVoice Multilingual no longer ship. Replace them in graphs and project settings.
- Dialog Lab: Global Regex Forbid is now Global Checks, and exports are format 4. Existing scripts convert on load; resave them.