Repository navigation
SkyrimNet Beta28
SkyrimNet Beta28 @everyone
Highlights: Overhauled conversation system, memory recall finds the memory you are talking about about twice as often, ElevenLabs, Inworld and Pocket TTS significantly sped up, the dashboard and chat run on Magelight UI, OmniSight improvements, local Parakeet speech-to-text, improved local model support, and support for Inference through Fateless.Ai.
Conversation System Overhaul @MinLL
Ground-up rewrite of our conversation system, aimed to improve the relevancy and pacing of conversations - particularly during busy moments (a fight, a trigger firing again and again, a crowd reacting). NPCs no longer stack up lines that keep playing long after the moment has passed. Speech takes turns by priority, and a lone reply starts as fast as before.
Something feel off? Use the /report-issue command on Discord and attach your SkyrimNet.log.
Fateless AI Inference @MinLL
I have launched my own inference service through Fateless AI, intended to provide a curated "it just works" experience with no setup required. I have opened this up to a handful of alpha testers, but will be launching this broadly in the coming days. This replaces the need to have an OpenRouter / cloud provider accounts, configure api keys, workspace id's, etc.
This is, and always will be completely optional. We will always support the existing model where users are free to bring their own key, or use local models. That will never change. This new offering provides an (Optional!) paved path for people that want things to just work with as little setup as possible, while also providing considerable speed and reliability improvements over what most are accustomed to today.
More information on this coming soon.
Improved NPCs recall for memories @Dekana
Ask an NPC about something they remember and the memory under discussion reaches the reply about twice as often. On two real saves, English went from 33% to 65% and Russian from 20% to 60%.
- Your line: the memory nearest what you said stays in context even when it scores under the old thresholds. Memory → Player Input Memory Floor (default 30%) leaves it out only below the floor; 0 keeps it always.
- Memory → Related Player Input Memories (default 2) and Related Memory Cut (default 75%) bring the closest memories along, so an NPC asked how a matter started also sees how it went.
- The conversation: Memory → Conversation Search has its own Similarity (default 80%) and Min Relevance (default 0, off). Similarity Threshold and Min Relevance Score under Retrieval Thresholds apply only to the search with your line.
- Conversation Search → LLM Search Query (default on). Off saves one meta-model call per reply and searches the last 8 lines instead, at a little less recall (English 51% against 65%, Russian 53% against 60%).
- Russian and Japanese games: set Player Input Memory Floor to 15%, and with the default embedding model (Bekko) set Conversation Search Similarity to 70%. With Granite keep 80%, or 85% if unrelated memories come up.
Decision Gate for memory recall @Dekana
New experimental memory recall model powered by a JEv like classfier. A decision model picks which recalled memories go into the reply. It pulls relevant memories somewhat more often and adds far fewer irrelevant ones. Off by default: Memory → Decision Gate.
- Needs a decisions model. Without one enabled, or when no memory fits, recall runs as before.
- Min Probability (default 70%): lower recalls more, with more misses.
- Support Picks (default 2): how many same-matter memories are added; 0 adds none.
- One extra decision request per player line, about 0.2 to 0.4 s. It starts early, but slightly slows down responses.
- While it is on, it decides instead of Player Input Memory Floor.
Faster speech: ElevenLabs, Inworld and Pocket TTS @MinLL
Significantly sped up the audio playback of ElevenLabs, Inworld, and Pocket TTS.
TTS engine overhaul @MinLL
Refactored our internal TTS surfaces to make them easier to maintain. They now behave in a more consistent and uniform manner, with a lot of jank / bugs fixed.
Local Parakeet speech-to-text @langfod
Transcribe your voice on your own machine with NVIDIA Parakeet (parakeet-tdt-0.6b-v3) instead of Whisper. Pick "Local Parakeet" as the STT Engine on the Speech-to-Text page.
- q8_0 (default), q4_k, q4_0 and f16 models; the model downloads when selected.
- Runs on the CPU by default. Under Advanced, turn on GPU Acceleration and choose the GPU Device and CPU Threads, as for Local Whisper.
- English and 25 European languages. Parakeet takes no language setting and no custom vocabulary.
- Local Whisper's GPU Device list stays visible, greyed out, while GPU Acceleration is off.
Omnisight Updates @MinLL
When an NPC's (or your own) description misses what makes them distinctive, press the capture key (Numpad 0). A dialog opens with whoever is under the crosshair, yourself and the place you are in, each with its current description: take a quick capture, walk around the subject for a multi-angle capture, or regenerate the description from the saved images.
- Multi-angle: choose it, close the dialog, press the capture key once per angle (up to 6, or 10 for a place), and hold it to review the shots before they are described in one call.
- Character captures are cropped to the character, up to 4K, with a close-up of the head, so horns, circlets and face details come through.
- Captures you take yourself use the Vision - Quality model (Gemini 3.8 Flash on OpenRouter by default; AI Models page); background captures keep Vision. Character captures send bigger images and a second picture, so each costs more.
- Every character now has a clothed and a nude capture; prompts use the one matching what they wear, and the bio's appearance until a state is captured. The AI Vision page labels each (with a filter); the Characters page's Captures tab shows both.
- "This place" captures the whole town or dungeon (Riverwood, not one of its cells); open country stays per cell. Hand captures are never replaced by automatic ones, and a recapture keeps a description you edited and locked; only Regenerate replaces it.
- Ctrl + the capture key skips the new capture dialog, as before. VR keeps the direct capture.
In-game dashboard and chat on Magelight UI @Severause
The in-game dashboard and chat run on Magelight UI as well as PrismaUI, on Skyrim VR too, and feel noticeably smoother. Magelight 0.30.1+ runs and 0.31.9+ is recommended; an older version logs the fixes it lacks.
- With both installed, SkyrimNet uses Magelight.
ui_host: prismauiinDashboard.yamlkeeps PrismaUI;auto(the default) stays on PrismaUI when that Magelight lacks a fix your setup needs. Restart after. - They open once a save is loaded; Escape and Magelight's toggle key (PageUp) close them, and the fullscreen dashboard freezes the world behind it (0.31.0+, flat Skyrim). The first open shows Home already filled; on flat Skyrim with 0.31.11+ it is drawn in the background so it opens instantly (
ui_prepaint: falseturns this off). - While another mod's Magelight menu is open, SkyrimNet's hotkeys do nothing and GameMaster and OmniSight pause, as for a PrismaUI menu.
- VR with 0.31.4+:
vr_dashboard_chordandvr_chat_chordbind opt-in controller chords (for examplegrip+menu) that open and close each view. - 0.31.9+: the VR keyboard and Magelight's cursor take the dashboard's colour theme. Dragonborn keeps Magelight's cursor with a gray keyboard; a theme hard to read on the keys, and the chat overlay, keep the default keyboard.
- Dashboard console errors and warnings always reach SkyrimNet.log; other lines need
ui_console_forward: true.
Expanded Characters page @zevck
Each character's bio, events, memories, diaries, captures, game data and voice settings are together on one page.
- The bio shows each block separately with no Inja: conditional logic is resolved into a plain-text preview, and each block can be edited directly. The old editor opens from
</>above the bio. - Update Bio and Dynamic Update sit above the bio, and the bar shows a dynamic bio's progress while it generates. The rest of the buttons are in the context menu at the top right.
Clearer plugin publishing @zevck
My Plugins distinguishes New Bundle, Publish Bundle and Publish Listing.
- Markdown previews for plugin descriptions and changelogs before publishing, and a changelog character counter.
- Changing the version number is marked optional.
- Plugin pages and the Installed Plugins Info tab show the latest release notes first, with older versions collapsed.
- Each plugin's actions on My Plugins are in one menu with labelled actions, replacing the row of icon buttons.
For mod authors: triggers and narration take turns @MinLL
Every DirectNarration, trigger or reacted-to event used to start its own LLM request on arrival: five in two seconds made five lines in parallel that played back to back for half a minute. Now each call is a request to speak. A conversation has at most one line playing and one being prepared, and waiting requests are ranked, merged and expired.
- P0-player: player input and Continue Narration. Waits 30 s; never merged or capped.
- P1-directed: DirectNarration not fired by a trigger, and GameMaster cues. Waits 15 s (cues never expire); each call is its own line, so five calls make five lines in order. Call once if you want one line.
- P2-urgent: anything a trigger fires, and interruptible event types. Waits 10 s; repeats of the same trigger merge, and the other firings are listed in the line's prompt.
- P3-reaction:
RegisterEventevents NPCs react to, and vanilla or background lines. Waits 8 s; different reactions waiting together get one reply to the newest. - P4-continuation:
RegisterDialoguelines and NPC-to-NPC replies. Waits 6 s; ends after Max Chain Depth. - Max Recent Speech Count per window caps P2–P4. A higher priority replaces a line still being written, never one speaking.
interrupt: trueand interruptible events cut speech as before;PurgeDialogueclears audio, the line being written and every waiting request. SkyrimNet does not react to its own lines.
Template authors: speech_turn (mode, merged_count, conversation_depth, also_events) describes the other requests a line also answers; user_final_instructions/0805_merged_events.prompt renders them when merged_count > 1.
Package API for mod authors @Severause
A mod can register AI packages under its own name, list packages it runs itself on the Package Manager page, pause SkyrimNet's packages on an actor for its own scene, and hear every removal (PublicGetPackageApiVersion 1).
RegisterPackageExtakes an owner, a display name and a respect-conditions flag; returns 1 applied, 2 stored while held, 0 failed.UnregisterPackageExremoves only the owner's row.ListPackagerows are run by the mod: the page's Remove asks it to stop the package. Withremovablefalse, only the mod removes or replaces them.- Holds are owned:
HoldPackages/ReleaseHeldPackages(actor, owner)end only the caller's hold; the page's Release hold ends every hold, and a death tells each holder (owner|death). SkyrimNet_OnPackageRemoved(name|reason|owner, reasons 0-9: 8webuiAllis the page's Remove all, 9replacedanother owner taking the row),OnPackageAdded,OnPackagesHeld,OnPackagesReleased; sent even with outbound mod events off.- An
ActorUtil.AddPackageOverridewith flags 0 respects its package's conditions, and SkyrimNet saves its copy of the ActorUtil overrides, so they keep their priority after a load. - The page shows owners, display names, holders and Held, Conditions and Run by badges.
For Mod Authors
- API headers are MIT licensed —
PublicAPI.h,PublicAPIMemoryQuery.h,PublicAPIDiaryQuery.handSkyrimNetApi.pscare MIT licensed, so any mod, open or closed source, can build them in. The devkit carries the license inCppAPI/LICENSE; SkyrimNet itself stays proprietary. @MinLL
Speech & Audio
- Wildcards in carry-over audio tags —
*in a carry-over audio tag entry matches any run of characters, so*accentcarries[German accent]. Entries without*still match the whole tag. @SirJefferE - Kokoro narrator — Loading a save no longer reloads the model; after a model change your main voice speaks until it is ready (the first line was silent); long lines are spoken whole; purged lines stop sooner. @MinLL
- Piper — A missing eSpeak shows an error, thread changes apply on save, rarely heard voices unload, purged lines stop sooner, and voices load when first heard, not on cell load, so that line may lag. @MinLL
- TTS engine settings — PocketTTS language selection moved from Advanced to the main settings, XTTS shows language names instead of codes, and the Higgs Model field has its label. @zevck
- Engine languages in the tutorial — Hover the language icon on a speech engine card in the setup tutorial to see the languages it supports. @zevck
Dashboard
- Dashboard help guides — The question mark beside each page title opens a guide to that page. @zevck
- Home updates — In game, Home's recent events show within about a second. Unchanged panels cost no download or re-read. @Severause
- Per-rule switch in Universal Translator — Turn a rule off without deleting it. A disabled rule is ignored, so rules below it can still apply. @SirJefferE
- Recall Debug — Memory → Record Recall Debug (off by default) records each player line's recall: candidates with scores, which filter dropped them, the decision gate's answer, and what entered the prompt. Settings › Debug Tools shows the last fifty turns; also
logs/recall_debug.jsonl. @Dekana - Settings search jumps to the setting — A search result scrolls to that setting and briefly highlights it, instead of only opening its section. @zevck
- Wider scrollbars in VR — The dashboard's scrollbars are twice as wide in Skyrim VR, and the Characters list's resize handle no longer sits on its scrollbar. @zevck
Other
- Better Local Model Support — Internal improvements intended to facilitate better local model performance. Pair with https://discord.com/channels/1287232260617015336/1562807176844812288
- No more SkyrimNet.pdb — The download is much smaller. Crash logs show module offsets instead of SkyrimNet function names and line numbers. @MinLL
Bug Fixes: dialogue, speech and stability
- NPCs described the scene as it was, not as it is — Decorator and variable caches leaked between renders, so a reply could show stale awareness, such as a fight that had already ended. @MinLL
- Universal Translator rules by NPC name did not apply to renamed NPCs — Rules pick the NPC by ActorBase instead of its prompt name, so mod renames and translations no longer break them. @Dekana @SirJefferE
- AI Generate wrote mod followers' bios without their own dialogue — Generic lines no longer crowd out an NPC's own dialogue, so mod followers keep their written backstory. @Dekana
- Bard songs cut off NPCs mid-sentence — Starting a bard song no longer stops NPCs who are talking or shortens their lines in dialogue history. @MinLL SirJefferE
- TTS went silent when rate-limited — ElevenLabs and Inworld wait the few seconds asked and retry once. @MinLL
- TTS fixes — Custom voice files are found for NPC names not in English letters; a timed-out Inworld clone is not created twice; an audio-tags-only line plays as a subtitle; Higgs and OpenAI-compatible tag settings follow per-NPC overrides. @MinLL
- ElevenLabs clone limit after a bulk clone — With Clone Cache Max Voices set, bulk-cloned voices count toward the limit in game. @MinLL
- Model downloads crashed the game with ReShade installed — Downloading several models at once, such as Pocket TTS's eight files, no longer crashes with ReShade 6.5.1. @MinLL
- "Configuration 'Auth' not found" at startup — The harmless log line no longer appears once per launch. @MinLL
Bug Fixes: dashboard and hotkeys
- Numpad hotkeys — Numpad keys bind and respond as hotkeys, including the dashboard shortcut set through MCM. @zevck
- The dashboard key and Escape worked from other windows — With flat Skyrim in the background, the dashboard, Escape and dialogue-choice keys do nothing; releasing push-to-talk still stops recording. @Severause
- Dashboard scaling issues — Content fits at higher UI scales, and tooltips, menus and file drop targets stay in place when the scale changes. @zevck
- Missing in-game tooltips and icons — Tooltips and icons render correctly in game. @zevck
- The desktop browser UI failed to load under MO2 with two mods shipping its assets — No more 403 Forbidden; a missing file returns 404 instead of 500. @Severause
- /playsong tab completion had no song titles — When the chat opened while still loading, the titles were dropped; they now wait for the page. @Severause
- Incorrect Mod Integration checkboxes — A plugin's mod integrations, including ones for mods not installed, stay checked when you reopen its edit form. @zevck
- Plugin page header buttons — Endorse and Install sit in place on every plugin page, and Installed Plugins and My Plugins stay in the top bar while viewing a plugin. @zevck