Week of August 17, 2026. This is an archive page; back to the current week.
2026-08-23 · 124 items
Headlines
- The chaos shard was down overnight after Friday's login-gate deploy check refused every server start; recovered it this morning and fixed the deploy so new server settings carry over automatically.
- Three boot catalogs drag their whole reference graph onto the main thread, freezing some clients for up to 288 seconds before the title screen. Every player parses 16 MB of CJK font data at startup, in any language.
- Sixteen memorial gravestones disabled themselves the first time anyone mourned, and siege catapults had been lending the wrong collider since the code was written. Both fixed at the cause after two earlier attempts treated the symptom.
- Build 143 stripped the gear off every character on login. Found in the client logs minutes after the first report and fixed for the next build.
- Decorations stacked on a resized item stay on their seat. 555 of 855 decoration models have their origin off their own base, and every one of those stacks drifted as the item under it grew.
- Elf Mages now buff the elves fighting beside them, and a creature's floating name shows what it is under, so you can see at a glance which of them has been helped. Kobold Mages went live on chaos today; elves are next.
- Vendors can be pinned. A star on every zone listing row and beside Refresh in the vendor window keeps a per-character list of shops worth returning to, and a Favorites checkbox shows it. Requested by Sethanon.
- Decoration undo stopped forgetting everything the moment you stepped onto a lot: each plot keeps its own 50-change history now, parked while you are away.
- Resident texture art in a player town dropped 28%, from 5,799 MB to 4,164 MB, while the scene loaded 905 more textures. Render targets are now the biggest block of texture memory.
- Chaos updates now announce themselves in game: a heads-up when the nightly build starts, a warning while it deploys, and a final notice right before the restart.
- Catchphrases went dead for two players in one town and left no trace in the log to explain it. The client now names which of fifteen refusals it hit, and spoken lines no longer lose their sound channel to a fountain.
- Torpor now applies the slowdown its description always promised. Attacks, casting, card draw, movement and cooldown recovery run 30% slower, and Earth Magic Specialization cuts that to 20% at 100.
The Herald
- The New Britannia Herald for 2026-08-22 is up: Saturday brought two spells that let you step out of your own body and drive a creature around, forty-six skill titles that have sat unclaimed in the game data since 2013 and are now handed out retroactively, and a rebuild of item tooltips so a sword tells you what the sword is. Kobold mages learned to look after their friends, and enemies learned to stop shouting over each other. A texture tool built in the morning was used that same afternoon to take eight point seven gigabytes of art down to two. Listen or read the transcript (16 min). Subscribe in any podcast app: /blog/podcast.xml
Community
- Swept the forums for new wishlist/bug threads: filed player requests for faster scene/lot/bank loading and a crafting depth pass with rarity tiers above Epic, and followed up two already-tracked items with fresh forum replies.
Content
- Well of Aldur alduritue crystal mounts wait for the interact key before taking a crystal, so jumping onto one no longer places the crystal by accident.
- Memorial gravestones in the Player Memorial Cemetery outside Brittany Graveyard now return to their normal state after a Mourn or Pay Respects interaction. Every stone in the cemetery had the same authoring defect and every stone is repaired.
- Master Naturalist, the title for uncovering the lore of twelve beast families with Animal Lore, now grants when a player crosses the threshold and reads with its space instead of run-together. The server-side bake needs one regeneration before the grant takes hold in a live shard.
- Large dragon bone props (skulls, ribs, jaws, leg bones, claws) render at their full source resolution, so bones no longer look pixelated when a player walks up to them in scenes like Northwest Blackblade Mountains and Blackblade Foothills.
- Novias overworld map (M key) no longer shows the small Hidden Vale island in its top-right corner. Town markers come from the scene the player is standing in, so on Novia the island sat there permanently blank; the sheet is now Novia only. Hidden Vales own map is unchanged.
- A Large Planting Bed placed at a non-cardinal angle sometimes refused the first seed with an overlap message on ground that had nothing on it. The sowing overlap check now uses the bed footprint at its actual rotation instead of the wider square that surrounded it (#5656).
- The Large Lord British Telescope, the wooden and medium Lord British telescopes, and the observatory telescope in the Village Observatory home now hide their own body while a player is looking through them, so the view no longer stays stuck on the tube and the gears at the mount.
- Abigail, the public vendor in Kingsport, was speaking in a male voice. Her conversation prefab had the gender field set to male, so the voice picker was casting her onto a male voice. She now reads as female and picks up a female voice on the next pipeline pass, with the male vendor who shares her greetings kept on his current voice.
- Summoned daemons now respond to the SFX slider like every other summon. Their sound controller was routed under Ambient, so its slider was pulling them up and down and the SFX slider had no effect on them (#5646).
- Second pass at the wealthy merchant fur trim (#5396). The earlier fix corrected where the trim samples its shadow, but the trim still read as flat bright white in dim interiors because it was throwing a shiny reflection of the outdoor sky. Specular is now off on all four trim materials, matching the other fur pieces in the game. Guild registrars, town wealthy merchants, player vendor NPCs styled as wealthy merchants, POT beauticians, and the Port Harmony and Blood River quest merchants that reuse the coat now show a matte trim that tracks the coat under every light.
User Interface
- The floating name over a creature now shows the buffs it is under, as a row of icons below its health bar. Reading a pack no longer means clicking each member in turn, which is what makes killing the support caster first a decision you can actually make. Requested by Wishdragon.
- Buff icons are for creatures only. Each icon is its own texture and so its own draw call, and a player carries a full buff list wherever they stand, so a bank full of players would have paid hundreds of draw calls to repeat what the party frames and the target frame already show.
- The zone vendor listings keep a list of vendors now. Every row leads with a star that pins its vendor, the same star sits beside Refresh in the vendor window itself, and a Favorites checkbox swaps the table for the vendors you pinned. The list is saved per character on your own machine. Requested by Sethanon.
- A One Row Per Vendor checkbox beside All Zones collapses a vendor search to one row per vendor, with the number of that vendor's matching listings after its name. It runs after the sort, so sorting by price leaves each vendor showing its cheapest match. Requested by Sethanon.
- Double-clicking a row in the vendor listings marks that vendor on your compass, the same as the Get Directions button. A pinned vendor can be marked on its own now, without a listing attached to it.
Combat
- Swept every creature ability for one that reaches nobody. A creature casting an effect that wants more than one target, without a radius to gather them with, falls through to a targeting path that reads the caster's player controller: a creature has none, so the ability plays its animation, spends its cast time and does nothing. Three abilities are authored that way and no creature carries any of them. A build check now fails if one ever does.
- The rest of the roster is clean. Of 484 creature abilities, 177 want more than one target, and every one of those has a real radius, chains between targets, is a trigger volume, or is delivered by a field. The Frost Giant's Ring of Lightning read as broken until the trigger-volume rule accounted for it.
- Yesterday's fix for support casters angering their own pack cut too wide: a root, snare or pure debuff on a neutral animal no longer created any threat, so the deer grazed on until real damage landed. Neutral creatures now notice harmful spells again; a creature's allies still ignore the buffs it casts on them.
- A pack's battle cry was consulting the speech floor of whoever owned the creatures, so on a busy multiplayer scene a market NPC chattering next to one player could permanently silence a pack aggroing someone across the map. The cry now only defers to the floor within earshot of it; each listener's own client still keeps enemies taking turns.
- Built the two support abilities the creature work still lacked: a rallying cry that hardens up to six allies within eight metres of the caster, scaled by the caster's level, and a curse that takes about a fifth off your weapon damage for thirty seconds. Both take a couple of seconds to cast, so a stun stops them. No creature carries either yet; they go out one faction at a time. Requested by Wishdragon.
- The area rally is modelled on the sabre-tooth roar, which has quietly been an area ally buff for years, with two changes: the roars cast instantly and cannot be interrupted, and they grant a flat amount whatever casts them.
- Widened the ally-buff range check from ten named abilities to every ally ability against the creature that carries it, across 462 pairs. It is clean, and it found one thing: a faun cannot heal an ally it is standing beside, because its heal has a five metre minimum. Left alone for now. 114 fauns are placed, so giving them a working heal is a difficulty change that needs a test pass of its own.
- Corrected a note in the balance ledger about the new creature support abilities. The tester switch that governs creatures buffing their allies does not stop a creature casting a buff at all: it controls which ally gets picked and whether a buff can go up before the fight starts. So a creature given one of the two new abilities would have no live off-switch, which is a stronger reason for rolling them out one faction at a time than the one already written down.
- Costed the last phase of the creature support work, which is new creatures built to support rather than fight. The prefab is the cheap part: a creature is six components and no art, with its model, sounds, weapon, abilities and loot all pointing out at shared assets. The cost is registration. A new creature has to be listed in five places and four of them fail quietly, the worst being the server data bake: without it the creature gives no experience at all on a real shard, refused with one log line and nothing on screen.
- That costing answered the open question about placement: a new creature can reach players without editing a scene file, through a player dungeon seat, which is scanned straight into the server data with its own identity. The obvious cheaper route, adding a creature to a spawn controller's roster, is wrong in a way nothing reports. Every kill in that pool is credited to the first creature in the list.
- Elf Mages now support the elves fighting beside them, the same way Kobold Mages started to. They cast Health Burst or Death Resistance on whichever ally is worst hurt, will help an elf that has not been damaged yet, and can open with a buff as the group notices you. Nothing was added: they have carried these spells for years and the way they picked a target meant you almost never saw it. Thirty-two casters, 187 places they stand, the most of them in Lost Vale, Vertas Pass, The Rise and Superstition Canyon.
- The eleven player dungeon elf mages are in the same batch rather than one of their own. They are one creature each across every player-built dungeon, and holding them back would have made the same mage behave differently depending on which door you walked through.
- Rollout order is by how often players actually meet a family, counted from placement data rather than judged by eye. Elves are the smallest step after the kobolds that is still a family you run into. The batch after this one is every human enemy in the game at once, since bandits, cultists, plunderers and the rest all share a single faction, so that one waits for two families of evidence rather than one.
- Re-counted which creature families actually support each other, from the ability assets rather than a summary field, and corrected two things in the rollout plan. Fauns and elementals only heal, skeletons and liches only resurrect, and the switch this rollout turns on governs buffs alone: the heal side always picked its target correctly, so those families gain nothing from a batch and are out of the running order. The faun heal that cannot reach an ally standing beside it is a fix in its own right instead.
- Wrote up a full review of creature combat AI and encounter design, the last large gameplay system with no design document of its own. Measured across the 1,382 creature prefabs: flee-on-injury is authored on seven of them, enrage reaches six, two families have any authored special combat behaviour, and 19 of 318 creature abilities have a wind-up time. 37 proposals in five tiers, plus five decisions for the owner.
- Two of the defects reported into that review were not defects. Creature attack animation names that read as malformed are multi-line entries listing one animation per creature that shares the ability, and the abilities with no animation name are all delivered by a parent effect. Both were dropped from the writeup instead of filed.
- The same pass found that the mechanism for running expensive creature senses less often does nothing on 1,226 of 1,382 creatures: every fidelity setting computes a delay shorter than the tick that drives it, so all of them run on every tick. Recorded as a performance item rather than a behaviour change.
- Enemies in a group fight speak up more often. Only one creature talks at a time, which is unchanged, but a creature whose line was held back used to be charged its full fifteen to twenty two second cooldown for a line nobody heard, so a pack went quiet after the first shout and short fights ended with most of the group silent. A held-back line now retries as soon as the creature ahead of it finishes. Town chatter keeps its old pacing.
- Elf Mages now favour the ally carrying the least help, so an elf with none of the mages buffs is picked ahead of a wounded elf that already has one. A mage whose remaining buff is still on cooldown keeps attacking, where before it would walk over to an ally and stand there casting nothing.
- Rainbow Blast no longer leaves the caster standing still between the casting animation and the rainbow. The effect was waiting out the full delay the spell takes to land, a timing carried over from the unicorn attack the skill was built from, where a horn glow fills that gap. The rainbow now appears as the casting motion ends. The damage lands on the same timing as before, and the burst of colour on the target is unchanged. Reported by a player through the in-game Oracle.
UI
- The exit confirmation window opens centred and stays there. The chaos build 142 fix started the centre correctly and then let the plate get pulled back to the top-left on the very next layout pass, so the box appeared in the corner every time. It now takes the same code path the drag handles do, so the follow-up clamp accepts the centred position instead of undoing it. Requested by cealastra (#5714, verify #5731).
- Your own overhead block (name, guild line, health bar) now sits clear above the tallest thing you are wearing, hat and wings included, at every zoom. It was landing on the hat at normal zoom and across the face when the camera got pushed in close, because the clearance was measured against your body outline and not against what you had on.
- A tester found the dark edge behind overhead names on chaos was there but too thin, so the halo behind every world-space label - character plates, titles, guild tags, health numbers, chat bubbles, vendor signs, decoration pet names and overworld town labels - now reaches farther out from each letter and fades more gently, so names read against bright stone, sand and sunlit walls without turning the plate into a black rectangle.
- Summon name plates were sitting on top of the summoned creature's head. They now floor themselves above the head with a clear gap, and stay put when the camera pulls in.
- Blank sheets of paper no longer double every keystroke. Typing into a Blank Sheet of Paper, blank book, letter or piece of sheet music now writes one character per key press at the cursor, and the character counter across the bottom of the page reads the length of what is actually on the page. (#5674)
- Take All on a corpse (or any loot container) no longer sometimes leaves the loot window on screen with the Take All button greyed out after the second press of the interact key.
- The Vendor Items window now shows a stacked listings count next to the item name in cream, the same way stack counts read in a backpack. Before this fix a stack of ten wheat read as raw markup text next to the name.
- Vendor Listings: typing a "+N" in the search box (like +5, or "sword +5") now filters to items with at least that enchantment/masterwork total, instead of quietly dropping the "+" and returning nothing.
- Wave-battle arenas no longer steal the mouse target at long camera zoom. In Kobold Expeditionary Camp and Quel Shardfall the invisible zone that starts the wave still fires on entry, and it no longer sits in front of corpses standing on top of it, so a pulled-back camera can loot every kill.
- The broadcast phonograph now names all three album groups it refuses. Countach, Neon Milk, and Shooter Jennings self-titled tracks are all non-broadcastable, and the refusal message used to name only the first two. A player dropping a Shooter cylinder saw a message about two other albums and had no idea why the phonograph would not take it.
- The world map lets go of the mouse when it closes with a button still held on it, so right-click camera and character rotation keeps working after any open-and-close of the map (#5763).
- The book window no longer offers the "how to import text to a Custom Book" hint on a designer-made book like the New Player Handbook. The "?" and its "Click for Help" bubble now only appear on blank books, player-written books and sheet music, where a player can act on the hint.
- The Property Manager remembers where the player left the divider between its storage and deed panes, will not squeeze the storage side narrower than what its four column headings and icon take, and answers the mouse on the divider bar right after a drag instead of waiting for the whole window to be resized.
- The lot deed window, player vendor listings and zone vendor listings no longer eat the next W or S press after you click a row. Selecting a row used to give the list keyboard focus, and the game then read W and S as list navigation instead of character movement, moving the highlighted row to a neighbour. Clicking off the window worked around it. The same trap covered every other player/item table window (guild logs, guild finder, party finder, town directory, achievements journal, leaderboards, teleport-to lists, wax cylinder list, deck selection, titles, PVP stats, trade window, and so on); all of them are fixed by the same change. Row selection, right-click menus, double-click, header sort, column resize and tooltips still work.
- Window Opacity slider in Options / Themes now works the same way the Theme Editors Surface Opacity slider does: the number under the slider IS the target opacity. 100% is fully opaque plates, 25% is quarter opaque, and 50% is half opaque, whatever the current theme paints them at. The old 30 to 120 range is gone; dropdowns and tooltips are still left at the themes authored solidity so they stay legible over other UI. Per-window opacity (right-click a titlebar) still multiplies over the global slider.
- The backpack, the bank and every container now remember which item category you had picked, not just whether the category button row was folded away. Before this a relog dropped every window back to All Items, and a lot container that closed and reopened did the same; each window now keeps its own last-picked category through close and reopen and across a relog.
- The map-drag latch behind that camera lock now clears itself too: it drops any window still registered as holding the mouse while no button is down. A client already stuck in that state gets rotation back on its own instead of needing a restart, and any future missed release costs a frame rather than the rest of the session (#5763).
- Review pass over that map fix, with both halves of it in one tree: the sweep now runs on live input each frame instead of from inside the state flag, and the regression test that guards the map drag latch was looking up an element through a style property that does not exist, which would have kept every editor test from compiling.
- Buff and debuff icons darken as their effect runs down, and that sweep now follows the effect keeping the icon on screen rather than the one closest to expiring. A skill like Rend puts a damage over time effect and a healing debuff on one icon, and the short half used to drive the arc almost to full before it snapped back to empty when that half ended. Reapplying the skill made it repeat several times a second.
- The buff icons over a creature's floating name and the ones on its status bar now run off the same timer code. They were two copies of the same rule and could disagree about how far an icon had drained.
- Letters opened from the mail came up as a large empty black window with none of the note on them. The window was never told to show its pages, so the text it had prepared had nowhere to print. Every letter now opens on the page the way a book does, including the Item Sold bill of exchange a vendor sends after a sale.
- Rainbow Blast has a skill icon of its own. It was drawing the Chaos Bomb glyph, so the two combos looked identical in the skill list, the Combos tab of Edit Deck, the hotbar and the tooltips. The new glyph shows a sun over a rainbow with water spray beneath it, matching the Douse and Solar Flare pair it is brewed from, and carries the red border the game uses for attacks.
- Double-clicking a glyph in the Edit Deck window adds it to the deck again. The window moved to the new UI and the double-click was left unconnected, so dragging had been the only way to build a deck. Dragging is unchanged.
Client
- Fixed a red console error that fired when Stop was pressed on a jukebox or broadcast phonograph, and one that fired while the cylinder list refreshed itself after a drag. The Stop and Play buttons still work; the throw is gone.
- Fixed the Isle of Storms tutorial having every copy of the pressure-plate character Anaïs answer to one shared identity, so an activation aimed at one of them could apply to another or drop as a duplicate. Each plate now carries an identity of its own and every Anaïs fades in on her own cue.
- Tighter Fit now works on small display items that were being refused inconsistently. Apples, coffins, rolling pins and blank scrolls carry the same "can hold other items on top" bit as shelves and cases, so the aid refused them and offered itself for identical-looking books and bottles that lacked the bit. The refusal now only fires for pure stacking parents; anything small enough to sit on other surfaces itself gets the aid.
- Fixed a compass marker on a public vendor outliving the zone it was set in. The mark is matched by spawner id and those ids are only unique within one scene, so walking to the next town could put the marker on an unrelated NPC.
- The Japanese and Chinese font assets were carrying a baked glyph table and a 1024 by 1024 atlas written out as hex inside the file, which the player build discards and which re-diffed every time the editor drew CJK text. Clearing it took 497 lines and about a megabyte out of the two files. Both still rasterize on demand.
Server
- The chaos shard went down overnight: Friday's login-gate change added a fail-loud config check to the server deploy, but the setting it checks lives in a config file on the shard that deploys never refresh, so both the new build and the rollback refused to start. Recovered the shard this morning and fixed the deploy to carry new settings over automatically, so a new server setting can't strand the shard again.
- One oversized item on a player vendor was stopping every vendor update in its scene. Items have to fit inside a single message, and an item over that size threw in a way that aborted the whole update pass and left it to retry forever: 71 identical failures in 49 minutes. Oversized items are now measured, trimmed where possible, and skipped one row at a time.
- The Players Online whisper reveal was going to lose the recipient on every server-recorded whisper the moment the new server-side logging deployed: the extractor matched the client relay's field name but not the server's. Fixed before it shipped, and one whisper reported by both sources now shows once instead of twice.
Client
- Four clients filed startup failures at the same boot stage this week, and the logs showed why: the main thread was frozen inside a single asset load for 54, 55 and 288 seconds. Three catalog assets are loaded at boot and each one pulls in everything it references, including 16 MB of Chinese and Japanese font data that every player parses whether or not they use those languages. Filed for the fix.
- Boot logs now record how much of a startup was spent loading assets and which one was slowest. The old warning only fired when a load beat the previous worst, so once a client hit one slow asset every slower-than-average load after it went unreported. Six stalls of 11 to 20 seconds had been invisible that way.
Tools
- The Tester Hub leaderboard now credits testers whose original chaos game login was retired on 20 August under their hub name again, so their Chaos hours and Oracle-filed bug counts start moving on the next hub refresh after the collector deploys.
- Merged the day's branch work and cleared four conflicts where two fixes had landed on the same code: the jukebox crash guard (kept one copy of the handler cleanup, both call sites), and sixteen Brittany Graveyard memorial wirings where one fix deleted the broken entries and the other pointed them at the right gravestone. Kept the wiring, so the second gravestone still resets after mourning.
Combat
- The number under a spell button used to count every matching reagent in your bag, so a spell whose reagents were all locked would grey out with a full stack still shown under it. The counter now skips locked, buggy and mid-trade stacks, so the number and the button agree.
World
- Every memorial gravestone in the Brittany Graveyard cemetery switched itself off the first time someone mourned at it. A grave is meant to go quiet for five minutes and come back; a blank row in its action list meant the reset never ran, and the game answered that blank row by disabling the whole grave. All sixteen are repaired, and a blank row is now skipped instead of taking the object out of service.
- Siege catapults are visible and clickable again. The catapult lends its click box to the machinery that aims it, and it had been lending nothing, because the code asked for a collider on the catapult root and all three of them sit on child objects. Two earlier fixes had adjusted how long the game waited before reporting the problem, which is why it kept coming back.
- Broken breakables stopped replaying their destruction visuals on scene re-entry yesterday; today the destruction sound stops replaying too. Looping state sounds like a fire crackle keep playing.
UI
- Jukeboxes and phonographs stop cleanly when the device goes away while its window is open. The window is shared and outlives the device, so it kept calling a jukebox that had been picked up, throwing once per frame for as long as the window stayed up.
- The pin star in the zone list was minted a hover hint that never drew; it went through the engine tooltip string, which does nothing on a runtime panel. The hint now shows.
- The Dungeon Builder Rooms tab now shows dungeon points used against the limit instead of a bare count, and the Dungeon tab leads with the limit and the total used, with the rows that make up each one indented underneath. Requested by Rinaldi.
- The two filter drop downs on the Dungeon Builder Build tab size themselves to their longest entry, so set names are no longer cut mid word and the menus no longer need a sideways scroll bar. They measure the text at whatever size it is drawn, so this holds in every language. Requested by Rinaldi.
Equipment
- Every character on chaos build 143 spawned with none of their gear showing. A sweep added yesterday to clear stranded weapon models runs while the character is still being built, and it treated the containers the equipment system had just created on the hands as if they were item models. Reading an item id off one of those threw, and the rest of the equipment load never ran. It was not intermittent: those containers are created for every character a few lines before the sweep runs, so players, NPCs and mannequins all came up bare on every login. Reported by joescorpio within the hour of the build going out. The sweep now checks that a model belongs to an item before it reads an id off it (5a2686f02e, verify task #5750).
Skills
- The Obsidian Item of Greater Unlearning was deleting specialization masteries and the elixir skills along with the school it wiped, skills the item cannot give back and no trainer re-offers. It now spares them, matching every other bulk skill operation. A specialization stuck on Unlearning can also be parked at Not Learning from anywhere; before, the only exit needed a trainer and a mis-click in the field drained the school until you travelled back.
Testing
- Fixed tester portal login for joescorpio: his account carried the in-game tester flag but had never been synced into the website login directory, so no password could work on the tester hub. Synced the account and issued him a portal password; his game login is unchanged.
- The tester roster capture tool was dropping the hub_only marker on retired logins, which made the drift check flag eight healthy entries. Capture now carries the marker forward, and the roster was re-captured with today's additions.
- Gave a second tester the same portal login fix: his account also had the in-game tester flag but no directory user, so the tester hub rejected every password. Both testers can now reach the hub and the verification board.
Consumables
- The consumable tooltip's strength-at-your-level line bypassed the scaling kill switch: with the emergency off-switch flipped, potions would land at full strength while tooltips kept claiming reduced strength. The line now runs through the same gates as the effect, so the label and the potion cannot disagree.
World Events
- A player logging in during a world celebration could miss the announcement entirely: a progress update pushed in the first seconds after login marked the window as already announced before the client had a chance to speak. A re-stated window now leaves the announcement owed; only a genuinely new window counts as covered by the shard channel.
Lua
- An add-on's internet permission is now tied to the exact list of sites the player approved. Before, the consent was keyed to the add-on's name alone: an update could swap in different sites, and a new add-on re-using an uninstalled name arrived pre-approved. Either case now asks again, and uninstalling an add-on drops its grant. Anyone who had granted internet access flips the toggle once more after this build.
Possession
- A skeleton taken over by its summoner drops to a fixed low level for the ride, and that drop was never undone: the skeleton came back from a possession pinned at the low level for the rest of its life. Release now restores its own level, with no free heal on the way out.
Art
- Yesterday's texture settings sweep caught four textures it should have held: the Tanglemire loading screen was set to stream mips it can never request, which ships it permanently blurry, and the desert and forest metropolis water masks were block-compressed, which moves the threshold the water shader reads. All four restored, along with the Brittany map sheet's compression quality.
Tools
- The texture browser's guards now cover the batches that caused yesterday's regressions: streaming and mips batches ask before touching screen-space art and mask data, compression batches hold UI and store art too, and a write aimed at the default platform block on a texture with a Standalone override no longer claims memory savings the shipped build never sees.
- Bug reports filed by testers now reach the automated fix queue. They were being assigned and then left in the testing tracker, which that queue did not read, so 37 open reports had never been picked up for work.
- Replies to a tester report may no longer describe unwritten work in the past tense. A report that has been picked up is now answered as queued, which stops a tester retesting for a change that was only planned.
- A commit can no longer remove the tests that guard a past fix without saying which fix and why. Around a thousand of our automated tests name the bug they protect, and nothing had been reading them.
- The automated bug fixer now checks what already guards a file before it changes it, and runs those tests before and after its own edit. It also holds back from fixing anything it cannot pin down, which used to be an option rather than the default.
- A bug closed by the automated fixer now says plainly that nobody has tested it yet, and how to send it back. A closed report reads as settled, and that one was not.
- Every fix the automated bug fixer makes is now read by a second, separate pass before it stands. It sees the report and the change and nothing else, and a rejection reopens the bug with the reason on it where the person who filed it can read it.
Infrastructure
- The client keeps mirrored copies of the server's shared source, and several of them had quietly forked, one by about two thousand diff lines. Every wire opcode matched all along; the drift was a renamed operation, a dead one nothing ever handled, and server-only code the client cannot compile. All the mirrors now compare byte-identical, with the server-only pieces fenced off, so the sync tool can no longer stomp a working copy in either direction.
NPCs
- The training dummies that could not be hurt on build 143 (reported by rickdoll, joescorpio and Wishdragon within the hour) turned out to be the same fault as the bare logins: the error that stripped characters also fired while placed NPCs were being set up, and an NPC it hit finished spawning without its health or AI. Practice dummies were where players noticed. The bare-login fix already cures it in the next build, and NPC setup now survives an equipment failure on its own, so a fault like this costs an NPC its outfit instead of making it unkillable.
Guides
- New player guide, Potions, Food and Drink, at catnipgames.net/blog/guides/consumables. Every consumable in the game and what it is actually worth: Consumable Power and why a fifth potion in half a minute is refused, the two elixir skills that cannot both be trained, the six food slots, the full Health, Focus and Restoration ladders, and which dishes are worth carrying.
- The guide closes with the adventurer level a consumable is made for, marked as built and in testing rather than live. It is the first guide to use that allowance, and the note comes down when the change ships.
Launcher
- The DOWNLOADED tile now counts the bytes that actually came over your connection. It used to count the whole build, including the parts rebuilt from files you already had, so a patch that pulled a few hundred MB read "13.0 GB / 13.0 GB" next to a TOTAL SIZE of 13.0 GB. The savings line moved under it, reading like "56% saved of 13.0 GB".
- The EFFECTIVE rate is now the average across the whole patch instead of a 3-second sample, so it settles instead of jumping and holds its final value once the patch is done. SPEED stays live, so your connection is still visible reacting. Launcher build 32.
- First installs kept the downloaded total on screen while the game files unpack. The unpacking step was reporting zero bytes fetched, which blanked the figure part way through the install.
- Launcher build 32 is live on Windows, Linux and macOS. Installed launchers pick it up on the next start. The macOS bundle is still ad-hoc signed, so a freshly downloaded copy needs right-click then Open the first time.
Decorations
- Resizing a decoration no longer drags whatever is resting on it off its seat. A stacked item keeps its own size, but its position was still measured against the item underneath, so growing that item stretched the whole offset including the distance between the stacked item's origin and the face it actually sits on. Of 855 decoration models checked, 555 have their origin somewhere other than their own base, so most stacks drifted. The item on top now holds its contact point, and the corrected positions save with the resize so the stack survives a reload and looks the same to everyone else on the lot.
- The server now checks a decoration's saved size against that decoration's own limits instead of one global range that covered every item in the game, and it reads the limits straight off the item. A saved size of zero now comes back as normal size on the client, on the server and in a shared arrangement, where the three used to disagree. Undo after a resize puts the decoration and everything sitting on it back in one press.
Unity 6 migration
- Capes and cloaks are rigid on the test shard. They sit flat against the body, barely move, and update slowly. One cause was found and fixed: the cloth simulation puts a cape to sleep once it stops moving much from one physics update to the next, and July's change to the client physics rate made every cape cross that sleep point as soon as it was worn. The sleep point now scales with the physics rate, so a future rate change cannot freeze cloth the same way. Capes still look wrong after that fix, so this is only part of the answer and the investigation continues.
Decorating
- Decoration undo now keeps a history per plot instead of one shared stack. A player-owned town counts as one plot and every lot inside it counts as another, so decorating from the town palette and then stepping onto a lot used to throw away every town entry, and stepping back off threw away the lot's. Each plot now parks its history when you walk away and gets it back when you return, up to four plots at a time. Reported by necronut, with gravidy pinning down the trigger. (#5790)
- The undo history also stopped clearing on plot boundaries you did not actually cross. The plot-change event fires for every trigger volume entered or left, nested lots and NPC buildings included, and the old code cleared on all of them, so brushing an edge cost the whole stack and showed "You left the lot" when you had not. Zone changes and another decorator editing the lot still clear it, and still say so.
Client Performance
- Took a /texmem reading on the chaos build in the same player town measured two days earlier, so the two compare directly. Resident texture art dropped from 5,799 MB to 4,164 MB, down 28%, while the scene loaded 905 more textures than before.
- The 2048-pixel tier fell from 1,774 MB across 260 textures to 549 MB across 151, and three 4096 textures are left resident in the whole scene, none of them uncompressed. Every texture the previous reading flagged has been dealt with.
- With the art cut down, render targets are now the largest block of texture memory at 1,278 MB across 126 surfaces, and the only category that grew. Written up as its own piece of work rather than folded into another texture pass, since it changes how frames are drawn.
- Three smaller finds went into the notes: loading-screen images stay in memory long after the load they were shown for, the residency report mislabels texture arrays as having no mipmaps, and the terrain array baker blanks each asset name every time it rebakes, which had left 169 of 174 of them anonymous in every report.
Chaos Shard
- Chaos updates now warn everyone in game before the restart. A system chat message goes out when the nightly build starts with a rough time estimate, again when the finished build is copying to the patch server, and once more right before the server restarts. Until now the shard dropped every player with no notice.
GM Tools
- The Players Online page gained an Announce control that sends one line to every player connected to the chaos shard, behind a confirm dialog, with every send recorded.
Catchphrases
- Catchphrases made no sound at all for two players standing together in Owl's Head, and worked normally in the towns either side of it. The whole visit left nothing in the client log to explain it, because the code that plays a phrase had fifteen places it could turn a press down and wrote nothing at any of them. It now records which one it hit, so the next report arrives with its cause attached instead of needing to be narrowed down by hand.
- The Owl's Head silence itself is still open. Counting the two scenes ruled out the leading theory: Owl's Head holds 1,194 audio sources and 235 looping ambient beds, while Brittany, where the same phrases worked four minutes later, holds 1,725 and 285. A catchphrase press now also reports how many sounds the scene was playing at that moment, so the question gets answered by measurement next time.
Audio
- Spoken audio now outranks background ambience when the engine runs short of sound channels. It mixes 64 sounds at a time and chooses by priority, and a catchphrase or an NPC line ranked below every fire, fountain and bird loop in the scene, so a busy area could drop one and it would play with no sound.
Client UI
- The name over your own character holds still again. It had started drifting up and down, a little while standing and a long way with every stride while running, because the plate was measuring the top of your character from a culling box that sits on the hips rather than the head, and re-measuring it every frame. It now measures the authored shape of what you are wearing, once, and holds that height until your gear or your size changes. Hats, helms and wings still push the name clear. Summoned pets took the same measurement and are fixed with it.
Magic
- Torpor now applies the slowdown its description has always promised. The spell rooted the caster and handed out its damage avoidance, heal and Strength buff, but nothing about the caster was ever actually slowed. Attacks, spell casting, card draw, movement and glyph cooldown recovery now all run 30% slower for as long as the buff lasts.
- Earth Magic Specialization reduces that new Torpor penalty by 1 point per 10 points of specialization, so a specialist at 100 pays 20% and the 200 maximum pays 10%. The slowdown runs well past the few seconds Torpor holds you in place, since during those you cannot act at all.
Images
2026-08-22 · 154 items
The New Britannia Herald
Leaving your body, thirteen-year-old titles, and tooltips that finally tell the truth
Headlines
- Item tooltips stopped putting you inside the item. Weapon and armor stats now read as the item's own; hold Shift to fold your character back in.
- Specializations now change at a trainer or an Oracle Confirmatory, and the school you set aside keeps its experience instead of draining away.
- Two new spells let you leave your body and drive a creature. A full-strength Animal Charm steps into an animal you already hold charmed; a full-strength Summon Skeleton takes over the skeleton you already have. Your body stays where you left it, awake to anything that walks up to it. Both ship switched off until the two-client pass on chaos.
- Closed the decoration scaling exploit: stacked items can no longer inherit a resized parent's size, and the server now enforces the limits.
- Lot Deeds and the Property Manager can now teleport you straight to one of your own lots for the price of one Teleport to Zone Scroll.
- The Skills window gained a List view: every skill you have learned in one window, grouped into schools you can fold, with its training status beside it and Train All on each school. Requested by MrChadwyck.
- Skills pay out titles. Every tree awards its title at level 100, with new Elder and Legendary rungs at 150 and 200, and four breadth titles for skills at those levels across the board. 46 of these have sat unused in the game data since 2013; they grant retroactively at your next login.
- Potions, food and drink now scale to the level they were made for: full effect at or above it, a proportional share below, and the tooltip says which level and what percentage.
- Enemies in a fight take turns speaking instead of shouting over each other, and a group that spots you gives one battle cry rather than one per creature.
- Chaos is now testers only. Logging in requires tester, VIP, dev, or admin access on the account.
- Salvaging at a crafting table no longer empties your equipment slots and leaves the weapons stuck in your hand. The models now come off with the slot, and the hands get swept for anything left behind. Reported by Syeekco.
- Kobold Mages now buff the kobolds fighting beside them, favouring whoever is worst hurt. They are the first creatures in the game to support their group, and their camps are harder for it. Requested by Wishdragon.
Content
- Regular in-town adventurer trainers now teach Animal Lore, so tamers can pick up the tier-two skill in a city without visiting a master trainer, and the same trainers no longer teach Pet Combat Training, which now sits with the master taming trainer next to the rest of its tier. Basic outskirts trainers still teach only Tame Creature and Summon Tamed. Third round of #4674.
- Retuned the top-of-falls foam on the three Paladis Shardfall confluence waterfalls after the last tester pass. The north waterfall now has a wider band of crest foam that reaches to both shores. The two south waterfalls each have their band moved a little further back onto the flat river above the drop. The west of the two south falls sits over its own water sheet again after being displaced east, and the east of the two has a wider band that reaches to both shores. The spray at the base of each of the three falls is unchanged. Reported by garfunkelhumperdinck.
- The two large sunken pool fountains in Brittany Estates now hand out water when you approach them from the walkway ringing each pool, not only from inside the basin. The earlier reach across the wide terrace pools was still too tight, and both fountains now match the wider reach used on the other large Brittany pool fountain.
- Retuned the Young Tyrannosaur from a tier 15 to a tier 12. Its size reads as a tier 12 creature, so the whole statline moved down a band: 5,400 health to 1,900, and kill experience from 38,000 to 9,000, placed against the crocodile and the Emberglow Wrasse that already sit at that tier. Its nameplate also floats a metre and a half higher, off the low-slung position it inherited from the crocodile it was cloned from. It has never been in a scene, so nothing in the live game moved twice.
- Well of Aldur wheel switches on the moving platforms only respond to the interact key again. A first pass at this stopped the platform body from firing on contact, but the wheel itself was still on collision-triggering, so brushing past it started the platform. Both the plain platforms and the ones that ask for an alduritue cluster share this fix.
- Alien plants in the Shardfalls no longer come out of the vendor pack with crunch compression applied on top of their block encoding. The pods, tubes, reefs, roots, spikes and thorns now render at the sharpness the source art already had, so the flat banded patches and hard tile seams the reporter saw at close range are gone. One pod near the Grunvald crater rim was already fixed on its own earlier this year; the rest catch up in this pass.
- Mannequins remember which hand each weapon is in across a scene reload. A one-handed weapon dropped in the mannequins left socket no longer resurfaces in the right hand, and neither hand goes empty after you leave the plot and come back.
- The Adventuring Trainer in Yew no longer offers Tactics Specialization; that skill is taught by the Master Tactics Trainer. Every in-town Adventuring Trainer shares the same list, so the fix removes it from all of them at once.
- Fixed two ankhs in the Eighth Level of Hell that dropped the player through the map on resurrection and sent them back to the entry room.
The Herald
- The New Britannia Herald for 2026-08-21 is up: Friday brought a large pass over pets and creature movement, a map window that had been holding a gigabyte and a half of artwork to draw one page, and a new tier fifteen dinosaur with a hand-animated tail swipe. Animal Lore learned to tell stories about fourteen beast families, in eight languages. Vendor search stopped ignoring the filters you typed into it. Listen or read the transcript (19 min). Subscribe in any podcast app: /blog/podcast.xml
Community
- Filed six items from the nightly forum sweep: five wishlist suggestions (actual NPC sell price display, lot-deeds teleport scroll, paragon mob variants, offline-helper scaling and gear, and a skill-cap proposal) and one bug (a mouse-look cursor/rotation glitch tied to reticle mode, worth re-checking after the Unity upgrade).
UI
- The empty leaderboard message stays inside its own panel at the smallest window size, and the leaderboard list on the left stays clear of it.
- The NPC conversation window kept its top-of-reply pin when the window was resized by dragging one edge; dragging the bottom-right corner up and to the left still slipped the view up into older text between drag frames, because the reply first line moved further down the log as older lines wrapped taller. The pin now compares the scroll position against the last spot it landed at, so the corner drag holds it in place as well.
- The custom NPC conversation window can now be moved. It picks up a title bar, a close button, resize corners, and remembers where the player last put it, so NPCs and their emotes are no longer stuck behind a centered panel (requested by Cora Cuzabich).
- Pinned windows keep their pin across a hotkey close and reopen, and Escape aimed at another window leaves them alone. The Recipe Book, the backpack, and the shim windows listed in the previous pass (character sheet, inspect sheet, pet sheet, in-zone vendor listings, property manager, merchant, player vendor, trade, item preview) all follow the same rule the map already did.
- Looted items select themselves again in the inventory window under the Recently Looted category, so a whole loot run can be dragged to a bag in one motion instead of an item at a time. The running selection restarts if you buy something partway through, and the other categories are left alone. Requested by shawnbutts3.
- Fixed the Obsidian Potion Reward window (and every other pick-one loot bundle) showing no hover tooltip on the potions - the item description is back on every row so a player can tell the choices apart before picking one.
- The health numbers on your own overhead nameplate now stay readable when your own head or tall equipment passes in front of the plate. The bar behind them was already exempt; the numbers took the same treatment.
- Chat tabs now come back at their saved font size right after login. The size was restored before the chat window had built its view, so the text sat at the default until you clicked over to another tab (reported by alliumoop and .knightrider).
- The exit confirmation window could open pinned to the top left corner and stay there for the session. It centered itself against a screen that had not finished laying out and never tried again; it now waits for a finished layout pass (reported by gravidy).
- The window position store kept only the 32 most recently moved windows while about 117 windows compete for it, so moving one more window made an older one forget its saved spot and reopen at its default. The store now holds 256, with tests pinning the eviction rules.
- Three windows (dungeon entrance, dungeon connection, puzzle box) had no identity in the position store and could never save a spot at all. They now can.
- Fixed the shape menus on the emote, bard and catchphrase bars: picking a middle shape such as 2 × 6, 3 × 4 or 4 × 3 drew the bar one column narrower than the shape named, with an empty strip of plate where the missing column belonged. Every shape now lays out exactly as picked, and a new test suite checks all of them on a real UI panel.
- Item tooltips now say what a merchant will pay. Under the Value line, owned items read Merchant pays: 73 - 92: the real payout at the items current durability, low for a shop that does not deal in those goods and high for one that does. Value was always the base worth, so the only way to learn the real price was to walk to a shop and open the sell list. Requested by Isabel Ayin.
- Labels beside a dropdown, a text box or a checkbox now sit level with the control they label. A tester found the crafting window reading as three alignments at once: the Sort label above the value in its dropdown, Filter below the text typed beside it, and the option checkboxes off the middle of their boxes. Measured on that window the Filter caption was 1.4px out, Sort 0.6px and the checkbox captions 0.4px; all three are 0.0 now (reported by gravidy).
- The fix landed in the shared window styling rather than in the one window. Every field control in the theme was already centred and nothing styled the caption beside it, so all 42 labelled fields in the game took their caption alignment from the engine default, measured for a shorter font than the one the game uses. Prose boxes keep their caption with the first line through a new opt-in the guild application and add-on submit forms now use. New tests measure a bare text field, dropdown and checkbox on a real panel, plus the crafting toolbar itself.
Client
- A placed lamp with "Only at night" ticked and Start State set to Off now lights up at Evening on scene reload; before the fix it sat dark all night whenever its saved state disagreed with its start state.
- A destructible barrel that you smashed and left behind used to replay its explosion effect every time you came back to the area, and broken vases, palisade gates and camp tents had the same trick. The destruction effect now fires only when the object is broken, and a return trip shows the aftermath quietly. (#1422)
- A repair kit dropped onto an equipped taming (pet whistle) necklace now repairs it. The field-repair path was refusing worn taming necklaces without a chat line; the crafting table path was unaffected. (#1221)
- Your resolution and Full Screen choice stay where you put them. The game shrinks a windowed game window slightly so its title bar and borders fit on the desktop, and it was then saving that shrunken size as your chosen resolution, so the size you picked was replaced a moment after you picked it. Two testers were landing on 1896x1440 every login. Reported by syeekco and alliumoop.
- An equipment slot emptied because its item left your inventory now takes that item's models off the character with it. Before, the slot emptied and the weapon stayed in the hand for the rest of the session, so a salvage run at a crafting table left three weapons in one hand while every slot read empty. Reported by Syeekco.
- Two more guards in the same area: the hands are now swept for models left behind, which the crafting tools already had, and a character rebuild stops the previous one before it starts, so an unfinished rebuild can no longer mount a second model on top of the first.
GM Tools
- The Players Online page is live on the dev portal. It is reading the real roster - who is online, where they are, their account flags, mute and login-block state - and the moderation actions run against the live server.
- The screenshot button on the Players Online page needs a server and client that carry it, and the test shard is still running the build from before. It used to stall for two minutes and then report a meaningless transport error; it now answers in twenty seconds and says the server build predates the request.
- Corrected something on the Players Online page. It claimed private whispers were never recorded; they are, by the sending player's own client, and the chat view was showing them without saying so. Whispers are now held back by default, revealing them asks for a reason and records who looked, and the count of hidden messages is shown so a GM can see they exist without reading them.
Combat
- World map creature that pulls you into an encounter is now destroyed the moment the encounter fires. The previous pass fired the destroy in the same tick but ran a two-second dissolve first; if the encounter scene started loading inside that window the dissolve could be interrupted and the creature would still be standing when you came back to the world map.
- Crowd Control Resistance now carries a description everywhere the stat is shown, and the Oracle knowledge base has a section that spells the rule out: the resistance lowers the chance a stun, root, knockback or knockdown lands, not the duration once it does; Stun, Knockback and Knockdown each have their own resistance that stacks on top of the general one; Confusion and Mesmerize have their own separate stats.
- Frost Weapon now applies the Water tree fizzle bonus to the wearer, matching Ice Arrow and the rest of the school. It shipped with the Fire tree value that Ignite Weapon uses, so equipping it raised your fizzle chance by 35% instead of dropping it by 20%. Reported through the in-game Oracle by Christ Pallid (bug #5616).
- The Obsidian Item of Greater Unlearning now clears every skill in the tree or category you use it on, instead of stopping at whatever level a follow-up skill still required. Requested by Patosh. Confirmation and tooltip text updated to match.
- Started work on two spells that let you take direct control of a creature: a maxed Animal Charm on an animal you have already charmed, and a maxed Summon Skeleton on a skeleton you already have out. Groundwork landed first - the possession machinery now records whether a possession came from the GM tool or from a player casting a spell, because the two answer to different rules.
- Split the possession machinery so the GM tool and a player spell can share it. Everything except the account check and the GM window moved into a common session that takes a profile: whether the possessor's body is hidden or left standing and killable, what ends the possession, and what it costs. GM possession behaves exactly as it did, with its old values pinned by a test.
- Wrote the rule that decides whether a full-strength Animal Charm or Summon Skeleton takes control of the creature: specialized in the school, a full glyph, and for Animal Charm a target whose level is under your Lunar specialization divided by ten. The dials all sit in the tester tweak panel, so the reach and the focus cost can be moved on a running shard instead of waiting for a build.
- Fixed Escape reaching the options menu behind a possession. While you are driving a creature the normal player input mode is not active, so the escape handler fell through to a branch that read the key regardless, and one press both handed the creature back and opened the menu.
- A possessed creature now takes its possessor's faction, shows who is driving it, and is judged in combat as that player. The last part is load bearing: outside a PVP scene the faction table calls two players friendly, so handing a creature a player faction without also delegating the hostility question would have made it immune to every other player.
- Death magic side is wired: with a skeleton already standing, a full-strength Summon Skeleton takes that skeleton over instead of raising a second one, dropping it to a low level for as long as you ride it. Holding a body costs focus every second, and any damage to your own body ends it. Your body stays where you left it, visible and killable.
- Corrected a combat-validation carve-out before it could matter. Possessed creatures were treated as PVE for hostility, damage windows and flag protection, which is right for a GM tool and would have made a player possession a way around all three. Player-driven creatures are now judged against their possessor.
- Moon magic side wired: with an animal already under your own Animal Charm, a full-strength recast steps into it, if its level is under your Lunar specialization divided by ten. That reaches level seven at the specialization threshold and eleven at the very top, so this is for ordinary wildlife.
- Wrote up the possession spells: how they work, what everyone else sees, the two switches that hold them shut, and a thirteen-step chaos script to run from ordinary accounts before either switch moves.
- Rainbow Blasts cast sound is now positional, so it fades with distance and direction instead of playing at full volume across the whole scene. The same fix carries to unicorn rainbow attacks. Requested via #1411.
- Brewed beer, wine and whiskey were never flagged as consumables, so the Consumable Duration Bonus from Elixir Extension has never lengthened a single drink buff. All 15 are flagged now.
- Enemies in a fight no longer talk over each other. A fighting creature could try a new line every five seconds and the shout it gives on spotting you had no cooldown at all, so pulling a group produced a battle cry from every creature at once followed by a steady stream of chatter. Each creature now waits 15 to 22 seconds between combat lines, and a group gives one battle cry instead of one per creature.
- The one-speaker-at-a-time rule for NPC speech had a hole: it let go of the floor when a line's audio ended, but the speech bubble stays up for six seconds. A one-second combat line freed the floor with four seconds of bubble still on screen, so the next enemy started talking over it. A line now keeps the floor for as long as its bubble is readable. Town chatter uses the same rule and is a little less frequent as a result.
- Nine creature bark panels have been asking for a custom gap between combat lines since they were authored (the Ravenswood bandits at 90 seconds, Kardan Nyx at 20, the Owl's Nest set at 90 to 120) and none of them ever took effect. The setting was written to one field and overwritten by another a moment later. Combat panels now get the pacing they asked for.
- Creatures that buff their allies had two things standing in the way. Threat from a friendly effect was landing on the ally that received it, so a creature buffing a packmate turned that packmate hostile toward it. Separately the ally-buff range asked the caster to stand 20m away from an ally it will only look for within 10m, so it walked away from the target it had just chosen. Both are fixed. Requested by Wishdragon.
- That fix is the first step of a larger piece of work: enemy groups where some creatures support the others instead of only attacking. Most of the machinery for it was already in the game and had never been reachable, so the early phases are repair rather than new systems. The plan covers occasional buffers, dedicated support casters, and creatures that pulse an area buff over everything around them.
- Groundwork for support creatures: the corrected ally-buff targeting now exists behind a per-creature switch, so a supporting creature can help an ally who is not hurt yet and picks whoever needs it most rather than least. Nothing in the world is switched on, so every creature still behaves exactly as before, and there is a live dial to take the whole thing back off if it misbehaves once creatures do start using it.
- Kobold Mages now help the kobolds fighting beside them. They cast Strength and Damage Resistance on whichever ally is worst hurt, they will buff one that has not been damaged yet, and they can put a buff up as the group notices you. Both spells have been authored on them for years and were effectively unreachable: the old target choice skipped any ally at full health and then picked the least wounded of the rest. Kobold camps are harder now, and nothing was trimmed to make up for it.
Server
- First live run found two things. The admin port is UDP rather than TCP, and the connection also needs the server's pinned public key or it is dropped right after connecting with only a debug line to say why. Both fixed, and both written down so the next person does not spend the afternoon on them.
- The server now writes its own record of private messages. Whisper capture had relied on the sending player's client reporting itself, which is fine for a casual lookup and not fine for a record that has to hold up. Ships with the next server update.
- Player possession got its own server op rather than borrowing the GM one. It carries no account check at all, which is the point, but it keeps every check the GM op makes about the creature, adds a rate limit, and holds a possession for ten minutes rather than two hours. Off by default on the shard.
- Chaos logins are now restricted to accounts with tester, VIP, dev, or admin access. Anyone else who enters a correct password sees a message on the login screen saying the test server is restricted to registered testers. Previously any live account whose password verified could log in.
- Read a day of chaos server logs and sorted what is still broken from what was already fixed. A 24-hour window covers five builds, so the noisiest errors in it were mostly ones whose fixes shipped partway through that same window. Checking every error against the build it was stamped with cleared the three biggest families, including one worth about 500 lines that had not happened since the previous morning, and left ten smaller problems that are still live.
- Found that Animal Lore studies were not being saved. The server had no rule registered for the lore counters, so it accepted each write, discarded it and reported success, and nothing ever retried. The cause is a server data table last rebuilt on 16 August, before the lore work landed: it carries 434 of the catalogue's 967 entries and none of the lore ones. It showed up as four log lines in a day.
Tools
- Editor scene-save warnings no longer stop an unattended Editor. The invalid-ID check only asked whether it was a batch run, so a dialog could open behind the Test Runner and hold the editor until a person clicked it, taking every automated session on the machine down with it. It now asks whether anyone is watching at all, and the navmesh warnings log their message whether or not a dialog appears.
UI
- Weapon and armor tooltips now show the item's own stats. They used to fold your character into every line, so a sword in your bag printed the damage you would do with it rather than what the sword is, and two weapons could not be compared without your Strength sitting inside both numbers. Hold Shift while hovering to get the old reading back, with your attributes and skills added in.
- An item's own enchantments, masterworks and socket effects still count toward the default figures, so an enchanted weapon still reads higher than a plain one of the same type. What Shift adds is you: Strength, attack speed, the parry modifier, and the matched armor set bonus. Ctrl keeps its existing job of expanding the enchantment list, and the foot of the tooltip names whichever views are available.
- The equipment comparison column reads the same way as the lines beside it, so it never prints a player-relative difference against a figure stated as the item's own. Fixed the vendor list tooltip cache while in there: it keyed on the item alone, which made vendor rows the one place in the game where holding Ctrl to expand a tooltip already did nothing.
Balance
- Built a Skill Popularity page on the dev portal: 60 days of live skill use, 14.8 million casts across 653 skills, with every skill split two ways — casts by a player specialized in that skill's school, and casts by a player who is not.
- The specialist split is where the page earns its keep. Fireball is 82% cast by Fire specialists and Tame Frenzy 98% by tamers, while Healing Touch sits at 7% and Mind Lock at 0% — the same tree holds specialist tools and things everyone carries.
- Basic weapon swings turned out to be 45% of all casts. The skill data files them under no school at all, so the page folds them back onto the weapon's school and lets you toggle them out to see the glyph game on its own.
- Added an Unschooled filter to the Skill Popularity page. 465 of the 653 skills sit outside every skill tree — deck swaps, consumable runes, dashes, combos and a long tail of one-cast summons — and none of them can have a specialist. Hiding them leaves 188 skills, and the overall specialist share rises from 35.6% to 37.0%.
- Changing which schools you specialize in now has to be done with a skill trainer or at an Oracle Confirmatory. Any trainer counts, including one who does not teach that school. Setting a specialization down, or swapping which of the two you already hold is Learning, can still be done anywhere.
- The school pushed out when you take up a new specialization is now set aside rather than unlearned. It keeps every point of experience it holds and stops counting, instead of draining back into the pool over time. Unlearning a specialization is still available when you ask for it by clicking that specialization directly.
- Potions, food and drink now carry the adventurer level they were balanced for. At or above that level you get the full effect; below it you get a proportional share, floored at a quarter, and the tooltip tells you which level the item was made for and what percentage you are getting.
- 266 consumables were given a level: potions by the ladder already in their names, from Lesser at 20 up to Aether at 100, and food and drink by how long the buff lasts, from a two minute raw apple at 10 to an eight hour Dragon Stew at 100.
- The top potions used to add a slice of your level on top of their listed amount, uncapped, which barely separated a level 5 character from a level 100 one. That term is retired on the 26 expressions that had it and folded into the printed amount, so an Aether Potion of Health now reads 525 to 625 rather than 400 to 500 plus a quarter of your level.
- Gathering, refining and experience buffs are left alone by all of this. A crafter can sit at a low adventurer level for a whole career, so tiering a mining or cooking buff against adventurer level would tax exactly the players it is for.
- The Consumable Power penalty that each health potion applies to itself is exempt too. Its whole job is to stop potion spam by getting weaker as you drink, so scaling it down for a lower level character would have let them drink more in a row rather than fewer.
Server
- Search All My Stuff no longer points the compass at a lot the character has released. Items still in the characters floating storage from that lot keep appearing in the results, without a stale destination tied to whoever holds the slot now.
Images
Client
- Fixed held items staying stuck in a character's hands. Rebuilding a character replaced the list of created weapon and tool models before the loop that destroys them ran, so the loop found nothing and every old model survived, still attached to the hand it was made on. Nothing could clear it afterwards, because unequipping matches a model against the item you currently hold and a leftover answers to an item you no longer have. One character was carrying two of these across four hours. Rebuilding now destroys before it clears, and anything that does get stranded is removed on the next pass over the hands.
- Siege catapults could still spawn invisible and unclickable for everyone but the first player in the scene. The earlier fix gave the check one frame to let the catapult finish arriving, but arrival is a network event and takes as long as it takes, so a loading client still lost the race. The check now waits for the catapult to be ready and gives up after five seconds instead of judging it at a fixed moment.
Audio
- Gave the Ancient Undead their sounds back. All twenty four of them, the guards, fighters, mages and sherden, share the lich sound set, and that set asks for a skeleton part only the real liches have. Every one of its six sounds failed to attach, so the creatures were completely silent rather than missing a clip: no idle, no combat, no death. Cow decorations had the same fault against the horse sound set. Both now fall back to the part their own model has, and a new test fails if a creature is ever wired to a sound set its skeleton cannot reach.
- The tyrannosaur now has footsteps. It had none, and could not have had any: footfall sounds are triggered by markers inside each animation, and the animations that came with the art pack carry no markers at all. Markers are now placed on each foot plant across the walk, run, sprint and turn animations, and they play heavy reptile footfalls rather than the human ones the sound set was pointed at. The same gap turns out to affect the crocodile, which has been silent-footed since it was added.
Content
- The forest road siege was sending reinforcements only some of the time. The encounter carries three copies of its wave setup, and in one of them all three reinforcement triggers had been left unconnected, so whether the follow-up attackers turned up depended on which copy you drew. All three are now wired to their own copy's spawners. A new test scans the encounter scenes and fails on any reinforcement trigger left unconnected.
Tooling
- The /texmem texture report now prints two ranked lists, one for art and one for render targets, where it used to print a single combined list. Render targets are sized by the display, so on a 3840x2089 window all 25 rows of the old list were frame buffers and no art texture was named at all. The art list no longer changes with window size.
- New Editor window, Texture Browser: every texture in the project in one list, sorted by graphics memory, import size, compression, streaming or disk size. Select any number of rows and change max size, compression, crunch, mipmaps or streaming across all of them at once.
- The browser can be told what actually shipped, read from the asset bundle manifests or a build log, so the list ranks the roughly 26,000 textures that go into a build rather than all 46,000 importers in the tree. Of the 1,601 uncompressed textures found yesterday, 959 ship: 2,843 MB, with 2,310 MB of it recoverable. The other 642 would have been work with no effect on anyone playing.
- Two things the batch editor refuses to do quietly. A max-size change on a texture whose art is already smaller than both the old and the new limit imports identical pixels, and about ten thousand textures sit at the default limit over smaller art, so those are counted as no-ops and skipped rather than written. Dye and colour masks, lightmaps, baked scene data and dyeable player equipment are held back from compression changes until you tick a box, because block compression moves the values those carry.
- The possession debug command could only fake a GM-tier possession, so the one thing meant to prove the player tier works without a server exercised none of it. It takes a tier now.
Client Performance
- Read texture residency back on the current build in a player-town template scene: 11,175 textures loaded, 4,958 MB of art the streaming budget can shed, 841 MB it cannot, and 1,256 MB across 84 render targets. The 1024-pixel art tier has taken the lead at 2,138 MB over 1,713 textures, ahead of the 2048 tier at 1,774 MB over 260. That is where the next round of texture compression is aimed.
- Ran the texture report deep enough to see past the frame buffers and got the first named art list: 165 textures, 1,701 MB. Nearly two thirds of it is uncompressed art at 16 MB or more per texture, and 800 MB of that is one medieval construction kit - the wood, plank and door-frame textures that most player houses are built from. A mipped 2048 texture costs 21 MB uncompressed and 5.6 MB compressed.
- The same reading turned up 21 texture names loaded twice over, about 361 MB of duplicate copies, all in that same wood set. Two separate copies of one texture in memory is a loading problem rather than a size problem, so compression will not touch it. Filed as its own lead.
Rendering
- Open water no longer reflects a fixed white at every hour. The reflection tint now comes from the color the sky system already computes for the current hour and weather, so the water warms through sunrise and sunset, cools under a clear noon, greys out under storm cloud, and goes dim blue at night. A clear midday lands at the same brightness it had before, so daylight is unchanged; the difference is at night and at the edges of the day.
- The tint is a multiplier over whatever each scene authored, not a replacement, so the 28 scenes that hand-tinted their water for swamp, sewer and Blood Bay keep their look and their asset files are untouched. The mapping keeps the sky hue, scales its saturation back so sunsets warm the water rather than dyeing it, and clamps the brightness at both ends so night never goes black and noon never blows out. Five tweak values expose the range, and one of them turns the whole thing off.
- Hand-tuned import settings on 1,053 textures flagged by the texture browser and the /texmem readings: 387 that shipped uncompressed are now compressed, 713 had their size caps lowered, 651 use crunched compression on disk, and 211 more stream their mips. Estimated GPU memory for the set at full resolution dropped from 8.7 GB to 2.0 GB.
- Second pass at the water reflection colour. The first one worked the colour out from the light the sky is emitting and then rescaled it so a clear midday landed back at the brightness the old flat white had, which is the part that needed to change, so on chaos it read as no change at all. There is also no single colour of the sky to read: the value in question is the light, and the skybox is a fixed gradient that rarely matches it. The colours are now authored instead, eyedroppered straight off the skybox. Day is 6A7D9E, sunrise and sunset pass through a warm 9E7D6A, and midnight is that day hue held at value 15, dark but not featureless. Weather is the only thing still read from the world, dimming the authored colour from 1.0 in clear air to 0.6 in a storm. Water that was hand-coloured for a place, like swamp, sewer and Blood Bay, is now skipped and keeps exactly the colour it had. Requested by Allium Oop, who supplied both the day colour and the night clamp.
Decorations
- Tip jar polish from tester feedback on the jar's first week: leaving a tip now plays a coin sound and prints a chat confirmation ("You tipped N gold."), so donors know the gold went in even when the jar window closed before the server answered (requested by lordhuxley). Owners get the same sound and a chat line when they collect and when someone tips while they are in the scene.
- Jar owners can now float the word "Tips" over the jar: a new checkbox in the jar window, visible to visitors too, anchored to the jar art and riding the deco scale (requested by rinaldi). Jar scaling itself was already enabled on both models (0.5x to 1.3x with Alt+X / Alt+Z); the tester task re-checks it on the current build.
Testing
- Eleven possession suites green, including the six that shipped with the GM tool and act as the regression net for splitting the session out of it. One of those needed re-pointing: it greps the source for the flag check by name, and the check moved behind a per-tier rule, so it now asserts the behaviour as well as the text.
- Welcomed a new external tester onto the chaos shard and recorded them in the tester roster. The roster drift check also caught one earlier tester grant that had never been written down; it is recorded now, and the check reports zero drift.
Housing
- Fixed mouse-over tooltips appearing for decorations on the far side of walls. The hover check treated dungeon room walls and a few other collider types as see-through, so pointing at a wall could show the name of a chair in the next room. Solid geometry now blocks the hover the same way it blocks click targeting.
- Closed a decoration scaling exploit: an item stacked on a resized decoration could pick up the larger size when moved, and repeating the trick grew objects far past their designed limit. Sizes are now clamped on pickup, on placement, and by the server, and decorations already grown past their limit display at their normal maximum.
- Search All My Stuff now names the Property Manager for items sitting in storage that is off a lot, a house you put away or what a released lot left behind. Those rows read "Unknown Scene" with nothing else on the line, so there was no way to tell where the item was; they now carry the stored house name, the lot size and the storage name you gave it.
- Selecting one of those rows enables an Open Property Manager button beside Set Compass Destination. It opens the Property Manager with that storage selected in the list, and it holds the selection until the window has its storage list back from the server. The compass button stays off for storage that is off a lot, since the lot it used to sit on may be unclaimed or somebody else's now (found by gravidy).
- Claimed lots gained a Teleport to Lot option on the right-click menu, in both the Lot Deeds window and the Property Manager. It spends one Teleport to Zone Scroll after a confirmation prompt and puts you in front of the lot rather than at the town's usual arrival point, so there is no walk across town afterwards (requested by MrChadwyck).
- The new option explains itself when it will not fire: it greys out with the reason when you are standing in the lot's own scene, carry no scroll, are in combat or mounted, or the destination itself refuses travel, and it does not appear at all on a deed that is not claimed to a lot.
Art
- Removed six duplicate source textures from the Tudor player houses. The house pack stored nine of its images twice as png and tga pairs; five copies were referenced by nothing and one door-and-window texture had its two remaining users moved to the sharper copy the other six materials already used. Four gloss-map pairs stay for now because their two copies carry different gloss data and picking one would visibly change live house materials.
World Events
- Fixed the celebration chat line repeating on every scene change. A single boss kill was printing The realm is celebrating the fall of... three times per zone for the full hour the bonus ran, because the client cleared its already-told flag at three separate points during a zone. It now tracks which celebration it announced, so the line arrives once. Reported by nyarkie.
- A Cabalist falling in a besieged town now announces once shard-wide. The kill was published by every instance of the town that fought its own Cabalist, while only one instance actually ends the siege, so a second party reading as a different killer produced a second identical announcement minutes later. The announcement now rides with the write that ends the siege.
Crafting
- Crafting station ingredient rows now say how many of a material you have banked as well as carried: the familiar 3/5 grows a (+2,112 bank) tail beside the existing lot-storage one. The bank figure is informational and deliberately does not change the row colour, because a craft consumes what is staged on the table and cannot reach the bank.
- Hovering a recipe now says how many of the finished item you already own, which is the half of the request the ingredient counts never answered.
User Interface
- The teleport destination window now has a star at the left of every row. Starring a zone pins it to the top of the list, above advertised scenes and tournament towns, and clicking the star again unpins it. Pins are kept per character, so your other characters keep their own. Requested by Wishdragon.
- The Skills window has a second view. A Tree and List switch sits on its top row: List drops the ring rail and the tree canvas and fills the window with every skill you have learned, grouped into school sections you can fold, each skill showing whether it is training, parked or unlearning. Requested by MrChadwyck.
- Each school header in that list carries its level total, a count of how many of its skills are training, and Train All and Not Train All. Unlearn All stays in the header right-click menu, where the school sigil has always kept it, since it drains a school's experience back into the pool. A search box narrows the list by skill or school name, and both the view you chose and the schools you folded are remembered.
- Setting training used to mean opening one of 37 school sigils at a time and finding each skill in its tree. The advancement rules themselves moved to one shared place so the list and the tree cannot drift on the specialization and elixir couplings, with 96 tests over the grouping, the search, the level floors and the row geometry.
Documentation
- Set a naming rule for this blog and every other player-facing page: a player is credited by their character name, their Discord name, or their forum handle. Account login names stay off, on their own as well as paired with a character.
Vendors
- NPC merchant lists, player vendor shelves and the vendor search results now show how many of each item you already own, after the item name. Before your bank contents have loaded it reads (carry 13) rather than (own 13), because claiming to know your whole account while the bank is still unknown would be wrong.
Inventory
- Recently looted highlighting can be switched off. Rows that arrived since a bag window was last opened still get a coloured background by default, but there is now a "Highlight Recently Looted Items" checkbox in the inventory window's own Options row and in Options > Interface. The Recently Looted tab, its Reset button and its newest-first order are unchanged, which was the argument for the switch: the tab already answers the question on demand. Requested by Allium Oop.
- When the server refuses to move an item, the game now says why. Refusals arrived as a bare code, and the client answered with a log line and slid the item back where it came from, which is hard to tell apart from the game ignoring you. Five hours of chaos logs held fifteen refused bag operations that no player was ever told about. Repeats inside three seconds are folded into one message so a Take All refused item by item does not stack dialogs.
Items
- Every item tooltip now carries a line reading You own: 13 carried, 2,112 banked. Requested by MrChadwyck.
- A new right-click entry, Count Everywhere I Own, asks the server how many of that item type the account holds beyond your pack and your bank: other characters, lot and house storage, mail, vendor listings and ransoms. The answer joins that item's tooltip for the rest of the session. It is a button rather than something a hover sets off, because the search behind it reads every container the account owns.
- The whole readout has an off switch in Options, Interface, General: Show Owned Quantities at Crafting Stations and Vendors.
Achievements
- The fourteen fish that go in a fish tank now count towards the fishing achievements. Each of them gets a first-catch achievement of its own, and every one adds to the lifetime catch total and to the number of different kinds of fish you have landed.
- The different-kinds chain moved with the roster: Complete Angler now asks for 68 kinds instead of 54. Catching a clownfish or a goldfish used to credit nothing at all.
- Both tetras are in, and pinned. The Aether Tetra and the Neon Tetra trade places twice a year, so only one of them is in the water at a time. Their rows are held by hand rather than swept, or the one out of season would lose its achievement every time the roster was rebuilt.
Plans
- Wrote up the server-side follow-on: three separate paths answer overlapping parts of "what does this account own" today, and the two that could answer a count are rate limited because each one re-reads every container the account has. The plan is a per-account summary kept current as items move, which would retire all three and give the bank figure to the client at login for the cost of one number per item type.
Player Vendors
- Player vendors: you can change what a listing asks without taking it down. Right-click one of your own rows under My Listings and the menu now offers Change Price; the same price box that opens when you list something reopens on the price it already asks, and the item stays on the shelf. Before this the only route was Remove Listing, which put the item back in your pack, then listing it again from scratch. Requested by gravidy.
- The commission is worked out again for the new price, so repricing costs what listing at that price would have cost, and nothing is taken at the moment you edit. The listing gets a fresh clock, so its expiry runs again from the change. Anyone browsing your vendor with the window already open is looking at the old price: if they buy while holding that stale row the purchase is refused and their window reloads, so nobody is charged a price they were not shown.
- Change Price only appears on vendors that can use it. The listings table is shared with the town auction house windows, where there is no repricing yet, so the entry was showing up there and doing nothing when clicked.
Skills
- Skill trees now award their titles. Train every skill in a tree to level 100 and you are a Miner, a Blacksmith, a Tactician, and so on for all 37 trees, with the group titles above them (Gatherer, Refiner, Producer, Juggernaut, Magician, Strategist) and Magnificum Dominum for finishing every tree in the game. Requested by Sandra Sosaria.
- Those 46 titles have been in the game data since 2013 and nothing ever handed one out. Any character already past a requirement is awarded them at their next login, so a long-standing character is likely to find several waiting in the Titles tab.
- Two new rungs sit above grandmaster: Elder for a whole tree at level 150 and Legendary for a whole tree at level 200. Elder Miner, Legendary Blacksmith, 74 titles in all.
- Four more titles count skills instead of trees, so the 200 line is reachable without finishing a tree there: Elder Adventurer and Elder Producer for ten skills of that kind at 150, Legendary Adventurer for two adventure skills at 200, Legendary Producer for one producer skill at 200. A whole tree at 200 runs from 17 billion experience for Cooking to 2,122 billion for Tactics.
- Earning one mid-session prints a line in chat and the title is wearable straight away, with no relog. The server works the grant out from your stored character sheet rather than from anything the client reports, and it re-checks the whole ladder every time the client asks for your titles, so a missed grant heals itself at the next login.
Dungeons
- The dungeon entrance hover and the Dungeon window no longer list what a dungeon is built from. That belongs to whoever is building it, so the Dungeon Builder's Rooms tab has a Material column now, sortable beside the room name. Requested by Rinaldi.
- Secret doors came off the entrance window for the same reason, and the count moved to the top of the Rooms tab where only the dungeon's owner sees it. Deleting the row alone would not have hidden the number, since total pieces less every listed kind gives it back, so the secret pieces are counted inside Halls instead. Requested by Rinaldi.
- That secret door count was also wrong. It read the kind of the whole piece, so it only ever saw the 7 pieces sold as a secret door and missed every room with one built inside it. The piece table is baked off the prefabs now and finds 15, including the Chicken Room, the Ravensmoor lich room, the Blackblade lava grotto and The Fall's throne hall. Invisible walls a builder has placed count toward it too.
Lua Addons
- Lua add-ons can now fetch a web page over HTTPS without freezing the game. ShroudHttpGet returns straight away and the text arrives later on a ShroudOnHttpResponse callback. Requested by Tirrag on the forums.
- Internet access is off until you turn it on. Only an add-on installed as a package can ask for it, its manifest has to name the exact sites it will contact, and each add-on row in the Add-Ons window has its own Internet button that starts off. A single .lua file dropped in your Lua folder never gets it.
- What the client enforces so an add-on author does not have to: GET only, HTTPS only, only the declared sites (re-checked on every redirect), 256 KB of text at most, and about six requests a minute. Requests are dropped without a callback if the add-on is turned off or reloaded mid-flight.
- The add-on store moved with it: submissions can now declare the network permission and the sites they use, and the automated security review was rewritten to read every URL an add-on builds and say what game data ends up in it.
GM-Tools
- Fixed the Players Online page reporting a failed account-flag change when the write had actually landed. Flags persist to the auth database, but the page read a copy that only refreshed when the player next logged in, so a successful change came straight back showing the old flags. The portal now updates that copy the moment a flag write is confirmed and the page shows the new flags immediately.
Nameplates
- NPC nameplates and bark text stopped sinking into the body when the camera is pushed in close, as under a market awning. The close-camera gap hold from the August 16 nameplate fix now applies only to your own plate, floored so it stays clear of your head. Reported by gravidy.
Bank
- Your banked count now arrives with the rest of your character at login, so a crafting station, a vendor list or an item tooltip can say "You own: 13 carried, 2,112 banked" without you having walked to a banker first. The server already counted every banked item to build the list it sends; it just used to throw the numbers away. Requested by MrChadwyck.
- Fixed the empty bank containers that were appearing in towns where you had only ever crafted. Fetching a bank figure used to create a bank container in whatever town you were standing in, and that container then showed up in the bank window's location list. Nothing fetches that way any more.
Launcher
- The launcher was sending its own Display setting to the game on every Play, and the game recorded it as your saved choice, so picking Full Screen in game could not survive a relaunch. It now sends that setting only when you have picked one in the launcher, or when the game has no saved setting yet.
Loot
- The interact key opened a corpse and then refused to take anything, for some players and not others. The second press is the take-all, and it was handled below a guard that gives up the moment the mouse pointer is over any interface panel. Loot windows moved onto the new interface toolkit recently, so a cursor resting on the loot window swallowed the key. Window positions are saved per install, which is why one player in a party could loot and the one beside them could not. The take-all now reaches through the window it is emptying; a press aimed at a panel still does not work a switch drawn behind it.
2026-08-21 · 155 items
The New Britannia Herald
The eye with no eye, a map that hoarded every map, and a young tyrannosaur
Headlines
- Pets hold their fights now: a creature that backs away can no longer walk your pet off a fight, and the leash stops handing that creature to you unless you were the one who left.
- The M-key map was holding every map picture in the game in memory, 1.46 GB of art, to draw one. It now keeps the one for the area you are in.
- Vendor search stat filters work. "chest" with Dexterity at least 10 went from 1,987 results to 690, and to 224 with Intelligence added. The index had also been rejecting listings since 31 July, 36,142 of them.
- The in-game Oracle now takes suggestions properly. It says so when you open it, it stops putting bug questions to an idea, and a filed request reads as a proposal instead of a bug report wearing the wrong hat.
- Scene maps went to 4K, with Ardoris, Central Brittany, Owl's Head and Soltown at 8K, and off a 128-colour palette onto full colour.
- Animal Lore learned to tell stories: fourteen beast families got four levels of written lore each, uncovered by study, with a new Naturalist achievement category and the Master Naturalist title.
- The launcher now installs a fresh game as one resumable CDN download instead of thousands of individual file fetches, and a new build-farm job keeps that archive current after every release.
- Animal Lore now reads in all eight languages: 4,178 records, checked name by name against what each language already calls those places, then read back in full by a native-level reviewer per language.
- The Chaos test shard launcher is now a public download: Windows, Linux, Mac. Install it once and it patches itself from there. Sign in with your Shroud of the Avatar account name and password. The Steam sign-in does not work on the shard.
- A new creature: the Young Tyrannosaur, a tier 12 beast that bites and sweeps its tail through anyone standing beside it.
- Crash triage. A week of automatic crash reports came down to six real problems: two Linux crashes, a Windows client that vanished without a trace, and a loading screen that can never resolve because the client keeps resending credentials the server already refused.
- A new Players Online page on the dev portal shows everyone on the test shard and lets a GM act on them - boot, timed login block, mute, private message, account flags - with a reason required and every action recorded.
The Herald
- The New Britannia Herald for 2026-08-20 is up: Ninety-three zone maps had been loading at their smallest size for three weeks, ambient occlusion had never once run in a downloadable build, and the first real town siege refused every kill inside the town it was besieging. Tamed pets stopped dismissing themselves twelve seconds after every summon, quitting the Windows client dropped from twenty-six seconds to two, and large graphics cards finally get a texture budget worth their size. Also retroactive achievements, streetlight controls for town governors, and a comparison tooltip that does the subtraction for you. Listen or read the transcript (17 min). Subscribe in any podcast app: /blog/podcast.xml
Community
- Swept the forums and filed six wishlist items from the community: a web-reachable COTO store, a simplified plant-once agriculture loop, Elder/Legendary skill titles, owned-quantity display when crafting or buying, pinnable favorite zones, and an optional single-window skills list.
- Collected the complete in-game writings of Belladonna Rose into a single web book: 369 works and 57 signs and plaques written between 2016 and 2025, recovered from the database, deduplicated, and bound into nine themed volumes under her Black Rose Publishing imprint. The page lives at a private link made for her.
Documentation
- Wrote a single reference for how anything in the game decides where to walk. It covers the four separate pathfinders the game runs (the in-scene one, the overworld hex map, the one the load-test bots use, and the scene-to-scene router for quest directions), the pathfinding library we use and the changes made to it over the years, the three kinds of baked walking data the game ships, and how a creature gets from a decision to an actual step. Until now those pieces were written down separately or not at all.
- Folded today's leash and creature-movement fixes back into the navigation reference written this morning, so the list of open problems no longer includes the five that were closed hours later and the leash numbers match what the game actually does. The remaining open items are avoidance during a fight, pathfinding running single-threaded in almost every scene, path quality, the tile size the walking data is baked at, and the scenes that are missing walkable ground where they should have it.
- The Young Tyrannosaur is the third creature built end to end from our creature-creation documentation, and the first that needed an animation written rather than picked. Three things the build ran into went back into those documents: a bought animation can carry a full set of bone tracks and no movement at all, large baked animations have to be stored as binaries or they bloat the repository for everyone, and how far a creature is scaled down has to be decided alongside how fast it runs, because the two together set how quickly its walk and run play back.
Tooling
- Upgraded the Unity MCP editor plugin from 0.86.0 to 0.89.0 and committed the whole set together: the package manifest and lock, the three NuGet assemblies it carries, and the new build symbol the plugin reads to pick its dependency set. The files had been sitting uncommitted, so a fresh clone resolved the older version.
- The Unity editor log on the main dev box had grown to 1.75 GB. Nearly all of it was one warning: the Dynamic Decals plugin ran its high-precision normals pass from the wrong camera step, so Unity 6 rejected the second camera it renders and printed a stack trace on every Scene View repaint. The last 200 MB of the log held over 64,000 copies of it. Moved that pass to the pre-cull step and the warning stopped, with decals rendering as before.
- The Time of Day plugin had registered its maximum-value property drawer against the minimum-value attribute, so two drawers claimed the same attribute and one of them threw a null reference on every inspector repaint of a sky field. Every null reference exception in the editor log came from that one line. Fixed the registration, which also means the maximum clamp now runs for the first time.
- Cleared the last compiler warnings out of our own code. Unity 6.5 deprecated the object-search sort mode, and 16 call sites still passed it; they now use the overload that already behaved the same way. Five more warnings covered the retired integer conversion for entity ids, a scene view hook Unity 6 added underneath one of ours, an unused event in a test stub, and a serialization note on a runtime-only field. Editor and player assemblies both build with no warnings from project code.
- The project asset cache server was pointed at the local machine, a value written in by an earlier reserialization batch rather than chosen. Nothing answers there, so every asset import worker retried the connection every few seconds and logged the failure: 2,813 of them in one worker log. Pointed it back at the build box accelerator, which answers.
- Found a deploy bug while wiring the above: the health service shipped a hand-written list of filenames, and one collector added a while back was never added to the list, so it had never reached the server. Replaced the list with a wildcard.
Pets
- The audit behind that reference turned up eight problems worth fixing, several of them in the pet leash. The tether is measured from you to your pet, so a creature that walks backwards decides when your pet breaks off, and the leash then hands that creature to you. A leash also wipes the pet's threat every half second it runs, rather than once when it starts. A pet whose summoning point no longer exists can leash forever with no way out, because the sixty-second safety valve added for wild creatures skips pets. And obstacle avoidance is switched off both in combat and while returning home, which is when creatures most need it.
- Your pet no longer breaks off a fight because the thing it is fighting walked away. While it is holding a target it may range about twice as far from you as when it is idle, so a caster or archer that backs off can no longer end the fight by retreating. Reported by mondravis, who pointed out that a mob kiting out of range was both dropping the pet's fight and dumping the aggro on the tamer.
- The other half of that: whatever your pet was fighting now comes after you only when you were the one who walked away. Stand still while a creature retreats and it stays interested in your pet. Your pet also keeps the threat it builds while walking back to you, instead of throwing it away several times a second for the whole walk, which was a large part of why pets seemed unable to hold anything's attention.
- Two more leash fixes. Height is judged separately from distance now, so a pet one floor above you or part way up a staircase stays put instead of counting as far away and running back; it gets its own eight metre height allowance. And a pet walking back to you that gets no closer at all is placed at your feet after about twenty seconds. Before this, a pet whose summoning point no longer existed could walk back forever with nothing to stop it.
Terrain
- Committed a terrain layer the editor baked on 20 August when a scene with older mudslide terrain was opened. The folder tracks 2,774 of these and was one short, which would have left that terrain pointing at nothing on a fresh clone.
Client Performance
- Two measurements from the same audit. Pathfinding is set to run on the main thread in 424 of the 428 scenes that ship, with a one millisecond per frame budget, even though the code default is to use worker threads. And the size of the tiles the walking data is baked in varies a lot by scene: most are 6.4 metres, but 85 graphs sit on the smallest size the tools allow, 0.8 metres, almost all of them dungeons and interiors. At that size the border around each tile is as wide as the tile itself, so most of the work of building them is spent on borders, and the setting meant to discard tiny unusable scraps of walking surface stops working. Both need a measured test on one scene before anything changes.
- The map window used to keep every map picture in the game in memory at once. The registry that lists them referenced each picture directly, and Unity loads an asset's whole reference graph when it loads the asset, so mounting one small catalog pulled in all 305 sheets: 1.46 GB of source art, held from login to quit, to draw at most one of them. None of it could be shed either, because nothing renders a map sheet so the texture streamer never touches them. The client now keeps one, the map for the area you are standing in, and drops it when you travel.
- Two guard rails came with it. The scene map registry is now checked for texture references on every test run, so putting one back fails a test instead of quietly costing a gigabyte again, and the map sheets are packed into a bundle of their own rather than riding along as somebody else's dependency.
- Compressed the remaining large uncompressed textures the first /texmem reading pointed at: the elven table service set (normal maps, base colours, height maps), the dog bowl pair, the 3DForge village base pair and the Nailhead Doll normal map. Twenty textures at 4096 that loaded at 85 MB (normals) and 64 MB (colour) each now import at about 21 MB and 11 MB, about 1.15 GB of texture memory at full mips. The Frost Giant's 32 Viking Raider textures were compressed and downsized by hand in the Editor the same day.
- The mask-compression rewriter gained a --slots dial (mask, normal, other, all), so one tool now covers the normal-map and albedo tiers with the same dye, UI and scene guards as the mask sweep; the importer type wins over the filename, and a mask-named albedo such as a goblet base colour is read as an albedo. 41 new tests pin the readings. Offline scan of what is left: about 180 uncompressed non-mask textures at 2048 (3.2 GB) and 235 at 1024 (1 GB), the next two batches.
- First field reading of /texmem on a DEV build after the one-map-sheet fix: 11,740 textures, 137 render targets holding 1.2 GB at display size, no map sheet left in the top 25. The four largest art textures were uncompressed 4K normal maps and albedos from the Frost Giant's armour set, which set the direction of the compression pass above. The roster reports streamed textures at full size, so it measures what to shrink rather than what is resident.
Testing
- The editor test suite is back to zero failures. A headless run over all 16,949 tests found 46 red, and twenty of them were a single fault: two changes from 20 August reached the game manager from code the editor tests run outside play mode, and once its static constructor fails the failure is replayed for everything that touches it afterwards. The other twenty-six were nine separate causes.
- Eleven test assertions were re-pointed at code that had moved out from under them, including the ship-safety check that keeps designer-only conversation material out of player builds. That one had been failing since the build menu was split into partial classes, which is the worst kind of guard to have crying wolf.
Client
- Removed the Load Time Baking checkbox from the Video options. When it was on, the client merged a scene's fixed geometry together during the loading screen and then held a second copy of that geometry in memory for as long as you stayed in the zone. It did nothing for decorations, which stream in well after it ran, and the memory it held came out of the same pool decorations and textures load into. The setting was off by default, so the only difference most players will see is one fewer row on the Video tab.
- Went through a week of automatic crash reports: 46 reports that the grouping tool split into 12 signatures, but which collapse to six real problems once the duplicates and the already-fixed ones are set aside. The two largest groups were both fixed last week, and one group turned out to be an internal profiling build rather than a player.
- Filed a Linux client crash that happens a few seconds after entering Castle Atos on AMD graphics, and a second Linux crash that happens during startup right after the game window resizes. These are separate problems on separate hardware and are tracked separately.
- Filed a Windows client that stopped in Castle Atos leaving no crash record of any kind. Castle Atos has now produced client crashes on three machines across three builds and both operating systems, which is the thread worth pulling next.
- Tracked down why a client can sit on a loading screen that never resolves. When the server turns down a scene join, the client waits ten seconds and sends the same rejected credentials again, with no limit and no backoff. It repeated 57 times in one report and was still going when the log ended, leaving no way out except killing the game.
- Ruled out a suspected cause instead of leaving it sitting in the bug reports. The higher-resolution paper maps landed in the same builds as the two newest crashes, but map images are held as soft references and only one is ever in memory at a time, so the timing was coincidence.
- A busy hub like Castle Atos no longer floods the log with spawn-queue warnings when a scene is slow to catch up: the client now reports the backlog at most once every 30 seconds instead of every two, so a saturated area shows up as a short set of lines rather than a two-hundred-line burst.
- Client no longer retries a rejected scene join every ten seconds forever after certain server rejections. On the reject types where the client credential is stale, the client now refreshes it once, and after five rejected attempts in a row the client drops back to the login screen instead of sitting on a loading screen with no way out (#5569).
- Zone maps that read blocky on lower graphics presets now stay sharp at every preset. Tenebris Harbor, Kiln, Desolis and the other 90 in the same group, plus 58 crown store pictures, no longer carry a mip chain that the texture-quality slider could trim; they always load at their full resolution.
- Grass removers, tree removers and terrain levellers in player-owned towns no longer stay visible to players who are not in Decoration Mode. Placing an indicator-carrying decoration once used to leave the show-indicators option stuck on for good; the option is now honoured only while Decoration Mode is on, and the held item still shows its own indicator while it is being placed. Reported for Umbra (#5585).
Combat
- Two shared maths helpers now agree with the engine they are named after. The half-precision encoder truncated where Unity rounds, so a yaw of 359.9 encoded one step apart on the two sides, and a vector magnitude returned infinity for large inputs where Unity returns a number. Neither is on a live path yet; both are the implementation the server is meant to share.
- Chaotic Confusion in Training mode now gains skill experience on every cast, whether the confusion effect lands or is resisted, and whether or not the target is already confused.
- The four Death Bunny creatures now count as Animals. Animal Lore reads them, and combat effects that key off Animal targets apply to them again.
- Trip now respects Subterfuge specialization. The mash-to-recover roll on a knocked-down player was ignoring the strength of the knockdown, so a Trip cast by a specialized rogue was no harder to shake off than an ordinary trip. It now scales the same way stun and root already do, and Trip stacks its own strength onto the roll when the caster has trained Subterfuge specialization. Other knockdown skills keep the recovery timing they had before.
Creatures
- Creatures walking back to where they came from steer around scenery and around each other again. Obstacle avoidance was switched off both while a creature was fighting and while it was returning home, so anything you pulled and then broke off from walked all the way back with none at all. That is the likely cause of enemies circling a doorway instead of getting through it, reported in The Rise near the teleporter room. Avoidance during a fight stays off for now while the cost of turning it on in a crowd gets measured.
- Any creature that stops getting anywhere now re-seats itself on the walkable ground and looks for a new route. Until now only a pet chasing a target did that, and only a pet: a pet stuck while following you had nothing at all, and the only way out was to walk far enough away that it teleported to you. Dropping a chase entirely is still limited to pets, since a monster grinding against a wall is usually where it was placed to spawn.
- A third fix from the same audit, in the code that reacts to the walkable map changing. Each creature pins itself to the region of the map it is standing on, and rebuilding the map renumbers those regions. The reset that clears that pin was firing for the narrow case and skipping the whole-world one, which is the case that renumbers everything, so a creature could end up held to whichever region had inherited its old number.
GM
- The possession window ability tiles follow the chosen skill icon set. The art was written once when the bar was built and the bar only rebuilds when you possess something else, so switching sets repainted every other skill surface in the game and left this one on the old art.
Art
- The Flying Eye hair shader falls back to a shader that exists. The vendor drop named one that ships with a rendering package this project does not use, which cost the shader its fallback rather than giving it one.
- Scene maps were redrawn at higher resolution. Most were 2048 pixels across and are now 4096, and four go further: Ardoris, Central Brittany, Owl's Head and Soltown are 8192. All 247 also came off an 8-bit palette onto full 24-bit colour. The hand-drawn set had been limited to 128 colours, so shading that used to step into visible bands is smooth now.
- The 69 joke "no map here" cards are gone. Their registry entries locked the map at minimum zoom, so the card could never be read even when you opened it. Dungeons are unaffected: anywhere that shows the three-dimensional dungeon map still shows it. A small number of places, mostly dev and PVP scenes, now report no map instead.
- Three portal and teleporter prefabs each carried a component whose script had been deleted from the project years ago, which logged 1,168 missing-script complaints in the current editor log. Stripped the seven dead components by hand so the prefabs kept their existing serialization, and confirmed all three reload with the same object and component counts. Also removed a 4,807-line hair shader variant written for a render pipeline this project does not use; it failed its include on every import and no material referenced it.
Decorating
- Fixed global dev deco placement. Devs can toggle /gmdeco to place decorations in any scene without a lot, but the client half did not work: the synthetic plot the feature places through had no decoration counter, so the first placement threw and no global decoration rendered for anyone, and dragging an item out of the backpack hit a lot-ownership check and never entered placement mode, leaving the item stuck on the cursor. Also fixed placement on terrain, which was refused everywhere, and stopped the feature making its scene count as a town for everyone in it.
Client
- Fixed a Blue Dragon fire-breath visual that stayed on after the attack ended: once the dragon dropped to low health and started breathing fire, the flames used to keep pouring out for the rest of the fight. The visual now stops when the attack does.
- Applying a blueprint no longer strands an item in your backpack when two saved copies share the same kind and only one is already on the ground. The ground copy now goes to the saved spot it fits, so a two-step apply after picking everything up and putting the base back in your bag lands every item where the preview said it would (requested by gravidy).
- A resource node interrupted mid-mine (taking damage, dying, changing your equipped tool) no longer stashes its rolled loot on the node and then stacks a second full drop on top of it the next time you mine. A coal node in the Elysium Mines was the reported case, but every resource node worked the same way.
- Castle Atos fire fixtures kept their on/off state to themselves: four braziers and campfires had connection ports that never got around to registering with the sync layer, and the sync island then refused to hand out a lock name to the torch that owned them. The registration is now self-healing for a live port, so the fire state on those fixtures agrees between players in the scene.
- Right-click walks the character again after an NPC conversation, so a charged attack can be started while moving. Only players using Options > Controls > Hold to toggle cursor were hit by this.
- Removed a dead armour flag that had no effect. The hide when mounted tick on cloak and cape data was inert (the game stopped reading it after mounts got colliders that stop cloaks from clipping into saddles), so this is a code cleanup only; cloaks look and behave the same as before.
GM Tools
- Fixed the Players Online window freezing on a stale roster. An ordinary zone change could swallow the reply to a roster request, and the cache had no timeout, so the list stopped updating for the rest of the session and the Refresh button did nothing. The request now carries a token and a 12-second deadline, a manual Refresh always supersedes whatever is in flight, and a roster older than 90 seconds is marked STALE with its real age instead of passing for current.
- GM requests that can no longer be answered now fail instead of hanging. Admin operations are dispatched by the scene room, and the room is torn down before the connection state changes, so a request sent in that window vanished with no reply. The client now refuses to send it, and any request still waiting when the room or connection goes away is failed and reported. The prize Mailbox benefits too: one lost reply used to leave its Send button disabled for the rest of the session.
- Started work on a hosted Players Online page for the dev portal. The game server has always carried the operations a GM needs - kick, timed login block, mute, account flags, private message - but the only program that could reach them was an old admin console that no longer runs anywhere. First piece landed: a small headless client that speaks that interface and performs one operation per run.
- Built the Players Online page for the dev portal: everyone on the test shard in one list, with the account record, every character on it, recent chat, and a moderation history. Clicking a row opens the details.
- The page can act, not just watch. Boot someone off, block their logins for a set number of hours, mute them, send them a private line, or change their account flags. Each one asks for a reason first and states exactly what will happen, and every action is recorded against the account with the name of whoever did it.
- The Players Online page can now ask a player's game client for a screenshot. It captures the game window only, never the desktop, and the request is recorded against the account with the name of whoever asked. Reused the capture code the in-game Oracle already had for bug reports rather than writing a second one.
Server
- Closed a path that could leave a disconnected player listed as online permanently. If anything threw while cleaning up a disconnecting connection, the removal from the server's connected-player collection was skipped, and nothing else ever prunes it. That cleanup is now bounded so the removal always runs.
- The screenshot request travels the same road a kick already does: the admin interface hands it to the master server, which passes it to the game server holding that player's connection. Three small additions, no change to anything already on the wire.
UI
- The backpack search box and the teleport-to-location filter now accept the original English name for an item or a zone as well as its localized name, so a player playing in another language can still type the English word they know and find the row (#5531).
- The year suffix on the top-center date bar (the "PC" after the year, short for post-Cataclysm) is now a translatable string in its own right instead of a literal baked into every date format. Russian speakers see one small consistency tweak, with the short date form now using the same abbreviation as the top bar; every other language keeps the same visible output for now, but a translator can set the era abbreviation per language without touching the date formats. Requested by the in-game Oracle (#5532).
- The Property Manager grew a draggable divider between its two panes so the storage table can claim more of the window than half. Widths persist and double-clicking the divider puts them back to even.
- Every UI window now leaves clear space between the [X] close button and the top-right corner. Before, the button sat inside the corner\s invisible resize band: hovering it showed the resize cursor and a click just off it started a resize instead of closing the window. Reported in #5544.
- Fixed the Theme Editor Surface Opacity slider so 100% now means the window is fully opaque. The slider top used to be 125% and windows stayed partly see-through the whole range; the range is now 25 to 100 and every backing is solid at the top.
- Right-clicking an equipped taming necklace on the character sheet now shows the full menu again: Unequip, Repair, Link Item In Chat and Add To Wishlist. It had collapsed to just Add To Wishlist while the necklace was worn, so the only way off the character sheet was dragging it back to the pack. Reported by rinaldi while verifying the collar-save fix on chaos build 135.
- Fixed #5556: the keybinding list on the Options windows Controls tab now counts numbered rows as numbers instead of as text, so Hotbar 1 through Hotbar 10 read in order and the Equip Deck 1 through 48 list runs straight through instead of interleaving the two-digit rows between the single-digit ones.
- Turning off Show Quest Items now hides quest items that are also artifacts, matching the option label. The four named artifacts (Scepter of Dread, Heart of Sorrows, Bonesteel Crown, Shroud of the Avatar) still stay visible on every tab because their owners rely on them being in reach; only they were meant to be exempt when the exemption was added.
- Character sheet Stats tab, Total Resistances row: the total was reading high because it added your school attunement and your magic attunement at full weight; the actual combat math halves both when it works out how well you shrug off an incoming spell. The row now matches the combat number, and the tooltip on each row spells the formula out.
- Moved windows and bars now return to your chosen spot when the screen area grows back after a resolution or UI scale change. Windows nudged inward to stay reachable used to stay put once the screen expanded again; the request is remembered separately from the pull-back now.
- Inventory column headings and Quantity, Weight, Durability and Value cells now open a small tooltip with the full word or the full number when a resize has cut them off. A heading or cell that still fits stays quiet.
- The Light Settings window on a placed decoration now has a typeable number field beside each of the Range and Brightness sliders, so a player who wants a particular value can enter it directly instead of dragging the slider to it. Range reads in metres when the light was authored with one and in percent otherwise; brightness is always percent. Values typed outside the allowed band snap into it.
- Dyeing an item that opens the item preview window (a town hatch, most bags and tools) used to drop the confirmation dialog on top of the preview, and the modal veil blocked the preview from being dragged out from underneath. The preview now steps aside for the confirmation and slides back into place after the choice.
- The Crown Store category rail now puts the item count next to the category name. A widened rail used to leave the name at the left and the count at the right with a large empty gap between them; the count now follows the name and any extra list width shows to the right of the row (requested by nimuecw).
Content
- Six creatures were walking around with their own name wrapped in question marks - the Scrying Eye, and the five Wrasses added a few days before it. A display name has to be registered with the translation system before the game will print it, and that step had been missed on both sets. All six now read their real names: Scrying Eye, Cave Wrasse, Spineback Wrasse, Emberglow Wrasse, Drakefed Wrasse and Wrasse Broodmother.
- Two screenshots of the Scrying Eye from Tuesday had been posted with broken markup, so neither picture ever appeared on the page. Both are showing now.
- The Scrying Eye was a smooth featureless ball in game, with no iris. The model carries a thin shell around the eyeball, and the shell had been switched off because anything solid on it hides the eye. Switching it off does not stick: the game turns every one of a creature's parts back on when it spawns. The shell now wears a see-through material instead, so the eye reads properly and picks up a wet highlight.
- Grusk Factory and The Obsidian Trials have dungeon maps now. They were the last two player-facing places in the game with no map of any kind, and both had been skipped by the original bake for reasons that took some digging: one carried a flip flag that inverted its map scale, and the other had a placeholder floor band of zero height, which the tooling read as hand-authored data worth preserving rather than as the placeholder it was.
- Added the Young Tyrannosaur, a tier 12 beast. It is a juvenile, about 8 metres long against the 12.3 metre adult the model was scaled down from, and it fights with two attacks: a bite on a 3 second cooldown, and a tail swipe on 12 seconds that catches up to eight targets standing around it. It hunts players, game and farm animals alike, and it does not run away when hurt.
- The tail swipe had to be animated from scratch. Neither dinosaur pack in the tree ships a tail attack, so the swipe was authored against the 21 joints of the tail as a 1.6 second whip with the body pivoting into the swing. Its tail tip travels 18.7 metres in that second and a half, against 9.2 metres over three seconds for the bite. Both attacks apply their damage on the frame where the animation connects, measured off the clips.
- Three faults in the art pack needed fixing before the creature could ship. The supplied death animation has no motion in it at all, so the tyrannosaur would have died standing in its idle pose; the working take is used instead. Every material pointed at a shader this project does not have, which draws the whole animal magenta. And eleven of its twelve skins are close to black, so it wears the pale sandy one and stays readable at a distance.
- Both dinosaur art packs are now in the depot as bought, rather than sitting loose in one working copy. Their animation files are stored as binaries: the two packs carry 173 animations between them, 3.4 GB of baked bone tracks, which the default handling would have written into the repository as plain text for everyone who clones it. The Young Tyrannosaur still uses its own copies of the parts it needs, so nothing about the creature changed.
- The Water master trainer in Ardoris now teaches Frost Weapon, matching Ignite Weapon at the Fire master trainer.
- Killing the Scrying Eye now credits the Elves bestiary counter and hands out its adventure XP; kills of that construct used to count toward nothing.
- Wild unicorns, unicorn foals, and Nightmares now read as animals. Animal Lore returns a real readout on them instead of the "only beasts answer to it" refusal, and combat effects that key off the Animal creature type now include them alongside their tamed counterparts.
- Three chicken types (Buff, Grey, Red) no longer flagged as elves. Anti-elf damage bonuses stop firing on them and Animal Lore drops the stray "Elf" line from their readout.
- The Master Air Trainer in Kingsport now teaches Shock Weapon, matching the Master Fire and Master Water trainers who already taught Ignite Weapon and Frost Weapon.
- Fixed the Aerie traveller Fitz Gaeaf speaking with a female voice; his gender was set wrong on the NPC and the voice picker followed it.
- Added three missing dungeon set types (Icy Cave, Volcanic Cave, Volcanic Stone). Existing pieces are not moved into them yet; that is a followup content pass.
- Fixed #5465: Light Settings sliders now stick on the Founder Expert Blacksmithing Station and the other 123 lit deco prefabs (crafting stations, wall lamps, wall torches, wall candles) that carried a legacy flicker script. Range and Brightness previously moved the slider but the light snapped back to its authored default within about a second, because two components were writing the same Light on the same frames.
- Fur trim on the wealthy merchant NPCs (used for the guild registrars, town merchants, player vendors and the New You beauticians) now catches light and shadow the same way the rest of the coat does, instead of reading as an unlit flat strip.
- Decorations can be placed on the floor and ceiling of the Single Connection Stone Dungeon Foyer again. The foyer had been authored with a placement area much smaller than the room itself, so items inside the room were being refused while placement in the connected halls kept working.
Commerce
- Vendor search stat filters work again. Asking for Dexterity at least 10 used to return every result the name alone matched: the search service running on the test shard was an early July copy from before numeric stat filters existed, and it accepted the value and then ignored it. Searching "chest" returned 1,987 listings with or without the filter. It now returns 690 with Dexterity, and 224 once Intelligence is added on top.
- The vendor search index had been rejecting listings since 31 July. The indexer started recording stat values that month, and the index it was writing to was set to refuse any field it did not already know, so every listing on an item with a varying stat came back as an error and the old copy stayed. That is 36,142 rejections, and it is why a row could read "Cloth Chest Armor +3" while the item under the pointer was a +18. Moving to the new index recovered 859 listings the old one had lost.
- Sorting vendor results by a stat returned an error instead of a list whenever the index held no value for that stat yet. The search now sorts those to the bottom.
- Vendor search now knows the name gems give an item. A socketed gem adds a word like "of Theurgy" or "of Greater Sorcery", and the search had never recorded it, so a row could read "Bone Chest Armor" while hovering it showed "Bone Chest Armor of Theurgy", and a shelf of differently gemmed armour looked like several copies of one item. Rows carry the full name now.
- The same gap made gem words unsearchable. Typing "Theurgy" used to return 354 results, every one of them a loose gem or jewel and not a single piece of armour wearing one. It returns 1,109 now, and "chest Theurgy" went from nothing to 36 listings.
- Stat minimums now filter by the number, not just by whether an item has the stat. The data the search needs to know how much a gem or enchantment actually grants had never been generated, so "Dexterity at least 10" was really "grants Dexterity at all". Searching "chest" gives 690 results for having Dexterity, 641 for Dexterity 10 or more, and 272 for 30 or more.
- A mistyped stat name in a vendor search answers with an error again instead of quietly returning nothing. The search service could not read the list of stats the index knows, so it had stopped checking the names it was given.
- Vendor search: a text search now matches item names only. Searching "chest" was also returning every listing carried by any vendor whose shop name contained the word, which is how halberds and crossbows landed in a chest search. Typing a shop's exact full name still lists that vendor's stock. Reported by Sethanon on build 137.
- Vendor search: the +N in a result row now matches the item's tooltip. The row was recomputing its rating from a slimmed-down copy of the item that has no enchantment or masterwork data, so a +23 piece could show as +4. The missing share now rides along with each row. Lands with the next build and deploy.
Server
- Two dev logins arriving at the same moment for the same account no longer surface a duplicate-key error on the master-server log: the loser of the race now adopts the winner cached record and both clients finish authenticating.
Images
- Images: the Scrying Eye before and after.
- New badges for the Naturalist achievements.
- Images: the Young Tyrannosaur.
Oracle
- The in-game Oracle has accepted feature requests for a while, but everything downstream treated them as bugs: a filed suggestion arrived under a bug-report heading with nothing under it, the player's world position, and the full machine table (OS, CPU, RAM, GPU, graphics API, display, quality, shadow distance, FPS, language) stacked on top of a one-paragraph idea. Requests now render as proposals: the summary, a use case when the player gave one, and only the rows saying who asked and against which build. Bug reports are unchanged.
- The Oracle's duplicate check only ever compared new reports against the main bug project, so the wishlist board was indexed but invisible to it. A player asking for something already sitting on that board, including any of the 98 suggestions seeded from the forums, filed a fresh duplicate. The check now spans both.
- Opening the Oracle window greeted you with "Ask me a gameplay question, or report a bug", which gave no hint that suggestions were welcome. It now names all three things it takes: a question, a bug, or an idea. The Oracle also stopped putting the bug questions about repeating, frequency and severity to a suggestion, since none of them ever applied to a request.
Taming
- Animal Lore's Kind row now names creature families the way a player says them: Beast, Daemon, Clockwork, Object. It previously printed internal code identifiers such as InanimateObject. A coverage test keeps future creature types from shipping unnamed, and an unused Weaknesses header came out of the readout strings.
- Started the Animal Lore lore expansion. The skill's four reveal tiers will now also uncover written naturalist lore per beast family, with the deepest passages requiring study of a strong family member. Landed the progress model (fourteen lore families, a strong-specimen cap, per-family progress that persists) and the Master Naturalist character title for the ladder's top rung.
- Animal Lore now shows written lore. Studying a beast adds a Lore section with up to four passages about its family, and the deepest one only comes from studying a strong family member at high skill. Fourteen families covered, from wolves and bears to satyrs, wrasses, and the barnyard. Uncovered lore is permanent per character and reads the same in the window and /lore.
- The lore passages draw on the in-game book corpus, the community wiki, and the field guides the character Belladonna Rose published in game. She is cited in three families as a working naturalist. Famous creatures such as the Spawn of Sobek and the Red Ice Snarler get lines of their own.
Maps
- Started an experiment on whether AI can redraw the M-key map sheets as modern illustrations without moving anything. Ardoris and Soltown, four styles each, from two sources: the sheet that ships today and a fresh top-down render of the scene.
- Built the measurement first, because a map sheet is a coordinate system rather than a picture - the player marker is drawn through a per-scene transform, so a building moved twenty pixels is a building the dot stands beside instead of on. The tool compares a candidate against its source patch by patch and reports how far things moved in metres, keeping a uniform zoom or offset separate (that is just different calibration numbers) from buildings shifting relative to each other (that is unfixable).
- Redrawing a whole map in one pass keeps the frame perfectly - zoom within 0.05 percent, rotation under 0.04 degrees - and does not keep the interior. Between 12 and 64 percent of each sheet came back as content the model invented rather than restyled, and no recalibration recovers any of it.
- Cutting the map into 1024-pixel tiles and restyling them one at a time fixed it. The two best results hold their layout to 0.17m and 0.11m median across the whole town, with 4 and 9 percent of the sheet redrawn. A model working on one small patch has nowhere to move a building to.
- Three things that went wrong on the way: handing each tile the whole map as a style reference made 80 of 81 tiles a shrunken copy of the entire town; cutting tiles finer than the source render actually resolves just hands the model blur to invent detail into; and a tile of empty forest is an invitation, so the first good Soltown sheet had villages along its margins that do not exist. Saying content is fixed, in as many words, took the redrawn share from 18 percent to 9.
- Nothing from this ships. Both towns keep their current maps; these are candidates to look at. Notes and numbers in docs/systems/map-restyle-experiment.md, tool in tools/map-restyle/.
UI
- Reworked the window backing patterns. Leather, Smoke, and Glass are gone; their slots now carry Oak, Stone, and Redwood, and Iron, Damask, Elm, and Marble joined the list. Patterns tile at a fixed size instead of stretching across the window, so the texture reads the same on a small dialog and a full-screen map.
- Toned down Parchment and Sigil, which covered up the window contents, and added a Pattern Intensity slider to the Themes tab. Lowering a single window's opacity now fades that window's pattern along with its plate.
- Added a Custom Image backing pattern: drop a PNG or JPG into the new UIPatterns folder (an Open Folder button takes you there), pick it in the Themes tab, and set the tile size with the Texture Scale slider. Oversized or broken files fall back to a plain backing.
- Overhead names, titles, guild tags and health numbers now draw a dark halo behind the lettering, so a pale name still reads over bright ground like sunlit stone or sand. The outline they carried before sits centred on the letter edge, so half of it fell inside the glyph and the outer half dropped under a pixel at normal plate size. The halo sits behind the letters and leaves the name colour untouched. Vendor signs, decoration pet names and the overworld town labels picked it up as well.
Achievements
- Added a Naturalist achievement category: a Scholar deed per beast family for uncovering all its lore, ladders for families opened and finished, and the Master Naturalist title at the top rung. The new wrasses also joined the bestiary with their own kill counters.
Sieges
- Fixed the overworld map showing nothing for a besieged town. The siege rework pointed the burning camps, the Besieged Town label, and the nameplate color at the new town siege records, which no shard publishes yet, while the entry warning still ran on the old astrology clock. The result was a warning dialog on Ardoris with no camps outside and a plain Town label. Display surfaces now answer for either siege system. Reported by belladonnarose on the tester Discord.
Launcher
- First-time installs now arrive as one resumable download. When the launcher finds no game installed it fetches the whole build as a single archive from the CDN, verifies it against the signed manifest, and unpacks it, instead of downloading thousands of files one by one. An interrupted download continues where it stopped on the next launch, and any problem with the archive falls back to the old file-by-file path. Live in launcher build 31 on Windows and Linux; installed launchers pick it up on their next start. (fd1f1dd7b6, 930c594ef8)
- Proved the new first-install path on a real machine against the live chaos channel and CDN: a clean folder pulled the 14.8 GB archive, was cut off at 2 GB and resumed where it stopped, verified the file, unpacked 16.3 GB, ran the normal signed check and reached Ready on build 138 in about seven minutes. The run is kept as an opt-in test so it can be repeated before any launcher release. (fb6268f5f4)
- The Chaos test shard launcher is a direct download for Windows, Linux and Mac. Install it once and it updates itself and patches the game every time it starts, with the first run pulling the whole build as one resumable archive. Sign in with your Shroud of the Avatar account name and password. The Steam sign-in does not work on the test shard.
- Notes for that download: on Linux extract with
tar -xzfand runChaosShard. The Mac build is not notarized yet, so the first time right-clickChaos Shard.appand choose Open. Sound and Steam do not work on Mac yet. Windows and Linux are on launcher build 31 with the new one-archive first install; Mac is on build 30 until its next release.
Build Pipeline
- Added an Upload latest build to CDN job to the build farm. After each chaos release it packages the published Windows build into one archive on the patch host, uploads it to the CDN, points the update channel at it, and removes older copies, so the launcher's full-install path always has a current archive to pull. (87f9c44804)
- Fixed the patch publish step dropping the CDN full-install pointer on every release: the publisher reads its local staging copy of the channel pointer, which never saw the archive stamp applied on the host, so tonight's release to build 138 pushed a pointer without it. The publish now reads the live pointer first and carries the archive descriptor across the flip; the CDN job re-stamps the current build afterwards either way.
- The CDN upload job's first dry run on the build farm failed on line endings: the deploy box checks the script out with Windows line endings, so the commands it sends to the patch host arrived with a stray carriage return on every line. The script now strips those before sending. (c0a9782570)
Localization
- Translated the new Animal Lore text into all eight languages. That is 56 lore passages, 11 named-creature lines, the creature Kind names and the reworded skill description, plus the interface strings that had built up behind them: the crown shop and crown exchange, the unclaim-lot warnings, the settings save and load panel, the town lights panel, the catchphrase window and the wrasse names. 4,178 records across German, Spanish, French, Italian, Russian, Portuguese, Japanese and Simplified Chinese, all applied with nothing rejected by the markup checks.
- Then read all 4,178 records back, one reviewer per language over the full set, with a second reviewer arguing against each finding. 145 problems were raised and 98 held up. Most were false friends, which word-frequency checks cannot catch because the word is real and common: Russian was calling egg collectors ovaries, German was using Untier (monster) for beast in a description that two sentences later says only animals respond, and the Tablet of Finding was a serving tray on all three of its buttons.
- Coverage after the pass: Russian and Portuguese 99.8%, German, Spanish and French 99.6%, Italian 99.5%, Japanese and Simplified Chinese 99.4%. Everything still untranslated is in the player-book text, which ships through its own pipeline.
- Checked every place and creature name in the new text against the name that language already uses elsewhere in the game. Portuguese had about 30 of them still sitting in English, so Ardoris, Xenos and Novia now read Ardóris, Zênus and Nóvia in the lore the way they do on the map. German, Spanish, Italian, French and Japanese each needed a few. Russian needed none.
Tools
- Retired the balance-audit test that pinned AtonalAria, a bard song the recent rework replaced. The audit now guards the reworked roster instead, so any future drift back to a damage song surfaces as a test failure.
2026-08-20 · 131 items
The New Britannia Herald
Ninety-three blurry maps, missing shadows, and a siege nobody could win
Headlines
- Zone maps are readable again. 93 of the 316 had been loading at their smallest size since 2026-08-01 and never sharpening, Tenebris Harbor worst of all.
- Ambient occlusion is back in the client. It had never run outside the editor, so every downloadable build since the lighting overhaul rendered without contact shading.
- Quitting the game closes it in about two seconds now. The Windows client had been waiting out a 26 second engine teardown on every exit; it ends its own process instead, the dialog answers the confirm immediately, and a second Alt+F4 means yes.
- Chaos runs on the real thing now: the full live account database, 412,875 logins strong, restored onto the chaos shard. Live players get in with their live password.
- Achievements now credit the past: the emote counter counts what you already learned, and the 11 story quest achievements unlock for quests finished years ago.
- Tamed pets stay out again. Every save a taming necklace makes had been refused by the server since build 130, so the pet dismissed itself twelve seconds after each summon.
- Client settings now save to a file and load back: options, key bindings, window layout and chat tabs, with a checkbox per group on import and no credentials in the file. Requested by Barugon.
- Proposal W3 was wrong, and two readers caught it before we did. Ice Arrow and Stone Arrow are Water and Earth spells, not archery enchants, and they were never misplaced on melee weapons. The card now says so, above its own original pitch.
- The item comparison tooltip does the subtraction: a third column showing what equipping a weapon would change, down to which hand it would cost you. Weapon tooltips also state charge time now.
- Armour stopped vanishing on horseback. The box that decides whether a worn piece is on screen was frozen to your standing pose, and a rider sits outside it.
- Rugs go back on walls. 96 decorations got back the wall flag they lost before the move off Perforce, and the mirror key stopped doing two things at once when you hang a flat item.
- The loading screen that stopped at 51% on "Coordinating Data" and never moved again. The town spawn picker was reading spawn markers from the town you had just left, and the failure left the zone-in half finished. Fixed, plus a 90-second ceiling on the waits that had none.
- A town stuck under siege can be freed again. Starting and ending a real siege were dev-console-only, so on an ordinary client nobody could reach them, and a siege has no expiry: one whose Cabalist could not be reached stayed forever. Both now sit on the GM panel, alongside a new window for reading and repairing a stuck quest.
- Dye a decoration without picking it up. Right-click anything dyeable on your lot and the colour goes on where it stands, previewed on the real furniture in the real room, nothing spent until you confirm. Until now recolouring a chair cost you its placement. Requested by Allium Oop.
- A town's own street lighting is now the governor's to set: Light Settings on any lamp built into a player-owned town, and a Town Console Lights tab that does a whole kind or the whole town at once.
- Graphics cards with more than 8 GB of video memory now get up to 8192MB of texture budget instead of a flat 4096MB, ending the texture detail drops in decorated player towns.
The Herald
- The New Britannia Herald for 2026-08-19 is up: Summoned creatures stopped standing guard over your corpse and following you back from the ankh, and a tamed pet stopped dismissing itself fifteen seconds after every summon. The loading screen learned to give up after three minutes, Linux quits stopped being filed as crashes, and six towns held under a siege with nothing in it to fight were released. Game masters can now take direct control of any creature in a scene, and a crowns-for-gold exchange was built end to end and shipped switched off. Listen or read the transcript (17 min). Subscribe in any podcast app: /blog/podcast.xml
Build
- A profiler build started in the evening is unusable by the time it lands. These builds take four to eight hours and the nightly deploy moves the test server to a new version around half past midnight, so the finished client gets turned away at login for being the wrong version. Written down along with the two workarounds that look like they should help and do not.
Tools
- Editor tools no longer block on confirmation dialogs when an automated session is driving the Unity Editor. A stack of achievement-catalog confirmations had left the Editor unresponsive to everyone sharing the machine; the rebuild now writes its summary to the console, and still shows the dialog when a person runs it from the menu.
Community
- Forum sweep filed a wishlist request for NPC merchants to sell ore in Offline Mode, so offline-only players have a gold sink and a way to buy ore the way online players buy it from each other.
- Announcements about tester accounts no longer pair anyone's login name with the characters they play. A person is named by the one handle they use in the place they are being written to, and anything that needs to name an account goes to that account holder directly instead of to a channel.
Content
- Wrote up where the Imbued Gem Socketed recipes come from in the Alchemy recipe catalog: no NPC sells the four Imbued Gem or Jewel Socketed enchant recipes for armor, jewelry and one- or two-handed weapons; they only drop from the Obsidian Panopticon in Mistrendur, from the Watch Commander and the two-key Tier 12 and Tier 15 chests. The non-imbued versions are still sold by the intermediate Alchemy shopkeepers in the usual crafting cities. Requested by necronut.
- Well of Aldur moving-platform wheel switches now wait for the interact key, so brushing past one no longer starts the platform (#5392).
- Alien plants in Shardfalls no longer look blurry up close. Their color textures were being downsized to a quarter of their real resolution on import while the paired normal maps stayed at full size, so surfaces read as pixel blocks with seams where tiles met. Fixed the import caps; the plants now show as much detail as their bumps do.
- Two dead elves in the Blood River Massacre tutorial cluster had been dropped a bit too far in the last pass and their heads were clipping through the ground; both bodies are now raised part way back up so they sit flat on the dirt without floating.
- The pattern on the summoned Water Elementals arm ribbons now flows in step with the pattern on its torso ribbon. Before this pass the arm ribbons were visible but frozen while the torso animated. Wild Water Elementals still carry no ribbons at all, so the flowing binding remains a mark of being bound to a summoner.
Maps
- Zone maps opened blurry in 93 of the 316 zones and never sharpened however far you zoomed in. A texture change on 2026-08-01 put those maps into a system that loads big textures small and raises the detail when something asks for it, and a map picture never asks, so they sat at their smallest size permanently. Tenebris Harbor was the clearest case: its map is a drawn harbour plan with piers, a bay and three sunken ships, and players got a green blur. All 93 are back at full resolution, along with 94 crown store images caught by the same change.
- Auditing the rest of that texture change turned up two more pictures loading small for the same reason, a disco ball light effect and one item icon, both fixed in the same pass. Of the 3,777 other files it touched, 3,195 are used by ordinary 3D surfaces and 551 are unused art, and the remaining 29 were checked one at a time. A test now fails if a zone map is ever put back into that system.
Server
- Fixed a lot-sign refresh bug where a lot that had just been bought could keep showing its For Sale face and offer itself for sale to the next passer-by for up to a minute after the sale finished.
- Quest reset on a character with too many accumulated knowledge flags no longer fails silently on the server. The reset write now goes through even when the stored count is already above the input cap, so a player over the cap can still reset and continue rather than being refused on every retry.
- The scene server logged the same nameless NullReferenceException every 30 seconds while a scene stayed up, 692 times in one 14 hour window. One broken lot transfer record was being retried forever because the resolve swallowed its own failure and reported it as transient. The server now names the bad record in the log, drops it from the retry queue, and resolves the rest.
- The chaos login database now holds the full live account restore: 412,875 accounts with their real bcrypt passwords and entitlements, restored from the nightly backup dump in a 45 minute maintenance window. Live players can log into chaos with their live username and password and land on their restored characters. The 43 pre-existing chaos accounts were rebuilt on top with their old passwords intact.
- The restore runner grew a resume mode after the first execution died one statement from the end: one live database view joins the forum database that chaos does not mirror, and the importer now creates a small stub for it up front. Aborted imports can finish with fixups and the full 17-check verification instead of a destructive re-run.
- Swept the restored accounts an hour after the cutover: one stale auth cache record blocked the first repointed login, and two team accounts whose live rows never had a game account id would have lost their chaos characters on next login. All three repaired, and the sweep is now a standing step in the refresh runbook.
- Retired the ten chaos-made tester logins that shared a game account with the tester's real live login. Each tester now logs into the game with their live username and password; their characters and in-game tester tools carried over, and the tester hub keeps their existing hub login. The tester roster now models the split identity and reports zero drift.
Images
- Images: the Tenebris Harbor map sheet, at the resolution the map window draws it again.
- The W2 and W3 cards on the weapons proposal page, now marked built.
- Images: the Firespinner bracer and armband pieces, before and after.
UI
- The you-are-here arrow on the carried map and the town spawn window shows up again in scenes where it had been hiding. Resizing either map window keeps the art proportioned instead of stretching it.
- The Tester Tools, Tester Verification, Tester Tweaks and Tester Guide windows now remember the size and position you left them at after a full client restart. Before this, the placement was only kept in memory, so a launcher force-kill on patch day threw it away and every relaunch put the window back on its default.
- The custom sign editor now picks the runic font correctly, the character counter turns red once you reach the 1000 character limit, and the never-firing "too long for the sign" warning is gone.
- The region map "..." menu now refreshes lot markers the moment you pick a mode, instead of waiting for you to walk a step or toggle Follow. A pinned map that you close and reopen with M comes back pinned.
- Alt with a left click on a world item now also tries the pickup on the click release, not only the press. Some desktops capture alt with a mouse press for their own window shortcuts, and this gives the pickup a second shot on any environment that lets the release through. Alt with the interact key is unchanged and still works everywhere.
- The emote bar highlight now clears when the emote it points at stops. A single-shot emote lights its slot for the length of the animation; a looping or held emote stays lit until you interrupt it. Dropping a new emote onto a lit slot stops the emote that was there so the bar and the character stay in step.
- Right-click menus and dropdowns now claim their place on top every time they open. The menu host used to claim it once, on the first right-click after login, so if anything shuffled the drawing order after that, every menu for the rest of the session drew behind the window it was opened from and only a client restart brought it back. Reported by Gravidy off the Lot Deeds window. The next right-click now heals it.
- The item comparison tooltip does the arithmetic now. Hovering a weapon or a piece of gear you are not wearing adds a third column saying what would change if you equipped it: damage, critical, parry, charge time, and every stat the two items differ on, gains listed first. Differences too small to print are left out rather than shown as a zero.
- The comparison column says which hand a swap would cost. A two-handed weapon takes both hands at once, so it reads against the pair together. A one-hander hovered while you hold a weapon in each hand shows two readings, one per hand, because only one would come off and the game has no way to know which you mean. Rings work the same way.
Client
- The animated glow that appears on your character on scene entry was reading as a grid of small squares. Its source spritesheet now carries a mipmap chain, so it stays smooth at every viewing distance.
- The creature that pulls you into a roving world map encounter now tears down in the same tick the encounter fires. It used to leave the actual destroy for the next AI tick, which could be pre-empted by the scene transition and leave that specific creature standing when you came back to the world map (tracker #2362).
- Some Linux players crashed during startup on every launch, 19 crash reports across a week from the same two machines. The game asked for the mouse cursor state before the settings behind it had loaded. The cursor now uses the default until loading finishes, and startup no longer dies there.
- The Show Nameplates setting is now saved per character on the server instead of per Windows install. Each character keeps its own choice across relogs and machines; a character that never changed it starts from the machine's old setting. Options row and the Toggle Nameplates keybinding both drive the new storage.
- Armour could stop being drawn while you were mounted with the camera zoomed in, most often the chest, while head, hair and bare arms kept drawing. The box that decides whether a worn piece is on screen was being narrowed to whatever pose you entered a zone in, and a riding pose sits outside it: for the cloth chest in the report, the standing box does not contain the seated mesh at all. Every worn piece now keeps the full box, which also covers the swimming, death and resurrect poses. Reported by alliumoop.
- Pieces attached to a character through an attachment slot never had their culling box re-seated after being re-pointed at the wearer's skeleton, so they kept the box they shipped with. They now go through the same step the equip path uses.
- Loading into a player-owned town could stop at 51% on "Coordinating Data" and stay there until you killed the client. The town spawn-point picker was rebuilding itself from the spawn markers of the town you had just left, and reading those after the scene is gone fails, which left the rest of the town setup unfinished and the loading screen waiting on a step that was never going to arrive. The picker now rebuilds only for the town you are actually in. Reported by Gravidy.
- Two backstops went in with it. A town-settings listener that fails is now logged and the rest of the setup still runs, so one broken listener cannot abandon a zone-in. The three waits after the instance join give up after 90 seconds, name the scene and return you to the overworld, where before they had no limit at all. This is the fourth stuck loading screen of this shape, after the ones fixed on 07-21 and 08-19.
- The client log now prints a line when a scene's town settings arrive. That stretch of the load was the only one with no marker in it, and a report of a freeze there could not be told apart from a scene that never got its data.
- The Firespinner outfit was untextured on male characters. Every piece of it drew as flat white, which showed up most often as white rings at the wrists and white bands on the upper arms when only the Firespinner Bracers were worn. The male model had been pointed at an empty material since before the Unity 6 work, and it now uses the same leather and metal texture the female version always had.
Client Performance
- The client now reports how much graphics memory it is actually using, not just how much of it is textures. Every memory number the game sent home until today counted textures only, while render targets, meshes, shadow maps and the upload ring went unmeasured. The texture budget was sized against that unmeasured remainder using a round number nobody had ever checked, so that number is gone and a real one takes its place in the next build.
- Raised the texture budget again on 8 GB cards, from 3379 MB to 3635 MB. The previous raise took an 8 GB card from about a gigabyte short of what a busy town wants to about 150 MB short, and this closes the rest. A 10 GB card measured the clearest result of the first change: it was dropping texture detail 56% of the time and is now doing it 5% of the time.
- Worked out what the untouchable part of texture memory is. Around 2.4 GB on every machine cannot be released no matter how much the streaming system wants to, and it turns out that is not scene art: across 44 scenes the figure varies by only 770 MB, and one player session visited 21 different scenes while it moved 658 MB. It is a global set that loads once and stays, mostly character, interface and store art. Close to a third of it has no reduced-detail versions at all, so no amount of streaming work can ever shrink that part.
- Added a /texmem command that lists the textures a running client is actually holding, ranked by size. The numbers the game already reported were totals with no breakdown behind them, so there was no way to ask which textures make up the roughly 2.4 GB that can never be released. The report checks itself: it prints how much of the known texture memory it managed to account for, so a reader can tell a real ranking from a measurement that did not work.
- Fixed a sound loop that was retrying sixty times a second. When a looping sound could not start, usually because an identical one had just played, the code waited zero seconds and tried again on the very next frame, for as long as that stayed true. Profiling a zombie fight in Tartarus caught it happening 136 times per frame across about 152 creatures and characters. It now waits a fifth of a second between attempts.
- Made the chat bubble range check cheaper. It runs once per character every frame, 153 times per frame in the same Tartarus capture, and was taking a square root to compare against a fixed distance. Measured 8 to 18 percent cheaper per call. Together the two fixes moved script time about 4 percent and the slowest 5 percent of frames from 50ms down to 33ms. An improvement rather than a cure: the frame still misses its deadline in a heavy fight.
- The first real measurement of what a client holds in graphics memory landed, and it is render targets. On a 4K machine, 21 of the 25 largest items were rendering buffers rather than art: 845 MB in total, of which 484 MB was the pool of temporary full-screen buffers the rendering and post-processing passes borrow from. Art textures accounted for 79 MB of the same list. The texture budget holds memory back for exactly this, and until now the amount was a guess.
- That measurement also showed two faults in the reporting tool built to take it, both now fixed. It was counting rendering buffers as artwork that cannot be reduced, which inflated that figure from tens of megabytes to about a gigabyte, and it was relying on a profiling call that reports rendering buffers accurately but says nothing about artwork loaded from the game data. Artwork is now sized from its own dimensions and format instead.
- Raised the texture memory budget for graphics cards with more than 8 GB of video memory. The client used to stop at 4096MB however large the card was, so a 24 GB card ran the same texture budget as an 8 GB one and kept dropping to lower detail textures in decorated player towns. A 24 GB card now gets 8192MB, a 12 GB card 6005MB and a 10 GB card 5025MB. Cards at or below the 8 GB minimum spec are unchanged to the megabyte.
- The old 4096MB limit came from an average taken across 44 scenes, where large cards never appeared to run short. The average hid the busy scenes. A 24 GB card was giving up 384MB of texture detail at the moment the reading was taken, and more than that under a full decoration load.
- Shared memory laptop chips keep the old 4096MB limit. Their budget comes from system memory rather than from a graphics card, and one test machine reports 112,309MB of system memory, so the old limit was the only thing stopping it claiming 7 GB of textures out of the same memory the game itself runs in.
- Fixed the texture budget ceiling growing on every quality level change. It was worked out from the value the same code had written the previous time, so after a few zone transitions picking a lower quality preset stopped reducing the budget at all.
UI
- The emote, bard and catchphrase bars can be shaped into any grid their slot count allows. Right-click the bar's frame, or use the grid button in its corner, and pick a shape: the catchphrase bar offers 1x12, 2x6, 3x4, 4x3, 6x2 and 12x1, the emote bar offers 1x10, 2x5, 5x2 and 10x1, and the bard bar offers whatever divides the abilities you have trained. Each bar had one button before this, which flipped it between a single column and a single row.
- The frame around those bars was leaving a band of bare plate beside and below the buttons. Three causes: the button row was wider than a 44-pixel slot and the plate sized itself to the row, every slot carried its gap on the trailing side so the last column and the bottom row each left a strip, and the bard bar stacked two rows of different lengths side by side. Measured on a real panel, the leftover width beyond the frame is now 0 pixels at every shape on both bars, against 20 pixels on the emote bar before.
- Every slot on those bars now draws its number in the corner, so an empty bar is no longer a run of identical boxes, and a catchphrase tile also shows the key bound to it when you have bound one. Empty slots take a lighter fill and light up under the mouse, and hovering one says which bar it is and what goes in it instead of showing nothing at all.
Catchphrases
- Fixed the tile caption that read "For the love of god, I thought t". That was not the tile clipping the text: the Catchphrases window cut the stored short name dead at 32 characters with no ellipsis when the phrase was made. It is clamped properly now, and the tile budget dropped from 40 characters to 30, which is what four wrapped lines at that size actually hold. The full phrase is still on the tooltip.
- Catchphrases can now perform an emote. Pick one per phrase from the emotes your character has learned, and firing the phrase from the bar or its keybind plays the line and the animation together. Setting or changing the emote costs nothing, and a None entry takes it back off.
- The emote needed no new network message. Emote playback already travels on the replicated player state channel, so the speaker performing it is what everyone nearby sees; the phrase broadcast still carries only the clip key.
- A phrase-driven emote the player state refuses, or that needs a prop they are not holding, is skipped without a chat message and the line still plays. The required-item check moved out of the shared emote path so a passive trigger can ask before it speaks, which is what kept "You must equip the required item" off the screen every few seconds.
Rendering
- Ambient occlusion was never running in the downloadable client. The camera builds the effect at runtime and asks for its shader by name, and that shader was not registered for inclusion in player builds, so the lookup came back empty and the client logged one error at startup and rendered without it. It worked in the editor because the editor can see every shader in the project, which is why it went unnoticed since the post-effect stack shipped. The shader is registered now, so corners, wall seams and the undersides of furniture get their contact shading back.
- Added a test that scrapes every shader the camera rig looks up by name and fails if one of them would be missing from a player build. Eight other post effects went through it while it was being written and all of them were already registered correctly.
Tooling
- A new morning routine reads the three overnight streams in one pass: client crash reports, chaos server errors and warnings, and tester reports. Each one now resumes from where the previous run stopped instead of re-reading a fixed window.
- The routine remembers which findings it already judged and what it did about each, so a crash that recurs gets a comment on the existing issue rather than a second copy of it. It files at most five new issues a morning and never closes anything on log evidence alone.
- Crash triage became its own tool: the stored launcher reports collapse into distinct signatures, ranked by how many separate machines hit each one rather than by report count, so one player stuck in a launch loop cannot outrank a crash affecting five people.
- The log sweep and the crash rollup both kept their resume cursor in the temp directory, where a disk cleaner could erase it and silently widen the next window back to 24 hours. Both cursors moved somewhere durable, and the existing 35-run history was carried across.
- Fixed a tester triage collector fault found while testing the routine: asking it for two projects at once from a fresh shell passed them as one name, so it queried a project called
tester-verify,urpgand failed with an unexplained 404. It now checks each project first and says what went wrong. - Extended the
/texmemreport to split texture memory three ways: art the streaming system can drop, art that stays loaded whatever the budget says, and render buffers. It now groups textures by size, prints the engine memory counters beside its own totals, and takes a length argument such as/texmem 100.
Client
- The Windows client now ends its own process when the quit finishes. The fast exit added on the 17th never ran on Windows builds; the system call it leaned on is unsupported in our player runtime, so every quit logged a fallback and sat through the 26 second engine teardown it was built to skip. The quit now terminates through the operating system directly, the same repair the Linux client got on the 19th.
- The quit dialog answers the confirm immediately. It used to sit on the confirmation question with a dead button while it waited on the server, up to 10 seconds. It flips to Please wait the moment you confirm, the server waits are capped at 3 seconds each, and the clean-exit record the launcher reads is written before the disconnect instead of after it.
- A second Alt+F4 while the quit prompt is open now confirms it. The extra press used to be swallowed, and the window refused to close with nothing on screen explaining why.
Client UI
- Standing in Ring of Fire made its buff icon under the health bar hop between the first and second row several times a second: each refresh removed the icon and re-added it at the end of the strip. A refreshed buff now keeps its slot in place, and a slot whose last effect ended is torn down a frame later, so the strip and the overflow counter hold still. EditMode tests cover the new grace window.
Sieges
- The first real siege fight found the big one: the server refused every kill in a besieged town. The Cabalist and his rings spawn from runtime seats whose ids no scene bake carries, so the kill report died at the prefab lookup: no experience, no meter drain, and killing the boss could never free the town. A shared seat table now maps the seat ids back to prefabs and the experience path resolves siege kills through it, only in rooms the server says are besieged.
- Fixed the empty-town siege: the minion rings were distance-gated against the gate the boss walked in through, so nothing spawned until a player wandered near that spot and then all 64 seats burst-filled at once. The rings now fill wherever he is. Also fixed the boss standing at the gate forever: his walk goal was missing the one component the movement behavior requires, so he never took the first step toward the town center.
- A killed Cabalist could come back: a stale spawn trigger survived his death on a master client that inherited the room, and a boss respawned against a zero health checkpoint died instantly with credit going to nobody, leaving the town besieged forever. The trigger is now cleared on death, standing bosses are adopted across master handovers, and the health restore floors at 1 percent. The whole fight also gained logging on both sides; it previously logged one line total.
- The chaos TownSiege collection was missing every index but the default: the unique one-siege-per-town key and the cooldown sweep were never created, which is why cleared siege rows lingered. Documented the remediation in the migrations ledger; the fixes ride tonight's build, verify task #5441.
Dungeons
- Eleven kobold spawners in the Hilt rotunda encounter room failed placement in one burst when a player dungeon loaded, leaving the room empty or its kobolds frozen. The room data checked out fine; the spawners could start validating before the dungeon navigation had loaded. Spawn placement now waits for the navigation system before it runs.
- The blue marble stairs hall was the only piece in its dungeon kit with no baked navigation file, logged 78 times in one night, and creatures could not path through it. The piece has navigation data now.
Options
- Client settings can now be saved to a file and loaded back, for a reinstall or a new computer. The Options gear menu grew Save Settings to File and Load Settings from File; files go in the player data folder under Settings/ with an Open Folder button, and moving them between machines is a file copy. Requested by Barugon.
- A settings file carries options, key bindings, window layout (position, size, per-window opacity, column widths and sort) and chat tabs. Loading one offers a checkbox per group, so you can take another player's key bindings without their video settings. Account name and password are never written to the file, and hotbars and decks already travel with your character on the server.
- Adding a new client option puts it in the settings file automatically. A test walks the options source and fails the build when a setting is neither exported nor explicitly held back with a reason, so a new toggle cannot quietly fall out of every player's backup.
Infra
- Fixed the auth restore runner's view count: the live database dump has always carried 40 views, but the August 13 restore drill lost one to an unstripped DEFINER clause and 39 got recorded as the expectation. The statement-aware filter handles that form, so the runner now expects 40.
- Installed the login failure watch on the chaos box: a five minute timer that queries the log store for failed login attempts and alerts on password guessing shapes. Three deliberate failed logins showed up in its first live run. Its installer read a wrong variable name and its queries needed keyword fields, both fixed.
Window layout
- Column widths and sort order were never recorded in the window-customization index, although its own notes said they were. That meant Reset Window Layout had never swept them. Both are recorded now, which fixes the reset and is what lets a settings file carry your column layout.
Docs
- Wrote the auth snapshot refresh runbook: the repeatable recipe for reloading the chaos login database from a newer live backup, with the ordering rule against the game data, all verification steps, and every trap the first run hit.
Weapons
- Marked W2, W3 and W8 built on the public weapons proposal page. All three shipped in August through the defect route rather than the vote: bows got the nine missing gem enchant pools on 6 August, shields on 17 August, and weapon tooltips started printing the damage and Parry figures the game actually uses on 6 August.
- Corrected proposal W3, which was wrong. It claimed Ice Arrow Power and Stone Arrow Strength Power were archery enchants misfiled onto swords, maces, spears and wands. They are Water and Earth spell effects and they were sitting correctly in the water and earth gem pairs the whole time. Vaentorian and Furious Farmer both said so on the card. What was actually broken is that a bow had no gem rows at all, so socketing any gem changed nothing, and that is what the August fix addressed. Nothing was taken off melee weapons.
- The audit finding behind W3 is now marked wrong in place on both the public page and the internal plan, with the reason: the audit read the enchant rail and the masterwork rail as one pool. Every ability bonus in the build is a masterwork effect and every spell bonus is an enchant effect, because the enchant table is keyed by gem school. The question W3 gestured at, that every one-handed weapon now draws the same gem options, moved to W5.
Achievements
- Fixed the Learn 10/50/150/250 Emotes achievements never counting anything. The client counts your learned emotes and reports the total, but the report waited on a loaded signal that fired before the reporter was listening, so it stayed at zero for every player. The count now reads the emote list directly and lands on your next login, standard starter emotes excluded.
- The 11 Soltown and Path of Love story quest achievements now grant retroactively. A once-per-login sweep checks the quest completion records your characters already carry and unlocks anything earned before the achievements existed. Finishing the quests fresh still unlocks them at the closing conversation, and a pile of retroactive unlocks arrives as one summary banner.
Housing
- Rugs hang on walls again. Wall placement is a single flag on each decoration, and 96 of them were missing it: every rug set, the round rugs, the scenic rugs, the animal skins, the sigil rugs, the eight beach towels and the three blood splatters. Sixteen rugs still had the flag, which is why the dragon skin and big cat rugs kept working while the rest did not.
- Split what the mirror key does on a wall. Hanging a flat item on a wall already used that key to pick which face pointed out, so on a rug that could also be mirrored, one press did both at once. Rugs now always face outward on a wall and the key mirrors the pattern. Wall mounted swords and axes keep the old behaviour, since 46 of them rely on it.
- Twelve of those rugs would have taken the wall flag and still refused every wall. The wall check looked for a collider on the decoration itself and those twelve carry theirs one level down, so the three sigil rugs, two of the RugSet1 rugs, a round rug and the six Medieval rugs were being turned away before anything else was checked. It now looks at the whole item.
- Rugs keep the tighter fit placement aid. It skips anything that can go on a wall, so granting rugs the wall flag would have taken it away from 47 of them. Floor coverings are now exempt from that skip, which also hands the aid to 89 rugs and floor sigils that could already go on walls.
- Decorations that can be dyed can now be dyed where they stand. Right-click a placed decoration, or its row in the Deco Palette, and pick Dye: the window lists the dyes in your pack, and clicking one shows that colour on the decoration itself, in the room, against the furniture next to it. Nothing is spent until you confirm. Requested by Allium Oop.
- Recolouring a chair used to mean picking it up, dyeing it in your pack and placing it again, which lost its position, rotation and scale. The colour still goes on the item rather than on the placement, so a decoration dyed on your lot is still that colour when you pick it up, and it reads as dyed in its tooltip. One dye is spent per application, the same as dyeing in your pack, and the change is written before the dye is taken so a refusal cannot cost you the jar.
- Everyone standing on the lot sees the new colour without reloading the scene. That needed three things the code did not have: repainting a placed decoration at all, since colours were only ever applied when one first spawned; a way to walk a dye back off, since the render path can write a colour but had no way to erase one, which is what a cancelled preview and a refused change both need; and a combined-mesh grouping key that can change after a decoration is registered, so a re-dyed one cannot rejoin a batch built for its old colour.
Housing
- Built the tooling to find decorations that are already sitting in mid-air on lots, left there by the placement bug fixed on the 9th. It reports each one with the account and date behind it. Nothing is changed on any shard: the tools only read.
- The measurement rebuilds a lot from its stored records and casts down from each decoration to find what is holding it up, using the same geometry the game now checks at placement time. It reports the size of the gap rather than a yes or no, and marks the cases it cannot measure (basements, sloped lots) as exactly that instead of counting them.
- Added decofloatcheck, a developer console command that runs the same support check against the lot you are standing in, so a questionable row from the offline report can be settled against the real house and terrain.
- Ran the floating-decoration check over the test shard: all 45,626 decorated lots and 2,981,243 placed decorations, read-only. The stored records on their own do not identify a placement made through the bug. The one record shape specific enough to stand alone turns up three items, and all three are player-dungeon room pieces rather than anything a player decorated with.
- Measuring the geometry does find candidates. Over 300 lots holding planters, 602 decorations on 103 lots sit more than a metre above anything that could hold them up, led by planting pots and beds. Almost none of them are rotated themselves, which fits the mechanism: the rotated piece was the base, and the planter on top was recorded as sitting on the ground.
- Four defects in the checking tools turned up while running them, and every one had been inflating the count. The lot house is not stored as a decoration and had to be rebuilt separately, most decoration prefabs have no collider on their root, basements cannot be measured this way at all, and a sweep that died a third of the way in still printed a summary that looked complete. On one 20-lot sample the fixes took 559 supposedly floating items down to 84.
- Two limits are written into the audit page rather than left implied: ground is still treated as flat, so the output is a ranked list of candidates and not a verdict, and 46% of flagged decorations carry no record of who last moved them.
- The lamps, lanterns and torches built into a player-owned town can now be tuned by the town's governor and their stewards. Right-click one and the menu offers Light Settings, the same window a lamp built into a house uses: nine colors, a custom picker, range and brightness sliders, and an Only at night box. Settings are kept per lamp, so one lantern can be blue while the one across the square stays as it was built.
- The Town Console has a new Lights tab for doing many at once. It lists a town's lights by kind with a count of each, says how many already carry settings, and applies one set of values to a single kind or to every light in the town. Knight's Watch has 27 built-in lights across 11 kinds. Typing /townlights opens the console on that tab. Lights inside houses and on residents' lots are not touched.
Documentation
- Wrote up the decoration support probe in the housing code notes, which had no entry for it despite it being what decides whether a placement is allowed, and added an audit page covering the method, the thresholds and what the results do and do not prove.
Balance
- Re-ran the whole-catalog combat balance audit, the first run since July 7, at the same seed and trial count so the two sets of numbers compare directly. 168 skills evaluated, all of them cleanly. Fourteen of the seventeen damage-dealing schools came out numerically identical to July; three moved.
- Water climbed 42% and moved from a hard fail at 36% below the cross-school median into the target band at 9% below it. Subterfuge climbed 42% in the other direction, going from inside the band to 40% above the median, so it leads the next tuning pass.
- Chaos fell 69%, from 18.3 sustained damage per second down to 5.7. That is a fix to the audit rather than a change to the skill: Chaos Bolt fires one of five branches per cast, and the audit had been scoring it as though every branch landed on every cast.
- Bard left the damage rankings. The rework retired six songs and brought in six replacements, and every song in the new set resolves to a stat or heal effect, so the school now audits as pure support. All nine songs still evaluate cleanly.
Pets
- Tamed pets stay out again. A pet summoned on build 130 or later dismissed itself twelve seconds later, every time, and the equipped taming necklace turned red at the moment of the summon and stayed red until relog. The server had been refusing every save a taming necklace makes: the tightened item checks that shipped in that build read the necklace clearing its death timestamp as a bad value rather than as the clear it is. Summoning, dismissing, taming a fresh creature and resurrecting a dead one all save again, and a save the server does refuse no longer costs you a pet that is standing right in front of you. Reported by Rinaldi, who measured the twelve seconds and caught the client explaining itself in the chat log.
- The /verbose pet line that names why a pet went now prints once. A dismissed pet keeps ticking while it dissolves, so the reason arrived about thirty times in a row.
Interface
- Windows can now be resized from all four corners. Only the bottom-right corner had a grip before, so a window pushed against the right or bottom edge of the screen had no corner left to grow from. The bottom-left corner has a matching grip, and the two ends of the title bar act as the top corners, with the pointer changing to a resize arrow over them.
- The corner you are not dragging now stays put, including once the window hits its minimum size. Dragging further inwards at the minimum used to walk the whole window across the screen. The GM tool panels, the Oracle window and the table game windows share the same four-corner behaviour as the ordinary game windows.
Combat
- Weapon tooltips now name the average damage beside the range. A longsword that read "Damage: 8 - 14" reads "Damage: 8 - 14 (average 11)", taken from the same arithmetic the swing runs, so it moves with your Strength and your gear the way the range already did.
- Weapon tooltips state charge time in seconds. It runs from five ticks on a longsword to eight on a long bow, enchants move it, and until now the only way to read it was to watch the charge bar fill. That figure now comes from one shared calculation instead of four hand-written copies scattered across the player controller and the charge bar.
Proposals
- Marked W8, Honest damage numbers, as built on the weapons deep dive, the first of that page's thirteen cards to land. The damage band was corrected on 6 August and the average finished the card today. The audit lines the fix retired are dated rather than deleted, so the page still shows what the tooltip looked like on 26 July.
Developer Tools
- Audited every command in the developer console and corrected the reference doc, which listed about 181 commands against a real 218 and pointed at line numbers that had moved since. Seven of the registered commands turned out to resolve to methods that no longer exist, so they do nothing at all when typed.
- Sorted the console command list against the GM panel and the tester panel to work out what each is still missing. The biggest gaps are the nine town-siege commands and the eleven quest-flag commands, neither of which has any panel surface today.
Testing
- A tester verification task sent testers to a "Manage Listings" screen and told them to click a listing and set its price. The vendor window has no such tab, and the game has no way to change the price of a listing that already exists. The tab is called My Listings, the price box only opens when a listing is created, and the task has been rewritten to say so. Reported by gravidy.
- Task authoring picked up a rule to stop the same thing happening again: every UI label a testing task names has to be found in the client as that exact string, and every action has to have code behind it, before the steps are written. "Manage Listings" was the internal name for the tab labelled My Listings, and it read like a real label all the way onto a tester screen.
- Added a test that walks every model a wearable item spawns and fails if one is bound to an untextured Unity Standard material. That combination is never real artwork on clothing, so it catches this class of missing texture before a build goes out.
Wishlist
- Two vendor suggestions filed while sorting the above out: changing the price of a listing without taking it down and putting it back, and splitting shopping at a vendor from managing the goods you have listed on it. Both requested by gravidy.
GM Tools
- Added a Siege window to the GM panel. Starting and ending a real town siege, scaling the Cabalist and routing him, and a local preview of the siege presentation were all dev console commands before, which meant they could not be reached on an ordinary client at all. Ending a siege matters most: a siege has no expiry, so one whose Cabalist could not be reached had no way out.
- Added a Quest Flags window to the GM panel, so a stuck quest can be read and repaired in the game instead of needing a special build. It checks, sets and clears one flag, adds journal entries and books, lists a characters whole knowledge base, and clears quest turn-in times. Flags are per-NPC and a global flag is a different thing entirely, which is the mismatch that usually makes one look like it did not take, so the window says which it is doing.
- Found and fixed a break in the GM event panel while wiring the two new windows: its Clear Weather, Set Heading and Clear Heading buttons named code that is compiled out of a normal release client, so that panel would not build for one. The compile check that guards against this could not see it, because a development machine builds with the developer flag switched on. It can now be told to compile the release side too, which is how the break turned up.
2026-08-19 · 172 items
The New Britannia Herald
Loyal elementals, empty sieges, and a game master inside a wolf
Headlines
- Linux players had every clean quit recorded as a crash, and quitting could leave the game running long after the window closed. Both are fixed: the Linux client now ends its own process the way Windows already did, and the launcher falls back to the game's own shutdown record when the settings file comes back empty.
- Creature possession went end to end: any creature in a scene can now be granted to a game master and handed back safely. A review pass before the build closed fifteen more holes, including a speech verb that had never been wired up and would have failed the first time anyone used it.
- A Crown Exchange was built end to end: a vendor that sells 100-crown bundles for gold through falling-price auctions, with the gold destroyed. Prices start high, drop toward a floor set above the player market, and climb again when bundles sell fast. Every purchase is checked against the exact price the buyer saw, crashes can only ever under-pay with an automatic mail refund, a config file can shut the whole thing off in about two seconds, and a developer dashboard watches prices, throughput and refunds. It ships dark until the numbers are chosen.
- Tamed pets stopped vanishing fifteen seconds after every summon. A day-old equipment fix made a routine pack reload read as the collar coming off, and the pet went with it.
- Summoned creatures stopped outliving your death. An earth elemental would fight on while you were a ghost and still be there after the resurrect; tamed pets went and summons never did.
- Loading screens give up. A load that never gets an answer now returns you to the overworld after three minutes instead of stranding you until you kill the client.
- The siege posts come out from behind the bars. Twenty-one entries from the 17th onward were published as redacted teases while the town siege rework was unannounced. They now say what the work is: a siege that moves into the town itself and stays until the Cabalist holding it is killed.
- Catchphrases stopped selling after ten in a row. Each purchase was stranding the bag it paid through, and the eleventh had nowhere to pay from. Fixed, and a stuck character now unsticks itself.
- Besieged towns show you where the fight is. The Cabalist holding a town now rides the compass and the town map, following him the whole walk in from the gate.
- A new creature: the Scrying Eye, a tier 5 floating eye that fights from the air and leaves a Scrying Lens behind.
- Catchphrases can now carry an approved-phrase list: a phrase we have approved is accepted the instant a player types it, instead of being turned down by a safety check that errs on the side of no.
- Texture memory budget raised on 8 GB and larger graphics cards. An 8 GB card was rendering at quarter resolution 89% of the time to stay inside a budget sized for a machine half its size.
Client
- Trimmed the lighting cost in the Tartarus wave battle room with the poison cloud. Six decorative lights in that arena, four ceiling drain lights and two wall torches, were each casting their own moving shadows, so every creature near one of them was drawn again for that light every frame and the cost grew with the size of the wave. Those six lights still light the room and no longer cast shadows.
- Lion, tiger, snow tiger, jaguar, black panther and snow leopard cub decoration pets had their meows and footsteps stuck at the spot where they were placed, so a cub that wandered across the yard still sounded like it was standing on its old tile. Those sounds now come from the cub itself and move with it. The house cats were already working and are unchanged.
- A container on your lot could end up with a dead "use this container for crafting" checkbox: open the container in the moment right after placing or moving it, or right after walking back onto the lot, and the box could not be clicked at all for as long as that window stayed open. The window now re-reads the setting while it is open, so the checkbox comes back as soon as the lot is ready, and a container whose setting changes while you are looking at it shows the change. Reported by rinaldi.
- Lights built into a house can now be tuned like placed ones. Right-clicking a built-in torch, sconce or chandelier offers Light Settings, with the same colour, range, brightness and "only at night" controls, and the settings save per lamp and show for everyone in the room. Previously that option only appeared on lamps a player had placed themselves. Reported by Allium Oop against the three-story Shogun village house; it now applies to every house.
- The tall mushroom-shaped plant on the Grunvald Shardfall crater rim was being compressed twice over when it was imported, which cost about two thirds of its surface accuracy. Its colour and bump artwork now come in at full quality, so the pitted skin and the small bulbs hold together up close, in Verdantis Shardfall, Paladis Shardfall and Quel as well as Grunvald. The straight break down one side of the cap comes from the original model's layout and is unchanged.
- Wilderness scenes were being handed more ground detail than they were built with. The automatic quality adjustment raised terrain mesh detail and grass density above the authored settings whenever a machine was keeping up, roughly doubling both in Greymark Forest, and it stopped running at all after the first area a session loaded. Scenes now keep the ground detail they were built with until frames start running long, and the adjustment applies in every area you travel to.
- Large concerts cost the client less. A client now builds the sound for the nearest eight performers instead of for every performer in the scene, and re-checks that choice about twice a second, so performers who are out of range, blocked, or turned down with the per-performer volume slider are skipped entirely. Walking closer to one, or turning them back up, brings them into the mix within about a second, already in time with the rest of the group rather than restarting their song.
- Spoken NPC dialogue is kept in a cache on your machine after its first download, and a file left behind by a download that was cut short could never play, so that one line stayed silent every time you heard the NPC say it. The client now checks a cached line before playing it, throws away anything that is not audio and fetches it again, and writes new downloads under a temporary name until they are complete.
- Fixed player-owned town lots coming out only partly levelled: placing a lot marker and claiming it left an unlevelled patch at the marker and along the front of the next lot, and the ground only looked right after leaving the town and coming back. The levelled ground now holds from the moment the marker goes down.
- Loading into a heavily decorated place no longer waits behind whatever else the client is saving. Reading container contents runs on its own channel that keeps working while a save is still out, so a batch of items being destroyed or moved no longer pushes an equipment load past thirty seconds or a town's decorations past a minute.
- The client stopped stacking up copies of your position while it waited on the server. It used to queue a fresh one every couple of seconds whether or not the last had gone out, then send hundreds of stale positions at once; it now keeps one and updates it in place.
- Fences and walls placed so they hang past the edge of a lot now block townspeople on the public ground outside. Before this, only the part standing on the lot itself stopped anyone, so a townsperson walking by could pass through the overhanging end of a long fence.
- A hat, helmet or mask built into a monster or an NPC could stop drawing while you stood close and turned the camera, then come back on the next small turn. The volume the game used to decide whether one of those pieces was on screen was only as wide as the piece and sat well below the head, so a head turn carried it outside; that volume now covers everywhere the piece can swing to. Earlier passes fixed the same fault for pieces a character puts on at runtime.
- Compressed 24 large metal and shine maps the client was loading uncompressed, taking each from 64 MB to 16 MB and cutting about 1.1 GB of video memory. Dyed clothing and gear were left out of the pass.
- The Linux launcher now reads the game log for the note the game writes when it starts shutting down, so an ordinary quit no longer looks like a crash and a session that really died is still reported.
- Added a personal wish list for items. Right-clicking an item now offers Add to Wish List, and that works on an item listed on another player's vendor as well as one you already own. /wishlist prints the list back numbered, with remove and clear to maintain it. The list holds 50 item types, belongs to one character, and is kept on your own computer.
- Reapers and their saplings rendered as blank white shapes in Ulfheim. Their leaves were drawn by a copy of an engine shader the art packing step could not keep whole, so they moved onto the project's own copy of that shader, which took it from 1 protected lighting variant to 61.
- Dancing with a partner can now teach you their dance, finishing the last part of the /partner suggestion (requested by Ceal Astra). Keep a paired dance going for about half a minute and, if your partner is able to teach that dance, it is added to your emote list and usable straight away. Ownership still decides it: the rule is the same one that applies when a player hands an emote to another player in a trade, so a dance that cannot be taught still cannot be taught.
- The summoned Water Elemental wears its binding ribbon again, the band that wraps the torso from the shoulders down to the ground to match the ones on its arms. The flowing-texture effect on that band had been stamping a copy of its display settings, taken when the elemental first appeared, back over it every frame, so anything set afterwards was thrown away and the band stopped being drawn. The same component runs on creatures and effects across the world and was losing settings the same way.
- Topped up the Italian client text. 447 lines that had gained no Italian since the last pass now have one, covering the player-dungeon trap pieces and waygates, the sheet music library, the unclaim-lot warnings, basement and dungeon naming, the siege barks and power meter, the character sheet resistance readouts, and several options-window toggles. Italian in-game text is now fully translated outside in-game books, with NPC dialogue at 100%.
- The launcher was filing the same crash report two or three times. Since it started staying open across a play session, its crash check runs twice per launch and the two runs could overlap and both upload, and a successful upload was recorded in a place the second run never looked. One incident now produces one report.
- Linux players were having every clean quit filed as a crash. The launcher reads the game's exit stamps from a settings file, found one on those machines that the game does not actually write to, and read the empty result as a failed startup, ignoring the orderly shutdown recorded in the game's own log a few lines away. Three sessions of 51 minutes, 77 minutes and four and a half hours were all reported as startup failures.
- Crash reports now say how far a session actually got before it ended, instead of defaulting to "failed at startup" whenever the launcher could not read the game's stamps.
- Merged the client's two copies of the server address into one entry, so the game connection and the log connection cannot end up on different machines. Signing in needs both to work, and there is no visible change in game.
- Quitting to desktop on Linux now ends the game immediately, the same way it already did on Windows. The Linux build had never taken that path and instead waited out the engine's full teardown, which usually added several seconds and in one case left the process running for over three hours after the window had closed.
- The shutdown watchdog now stops repeating itself. It logged a line every two seconds for as long as a shutdown took, which during that three and a half hour case meant 6,424 lines and about 985 KB, enough to bury the record of a normal quit and get it reported as a crash.
- Fixed a client table of render settings that kept an entry for every object it had ever drawn and never dropped the dead ones, so decorated lots cost more to load the longer a session ran. Entries for objects that no longer exist are now cleared, and the dye and sound setup each decoration goes through stopped rebuilding the same lookups and scratch arrays on every placement.
- Placing or changing a decoration on a lot no longer stalls nearby clients while the item loads. Clothing decorations were the worst case, holding the client for seconds where furniture cost hundredths of a second; the client now starts loading an item the moment the change arrives instead of when it is ready to build it.
- Loading into a heavily decorated town no longer freezes the loading screen. The client used to build the whole scene's decorations in bursts that ran without stopping, so the "Loading decorations" percentage held one number and the window stopped responding for seconds at a time. That work is now spread across frames, the same way decoration loading is already paced once you are walking around, and the percentage climbs steadily through the load.
- The mirror key while decorating now offers a second axis. On decorations whose art supports it the key steps through off, mirrored left to right, and mirrored front to back, with a notice naming each state, and the choice is saved with the placed item. Items that support only the one mirrored state, and older items that flip by rolling over, are unchanged.
- Filled the 447 lines of Spanish text that were still showing English inside an otherwise Spanish client: the player dungeon trap pieces and waygate, the sheet music library and its composer credits, the unclaim warnings for lots with a basement or dungeon, the crafting book pages, the phonograph and radio panels, the crown shop, the login form, the chat tab filters, the character sheet resistance tooltips, and the kobold and siege NPC lines. Spanish now reads 99.6% overall and 100% on NPC dialogue, with only the in-game books left.
- Filled the 448 places where the Russian client still showed English: the player-dungeon trap pieces and waygate, the sheet music library, the unclaim-lot warnings, basement and dungeon naming, the siege barks and power meter, the character sheet resistance readouts, the crafting book pages, the phonograph and radio panels, the crown shop and login form, and the chat tab filters. Russian in-scope coverage went from 99.4% to 99.8%, with NPC dialogue already at 100%.
- Ask the Oracle where a player, a housing lot, or something in the world is and it can now put a marker on your compass strip and region map instead of only describing it. It marks what you could already see for yourself in the scene you are standing in, and a player who is flagged for PvP is never marked.
- Made the engine feature that speeds up file reading on Windows measurable for zone loads. It has been switched on in every test client since the engine upgrade with nothing recording it, so builds can now be made with it on or off and every load stamps which setting it ran under, which is what the comparison needs. The write-up also notes the ceiling the existing load numbers already set: on a repeat visit the scene file read costs no measurable time because the operating system still has it cached, so only a cold first load has room to gain.
- Filled the French text that still came up in English: 448 interface and item lines covering the player dungeon trap pieces and waygate, the prize chest, the performance stage, the sheet music library, the unclaim warnings for lots with a basement or dungeon, the siege barks and power meter, the Total Resistances readouts, the crown shop and the catchphrase refusals. French is now 99.6% overall and 100% on NPC dialogue, with book contents still on their own track.
- Deleted about 6 MB of unused sample content that shipped with the client text rendering package, including demo fonts, demo sprite sheets and their tutorial scenes. Part of it was pulled into every build whether or not anything referenced it, and nothing in the game did.
- The loading screen can no longer wait forever. It used to ask the game which copy of a scene to put you in and, if no answer ever came back, sit there with no error and no way out but killing the client; one player spent several minutes stuck at 63 percent entering Castle Atos (reported by KnightRider). That wait now gives up after three minutes, tells you which scene it could not reach, and returns you to the overworld.
- A client dropped for being idle could still think it was in the scene it had just left, so the next attempt to enter one was refused before it ever reached the shard. The loading screen then sat at 63% with no error and no way out. The client now spots a request that was never sent and returns you to the overworld instead of waiting on an answer that cannot come. Reported by inuphet.
- Quitting during a zone load looked like it did nothing. The client does raise a confirmation, but it was drawn underneath the opaque loading screen, so Alt+F4 appeared to be ignored and Task Manager was the only way out of a stalled load. The prompt now draws over the loading screen while a load is up, and keeps its usual place the rest of the time.
Content
- The nine dungeon trap pieces went on sale at decoration merchants, priced from 500 gold for the Pressure Plate up to 3,000 each for the Dart Wall, Flame Jet and Spike Floor. Before this only a Game Master could hand one out, so the Dungeon Builder’s Manual described all nine without saying where to get them.
- The snow in Jotungrund was being drawn from a smaller copy of its texture than the game had room for, so it was stretched to fit and came out soft. The four snow surfaces that cover most of the region now use the full-resolution copy that already shipped with the game, at the same memory and download cost as before (requested by Garfunkel Humperdinck).
- Player dungeons gained stairs in three more styles and a ramp in a fourth: Blue Marble Stairs, Green Marble Stairs, Ancient Stone Stairs and an Icy Cave Stone Ramp. Every kit previously had to borrow the grey stone staircase to change floor level. Each new piece matches the kit it joins and has its own blueprint and smelting recipe. Requested by Ceal Astra.
- Cow nameplate moved forward to sit over the middle of her back. It was anchored over the hindquarters, so on Ophelia in Owl's Head the name hung over her hind legs; the height set earlier this week is unchanged. Covers wild cows, a tamed cow pet, and a cow placed as a decoration, which also came down to the height the other two already had. (reported by rinaldi)
- The Alchemy combine that folds three Greater potions into one Imbued potion now also calls for an Obsidian Chip. Brewing an Imbued potion from scratch has always cost chips, so the combine was the one route around that. Health, Focus and Restoration all changed. Reported by Cora Cuz'avich.
- Pets and summons can take the Blessing of Atos in Castle Atos and the Blessing of Acquisition in The Rise, Grusk Factory and Lost Vale again, after a fix earlier this month covered more fountains than its report asked for. Players park a pet in a fountain to read the blessing strength before stepping in themselves; only the Blessing of Learning fountain still skips pets. Pointed out by Allium Oop and nyarkie.
- The fire spots burning in the tainted water of the Verdantis Shardfall crater now glow. All seven had a flame, smoke and embers but no glow element, so the water around them stayed dark; each one now carries the same fire glow the rest of the game uses, sitting at the water line at the base of the flame.
- Removed the wall shelf that was modelled into the outside of the Rustic Antique Shop chimney, sitting above the roofline where nobody could reach it. It is gone from the shop in Brittany and from the player home version of the same building, at every level of detail.
- The Blue Marble and Green Marble breakable wall T intersections reserved the wrong space for the room they sit in, so a doorway could refuse a piece snapped onto it, nothing could be built on the level below, and decorations hung high inside went to the owner pack when the dungeon loaded. Both now use the reservation the Ancient Stone version of the same piece already had, and copies already standing in a dungeon did not move. Reported by Morkin. The seams and flipped surface detail where these two T pieces meet their neighbours are still open.
- The obsidian chain armor, obsidian plate armor and the three obsidian shields all carried the same names as the ordinary versions, so nothing could tell the two sets apart. They now read Obsidian Chainmail Helm, Obsidian Plate Helm, Obsidian Triangle Shield, Obsidian Rectangle Shield and Obsidian Heavy Round Shield. Pointed out by Rinaldi.
- The obsidian war hammer, hand axe and spear were named for the plain versions too, and the obsidian sword was called just Sword. All four now say obsidian. Thirty-four pieces were renamed in total, counting the longer-lasting version of each.
- The heavy round obsidian shield's recipe called it an Obsidian Round Shield, which is the name of a different shield in the game. The recipe and the shield it makes now both read Obsidian Heavy Round Shield.
- Crafting still adds the material word once. A forged obsidian chainmail helm reads Obsidian Chainmail Helm, and an enchanted one keeps its enchantment name after that. Ordinary chainmail is unchanged and still reads Iron Chainmail Helm when made from iron.
- Imported the Flying Eye creature pack: a flying eyeball monster with animations, sound effects, six eye variants, and spell particle effects for future creature work. The art came in on its own; the pack's demo scripts were left out.
- Added the Scrying Eye, a tier 5 creature. It is a floating obsidian eye kept by the Obsidian Eye's order of sorcerers: it stays in the air, opens at range with a bolt and a channelled beam, drags its target in with a pull, holds it still with a stare, and lashes with its tendrils when something gets close. Killing one can leave a Scrying Lens on the corpse. It is not placed in any scene yet, so nothing runs into one in the world for now.
- The Scrying Eye is the second creature built end to end from our creature-creation documentation, the first that flies, and the first made from a bought art pack rather than art recovered from the old depot. Four things the build ran into went back into those documents: where a flying creature's height actually comes from, how the spelling of a sound event decides which audio bus it plays on, why a bought pack's materials have to be rebuilt on our own shader, and an animation-event timing unit that stretches clips past their end if you read it as seconds.
Images
- Images: the Jotungrund snow texture before and after.
- Images: the Grunvald Shardfall plant before and after.
- Images: the five bard glyphs, before and after.
- Zone map edge, before and after the recapture.
- Images: the antique shop chimney before and after.
- Images: the Scrying Eye and what it leaves behind.
The Herald
- The New Britannia Herald for 2026-08-18 is up: Dragon totems in player dungeons were summoning creatures nine storeys tall into rooms with ceilings, and paying nothing at all when you skinned them. A month of server changes was read back line by line hunting item loss and duplication, and more than twenty real defects came out of it. The bard trainer sells the bard school again, catchphrases stopped undressing people, and the server stopped printing developer error text into player chat. Listen or read the transcript (16 min). Subscribe in any podcast app: /blog/podcast.xml
- The nightly show no longer thanks the same person twice. Names for the closing thanks were read out of the day's work bullets, which spell a name however the writer spelled it that day, so Tuesday's episode listed both Allium and Alley. There is now one canonical spelling per person, and a spelling the list does not recognise is left out rather than guessed at. Pointed out by Allium Oop.
UI
- Fixed the catchphrase window giving up on its price check before the server could answer. A check that ran long was thrown away and the phrase could never be priced. One check is now capped on the server and always answered, and the window waits longer than that cap before it stops listening.
- Equipment slots now empty as soon as the item in them leaves your inventory. Selling a tool you were still wearing used to leave its picture in the crafting tool slot on the skills window until the window was closed and reopened or another skill tree was clicked.
- Five bard skills got artwork of their own in the skill tree. Performance Stance, Instrument Proficiency, Flourish, Dance and Group Dance had all been drawing pictures borrowed from bard skills the rework retired, and two of those borrowings had landed on the same picture, so Performance Stance and Group Dance drew one glyph between them.
- Only one compass marker parks at each end of the strip now. Several of them used to land on the same spot and read as one doubled icon, which showed up most on the exit markers in The Breach.
- Holding Alt and clicking a world item, or holding Alt and pressing the interact key, now picks the item up even when the item has an action of its own, so a readable note or a torch you can light goes into your pack instead of opening or lighting. When the item cannot be picked up, chat says which it was: out of reach, too far away, or fixed in place. Alt on a player-placed decoration does nothing again; those still come out through their own right-click menu.
- Tooltips, right click menus, dropdowns, the how-many prompt, the quit prompt, the carried item icon, name plates and the loading screen now take their place in the draw order the moment they are built. Eleven of them were built down at window level and lifted a step later, which is how the Crown Store purchase confirmation could open underneath the store window until you resized it. Filed against a report of tooltips drawing behind the window you are hovering in.
- Closing the decoration strip with the X no longer keeps it away while you carry on decorating. The strip now returns on the very next decoration you move, where before it stayed hidden until you had stopped moving things for five to ten seconds.
- The Air theme fills its windows as solidly as the other themes do. Its fill was thin enough that a bright scene showed through as a white film over the screen, and in a dark room the window read as a flat grey sheet with backpack item names lost on it. The see-through look is still there under Options, Themes, Window Opacity, at about half strength.
- Japanese and Chinese text now wraps by the standard line-breaking rules. A wrapped line no longer begins with a full stop, a comma, a closing bracket or a small kana, and no longer ends with an opening bracket.
- Clickable website links in chat can be switched off. The chat cog menu has a new entry for it, separate from the one for conversation keywords, and turning it off makes every address in the log plain text including the lines already on screen. Shared map coordinates, keywords, player names and item links keep working either way. Raised by Echondas and Allium Oop the day the links shipped.
- Chat you receive is shown as the words the sender typed, with no link markup of its own. Clicking a web address in chat also honours the same three quarters of a second between clicks that the other link kinds always did, so holding the mouse down no longer opens a browser tab per press.
Combat
- The Bard Specialization skill description now carries its numbers. It lengthens every bard ability, reaching +25% duration at Specialization 100 and still growing above that level, and the effects it adds are not improved by the instrument you carry. Savage Sonata gives its critical damage bonus to every bard who casts it, and the critical hit chance bonus stays the specialist reward.
- The Unstable Power Elixir of the Obsidians now states in its tooltip that the damage it lists strikes the drinker, and how long after drinking it arrives. Before, the tooltip printed the number alone.
- That elixir also landed its hit at 59 seconds, one step before the strength, intelligence and dexterity climb finished at 60. The hit moved to 60 seconds, so the drinker gets the last step of the climb first.
- Pets that stop getting anywhere while chasing something now put themselves back on the ground and look for a new route, and drop the chase if that fails. Reported on the airship main deck in Lamech's Bazaar, where a pet could stutter in one spot until its owner walked far enough away for it to blink back.
- A weapon enchanted with Frost Weapon no longer removes the debuffs a spell already applied to its target. The enchantment movement slow had been sharing one slot with every cast slow in the game, so a single swing took Ice Arrow slow and its attack speed penalty back off the target. It now has a slot of its own and still cannot pile up.
- When a combat formula divides by zero the client logs it so the data can be fixed. Those reports named nothing, so 42 of them in one evening pointed at no rune and no effect. They now name the rune, the effect and its type.
- Siege creatures that had nowhere to stand used to spawn on top of the Cabalist, leaving whole stretches of the outer ring empty. Each spot in the ring now looks for walkable ground nearby, swinging a little to either side and then coming in toward him, before it settles for standing with him. Reported on Solaris and Aranal, fixed for every town.
- Unicorn rainbow attacks and the Rainbow Blast combo roll each of their effects on a chance that rises as the target gets closer, but at point-blank range the game read the distance as zero and dropped every part of the attack to a flat 20 percent. The distance now carries a small floor, so those attacks land at their intended chance in contact and are unchanged past a couple of steps.
Gathering
- A centre hit on a bonus pull can now also turn up the node's rare byproducts: tin, nickel and tungsten from copper and iron veins, beetle carapace and black cutworm from cotton, and the bark and borer byproducts from maple and pine, each at half the chance the node uses on its first pull. A node still gives at most one of each however many centre hits it pays, and nodes with no byproducts of their own, silver, gold and quartz among them, are unchanged.
Community
- Filed 5 items from the nightly forum sweep: mineable ore tiers plus offline personal harvesters, a settings export/import option, a local co-op offline mode ask, a seasonal crafting idea, and an Imbued Potion recipe inconsistency.
Tools
- Brought back the texel density view in the scene editor, which had been switched off for three weeks because the viewport went blank whenever it was turned on. It colours every surface by how many texels of its texture land on a metre of that surface, so over- and under-resolved art is visible at a glance while flying the camera around.
- NPC voice casting now takes accent into account: nine modern real-world accent groups rank below the accent-neutral voices, and below the existing rule against repeating a voice within one scene, so busy towns keep their variety. Across a full re-cast that moves accented picks from 549 to 52, and NPCs already voiced keep the voices they have.
- Grouped the crash reports the game sends in after a bad exit into a ranked list of distinct crashes, each showing how many reports it covers and how many separate players hit it. A fault affecting several people now stands out from one machine retrying the same report.
- Fixed the crash-report triage tool, which had been reading none of the crash logs it collected. Line endings added on the way out corrupted every file path in the script it sends to the report store, and the resulting empty read was reported as a missing program on the other end. It also takes a time window in hours now, not just whole days.
- The street lamps that stopped fading with distance now have a test holding them there. It reads the never-fade setting back off all 16 street lamp and lamp post props, confirms the recoloured elven lamp still inherits it from the plain one, and confirms none of them uses the setting that would also exempt a lamp from the town light budget. A lamp re-saved without the setting now fails the test instead of going dark again unnoticed.
- The internal test harness that drives a real game client gained the ability to walk a character to a spot on the map, instead of only following another character or holding autorun. It routes around walls and doorways, waits for the walk to finish, and reports whether the character arrived or what stopped it.
- Refreshed the report that tracks our largest source files and replaced its hand-maintained line counts with a script that regenerates them. The old figures had drifted by up to 15,000 lines on a single entry, and the sweep command the report carried had stopped counting correctly as the codebase grew.
- Fixed two commit tooling problems that blocked large asset imports: the player-build compile check wrongly rejected packages that ship their own assembly definitions, and commits of over a thousand files failed on a Windows command line length limit.
- An editor guard that blocks deleting item archetypes used to ask with a pop-up. A pop-up there holds the editor until someone clicks it, so any tool waiting on the editor timed out and retried, and every retry raised another pop-up. It now refuses in the log and says how to override, with a menu item for the times the deletion is meant.
Maps
- Eight zone maps carried a black band around the edge of the picture, covering between 47 and 70 percent of the border. The maps were framed on a window slightly wider than the zone, and the strip outside the zone had no ground in it to photograph. Captures now stop at the zone boundary. North Quel Woods, South Majestic Forest, Savrenoc Timberland, Deep Savrenoc Timberland, Savrenoc Stronghold, North Hulenholt, West Vauban Foothills and The Sirens Foothills were redrawn, and the position marker was rechecked on all eight against the new pictures.
Loot
- Creatures placed as decorations leave nothing to field dress again. Yesterday's harvest fix read the reward lists sitting on the decoration animals as content and widened the per-scene check to match, which would have made 30 of the 61 decoration creatures skinnable in all 396 scenes. Those 30 carry the reward list of the real animal they were modelled on and the other 31 carry none, so the lists were the authoring slip rather than the rule. Dragons and the other creatures a player seats in a dungeon still pay. Pointed out by Allium Oop, and it never reached a chaos build.
Performance
- The chaos logs caught two problems with the new background decoration loader. Items stacked on other items could vanish for the session when a lot streamed in: a safety valve meant to break impossible parent loops was firing on ordinary deep stacks mid-load. And past 64 copies in flight the loader quietly fell back to the old foreground path, which is why the walking hitches had not improved. Both fixed, and the loader's timing reports now name the right decoration instead of blaming whatever came next.
- The background decoration loader is off by default while its pacing is reworked. Its own timing reports showed the problem within an hour of going live: finishing a single decoration on the main thread ran 19 to 79 milliseconds even for small items, one per frame, which stuttered continuously while a lot filled in. Towns are back on the previous loader; the fix that keeps stacked items visible is separate and stays.
- Traced a frame-rate drop in Tartarus using the client's own telemetry, without a profiler build. Across 93 one-minute samples the client held 60 fps while exploring and fell to about 54 once combat started, with CPU frame time going from 16.7 ms to 19-23 ms while the GPU stayed at 5-7 ms - so the main thread is the wall and the graphics card is idle.
- Wrote up the Tartarus measurement including what it cannot prove: the idle 16.7 ms reading is the VSync cap rather than the real cost, so the combat delta has no denominator until an uncapped capture runs. The fight involved four zombies and one player, which rules out the crowd-scaling pattern found in Castle Atos earlier this month.
- The strongest lead out of the Tartarus pass is creature pathing: the last 60 fps sample and the first "aggro targets unreachable" line are one log line apart, and zombies kept failing to finish a leash path that the solver reported as possible. Kicked a profiler build against the same commit to confirm whether that work actually carries the frame cost.
- Mail on the test shard failed to open at all: every attempt to read the mailbox came back as a server error, and sending, collecting and the postage quote failed underneath it for the same reason. The server now falls back to the standard mail settings when one is missing instead of failing the whole request.
Housing
- Changes you make to a container or to decorations on a lot are held briefly and written back to the plot a moment later. One kind of held record could get stuck and be retried every 30 seconds for as long as the scene stayed up, never succeeding. Held records are written back correctly now, and one the server cannot write back is set aside and reported once instead of retried forever.
- The window for adding credit to your tax account opens in the middle of the screen again. It had been drawing against the top left corner, partly over the health and quest displays, with a dark backing that covered only part of the screen. Reported by Alley.
Servers
- The test-shard deploy check now compares the settings inside each rule file on the server against the copy the code was written against, rather than only checking the file is present. A setting renamed in code used to leave the server file looking perfectly fine while the server read nothing for it.
World
- Street lamps and lamp posts keep their light at any distance. They used to go dark at about 80 metres, so the lamp you were walking towards went out before you reached it. This covers the elven and fancy street lamps, the nine street lamps with a hanging sign, and the two lamp posts, both the ones already standing in a town and the ones you place. Table lamps, floor lamps and lanterns still fade, which is what they are for. Requested by Allium Oop.
- Logging out on the overworld map and logging back in now returns you to the spot you left, facing the way you were facing. The game had been placing you at the middle of the map square you were standing in instead of your actual position. Inland that was a few paces. On a coastline it was often enough to drop you in the water, and sometimes under it.
- Overworld arrivals are now checked before you are put down. If the spot the game picked is sea, mountain, under the waterline or inside something solid, you get moved to the nearest ground within a couple of map squares, and the client records why so we can find the places on the map that keep producing bad spots. Coming out of a town or a dungeon on to the map is unchanged.
Infrastructure
- The account database now has an automatic nightly copy kept on separate hardware in a different building. It had been backed up by hand once; the copy is now taken every night, checked end to end on arrival (checksum, archive integrity, and that the file is complete rather than cut short), and kept for fourteen days plus one copy per month for a year.
- The machine holding the source code, its history and its several hundred gigabytes of art files is backed up off-site nightly. That was the last piece of the project with no copy anywhere else, which meant a rebuild could have restored the game data but not the code that reads it.
- Both new backups are checked by restoring them, not by assuming. Once a week the code archive is loaded into a throwaway database and asked how much it contains, and a sample of art files is re-checksummed against its own records. The game server has had that same nightly proof since July.
- Set how long backups are kept: the game server keeps a restore point every four hours for a week, then one a day for ninety days. Account data is kept for thirty days. The old scheme kept some copies for years and others for a month, which made "how far back can we go" hard to answer.
- Finished seeding the off-site copy of the source-code machine: 112,258 art and asset files, matching the source exactly, plus the code history and configuration. The first restore drill passed, rebuilding the repository database from the backup and re-checking a sample of the art files against their own fingerprints.
Sieges
- The seats that put creatures into a siege are built while the game runs rather than placed in the editor, and the path they handed the loader was missing its first part, so it matched nothing in the packed content. Neither the Cabalist nor any of his rings could appear and a besieged town came up empty. The full path goes over now, and it survives a trip between machines without being doubled up. Four tests hold the shape of what one of those seats asks for.
- A siege ends when the Cabalist holding the town is killed, and that was the only way one could end. A siege left in a state nobody could reach then held its town for good, which is exactly what an older client produced: a full record with nothing in it to fight. A game master can now end a siege from the town they are standing in. It goes through the same record the ordinary win goes through, credits nobody with the kill, and frees the town on the same tick so it can be picked again straight away. Six towns sitting in that state were put back to normal.
- The town siege posts from the 17th onward went up as redacted teases while the work was unannounced. Those entries are written out in plain language now and filed under Sieges rather than Classified, and redaction on this blog is back to what it is for: addresses, ports, credentials and the like.
- A besieged town now points you at the enemy holding it. The Cabalist carries a crossed-swords marker on the compass and the town map for as long as he is standing, and it moves with him as he walks in from a town entrance rather than sitting on the gate he used. It has its own place, so a decoration Find or an Oracle question set during a siege no longer has to take him off the map.
GM Tools
- Game masters can now possess a creature they summoned: take direct control, steer it around, see through its eyes, and use its attacks. First slice of a live-events feature; taking over any creature in the world is the next step.
- Possessing a creature now opens a control window: name, level, a live health bar, and a release button. Closing the window hands the creature back, so a dismissed panel can never leave a possession running unseen.
- The possession window grew the creature's full ability bar: its basic attack and every authored skill on number keys with cooldown sweeps, plus creature-relative targeting, so a possessed wolf sees players as prey regardless of the game master's own faction.
- Groundwork for possessing any creature in the world: every game client now agrees on who is driving a possessed creature and hands control over the same way it already does when a scene changes hands. The server half comes next.
- The server half of creature possession landed: a game master can be granted control of any creature in a scene, the grant survives scene ownership changes, another game master cannot take an already-driven creature, and everything releases cleanly if the driver disconnects. Ships switched off until it passes a two-client test.
- A possession watchdog now hands a creature back on its own if a game master holds it past the configured ceiling or the creature despawns under them.
- The possession window became a full acting toolkit: speak as the creature (overhead bubble on every client, word for word), play its emotes, heal it, level it, dial its pace up or down for a chase, and hand it back mid-fight with an attack order. First person no longer shows the creature its own skull.
- A review pass over creature possession before it ships: speaking as a possessed creature was failing to send at all, because the new speech verb had never been registered with the networking layer. Registered it, so the words now reach every client.
- More possession review fixes: control of a creature could linger on a client after the creature was gone or after the player changed zones, a chained swap from one creature to another swallowed the server's answer and stalled for five seconds, and the mouse wheel and cursor toggle did nothing while driving. Escape now releases on the press rather than the hold.
- Possession now refuses a takeover it cannot complete and says why, instead of leaving the GM watching a five second timeout with nothing to show for it.
- A possessed creature now has its mind switched off on every machine rather than only the one steering it. Before, other clients kept running its awareness and behaviour tree alongside the driver.
- Hovering a creature ability tile now says what the skill is: its name, its description where one is written, and otherwise what it does in practice — whether it needs a target, how many it hits, whether it stuns or moves the creature. Most creature skills have no icon and no written description, so the tile alone told a game master nothing. The rest of the possession window got its hovers back too; they had never been drawing.
- Possessed creatures were stopping dead against anything with height, a floor decoration included. Two causes: floor decorations cut a hole in the navigation mesh, and the clamp that keeps creatures on that mesh was still running while a GM drove one, so every step onto a rug was snapped back off it. The drive's own collision test also sat at the creature's feet with no step allowance, so ankle-height objects read as walls and a creature already touching one could never move again.
- Driven creatures now step and slide the way the player avatar does: a step allowance scaled to the creature (0.5m at player height), sliding along a wall it grazes instead of stopping, and a refusal for anything too tall or steeper than 50 degrees. Sizes come from the creature's own collision capsule rather than a shared 0.5m one that was identical on a rat and a dragon.
Server
- Gold balance writes now apply as increments with a sufficient-funds guard instead of overwriting the stored value, so two servers changing the same account at the same moment can no longer lose one of the changes. Twelve new EditMode tests pin the behavior.
Economy
- Started building a Crowns for gold exchange: a system vendor that will sell 100-crown bundles for gold through repeated falling-price auctions, with the gold destroyed. First pieces landed dark: the pricing arithmetic (price decay, feedback clamps, release spacing, day and week boundaries) and a validated config schema where a typo disables an offer instead of trading at a number nobody chose. 35 tests pin the math.
- The exchange got its database backbone: a state row per offer with an atomic release-budget allocator, a row per bundle on the shelf whose purchase is a single guarded claim (the price the buyer saw sits in the database filter, so a stale screen can never buy at the wrong number), an append-only order ledger that doubles as the permanent price history, and a dormant per-account cap. Every money transition marks state before it pays, so a crash can only ever under-pay and the sweep makes the buyer whole.
- The exchange got its clock: the master server now releases bundles on a spacing schedule driven by the weekly target, walks each asking price down its decay curve, folds every sale back into the anchor that seeds the next start price, and rolls the daily budget at a boundary players will be able to see. All of it reads a hot-watched config file that reloads in about two seconds with no restart, and a missing or broken file means the vendor refuses to trade.
- The exchange can now take money: the purchase operation debits gold first, writes a durable order record, then claims a bundle with a single database update whose filter carries the exact price the buyer saw on screen, so a stale window can never buy at the wrong number and two buyers racing one bundle resolve to one winner and one automatic refund. A settlement sweep repays any order stranded by a crash, through mail keyed so a retry can never pay twice, and it keeps running even while the kill switch has the vendor closed.
- The exchange got its storefront: a Crown Exchange window showing the current price, bundle size, shelf stock, and live countdowns to the next bundle and the daily reset, opened by talking to an exchange merchant NPC. The window states the pricing rules up front. Buying sends exactly the number on screen; if the price moved first, the window shows the new one and waits for the player to confirm it.
- Every exchange sale and refund now lands in the economy telemetry with the crown count carried explicitly, because crowns are zero-value items and the standard accounting would have recorded the trade as a pure gold sink with nothing dispensed. The log fields were typed ahead of the first event so the dashboards can aggregate them from day one.
- A Crown Exchange dashboard went up on the developer portal: the live shelf and its asking prices, every sale plotted against the price its bundle started at, daily throughput against the weekly target, refund anomalies, and a buyer-concentration meter that flags one account taking an outsized share of the supply.
- Ran the exchange test suites through an offline harness while the shared Editor was busy: the pricing math and config validation passed 33 of 33 after one test was corrected to expect the floor clamp it was accidentally proving.
- The exchange price curve was slowed to halve over 24 hours instead of 6. A fresh bundle now takes most of a day to reach its floor, and with hourly releases the shelf reads as a ladder of prices from newest and dearest down to oldest and cheapest.
- Checked what crowns actually trade for between players before picking the exchange numbers: the player-vendor market has settled hard on 385 gold per crown, with buy orders standing for about seven times more crowns than sellers have listed. The exchange reference price is now set from that measurement, putting its resting floor just above the player market as designed.
- The exchange configuration went onto the test shard with the measured launch numbers: a reference of 385 gold per crown taken from the live player market, a floor just above it, and the 24-hour price curve. It arms itself the moment a build carrying the exchange lands there.
Build
- Moved the nightly server-report bake off the Windows build machine and onto the Linux ones. The bake opens every scene in the game and had been holding the single Windows build slot for hours at a time, with the client and server builds queued behind it. Same commit, same 21 report files: 63 minutes on Windows, 20.5 minutes on Linux.
- The checks that refuse to publish an incomplete report set now live in one script that both the Windows and Linux build paths run, so the two routes cannot drift apart on what counts as a complete bake.
User Interface
- The charge bar, the casting bar, the free attack bar, the resurrect countdown, the control point capture meter and the bard inspiration readout now sit above wherever your combat bar actually is, and follow it sideways as well. They were pinned to a fixed height above the bottom of the screen, so dragging the bar or raising the Hotbar Size slider left them level with it or behind it. At default settings the old height already overlapped the top of the combat slots by about six pixels, so the whole band moved up around twenty pixels.
- The Cabalist power meter shown during a town siege now rides under the compass wherever the compass is. It was pinned just below where the compass starts out, so moving the compass left the stage meter behind.
Taming
- Fixed a tamed pet dismissing itself about fifteen seconds after it was summoned, every time, with nothing said in chat. A change the day before made the equipment slots announce their own bookkeeping the same way a real equip does, and a pack reload rewrites the worn collar slot, so the game read a routine reload as the collar being taken off and let go of the pet ten seconds later. Magically summoned creatures were never affected. Reported by rinaldi and confirmed by gravidy.
Pets
- A magically summoned creature no longer outlives your death. It used to keep fighting while you were a ghost, leash back to you at the ankh, and be standing beside you after you resurrected, however long you had been dead, while a tamed pet went on its own after about ten seconds. Both go now, and the pet diagnostic channel says which path took the creature. Reported by rinaldi, and seen the same day by nyarkie and alliumoop.
Catchphrases
- Buying catchphrases without leaving the area used to stop working after about ten of them: the window took the confirmation and answered "Payment failed. No cotos were taken." Every purchase was holding onto the temporary bag it paid through, and a character can only carry ten of those at once, so the eleventh had nowhere to pay from. The bag is now cleared away when a purchase completes.
- A character already stuck at that limit no longer has to travel or relog. The next purchase attempt tidies up the leftover bags and tries again on its own.
- Added an approved-phrase list for catchphrases. The safety check is careful by design and refuses anything ambiguous, so a perfectly ordinary line could get turned down with nothing anyone could do about it. Specific phrases can now be marked approved, and an approved phrase is accepted the moment a player finishes typing it. Matching is exact, so extra words around an approved phrase still get checked, and a phrase that has been taken down stays refused.
Testing
- A test suite covering the possession ownership table had one method tagged as both setup and teardown, which fails fixture discovery, so its seven tests had never actually run. Split in two; all seven pass.
Dev tools
- New dev portal panel for catchphrase moderation. It manages the approved-phrase list, shows what the safety check has been refusing lately with a count of how many times each line was tried, and lets a refused line be approved in one click. It also handles clip take-downs, which until now meant editing a database file on the server by hand.
Launcher
- The launcher stopped guessing about whether the game is running. On Windows it no longer counts a process it cannot read the path of, which could match anything sharing the name; the log now records the process it found and why it matched; a close that fails says what stopped it instead of only that it failed; and a forced close clears the leftover marker files that could block the next launch on their own.
- Launcher build 30 went out on Windows and Linux, carrying the already-running fixes. Installed launchers pick it up on the next start. Checked both ways before release: a build 29 launcher sees 30 and passes the checksum, and a build 30 launcher reports itself up to date instead of downloading again. macOS stays on 28 until its signed bundle is built.
- macOS caught up to launcher build 30 as well, so all three platforms now carry the same fixes. The bundle has to be assembled and signed on a Mac, which is why it trailed the other two. It is still ad-hoc signed until an Apple developer account exists, so macOS may ask you to allow a freshly downloaded copy through.
Client Performance
- Raised the texture memory budget on 8 GB and larger graphics cards. The client works out how much graphics memory to spend on textures at first launch, and the old rule handed an 8 GB card 2662 MB. That was not enough for a busy town, so the game dropped every texture to quarter resolution to fit, and on an 8 GB card it was doing that 89% of the time. An 8 GB card now gets 3379 MB and a 10 GB card 4096 MB. Cards with 6 GB or less are unchanged.
- The old budget was a share of the card, which was the wrong shape. Nine thousand frame rate reports from real machines show that the textures the streaming system cannot manage cost a near-constant 2465 MB whether the card is a Radeon RX 6600 or an RTX 4090, because that figure comes from the art library rather than the hardware. Holding back a fixed amount and giving the rest to textures replaces holding back a third of whatever the card happened to have.
- Built the sweep that will move the rest of the art library onto texture streaming, and measured the job properly first. Under the art tree there are 42,602 texture imports: 12,819 already streamed, and 9,614 that are eligible but were imported before the streaming setting existed. Those 9,614 are the memory the streaming budget cannot manage, and freeing it is worth more than any budget change.
- The scope report caught something before it shipped. Of the imports that passed the existing rules, 1,068 are textures nothing samples by surface distance: 632 particle and effect sheets, 437 sky and cloud textures, 81 ramps and gradients, 4 colour lookup tables. Streaming those is exactly the bug that took the Shardfall storm clouds back out of streaming last month, and a lookup table is worse than blurry because a dropped detail level changes the colour the shader reads. The sweep now skips them.
- Tested the texture streaming sweep on seven files before running it on nine thousand, and it failed the check. Turning the setting on through the editor does not add one line to an import file, it rewrites the whole file from the 2018 format to the Unity 6 one: 118 lines added and 15 removed per file, with five per-platform blocks and a dozen settings that used to say "use the default" written out explicitly. Texture resolution is untouched and most of it is the editor spelling out values it already used, but across the full sweep that is around 1.1 million lines of changes reaching well past streaming.
- The sweep is parked behind the import-file format upgrade rather than cancelled. The only thing blocking the cheap version was a missing setting line, and the format upgrade adds it, after which the existing sweep script handles all 9,614 files with a clean one-line change each. That upgrade is a Unity 6 migration decision on its own terms, not something to slip in under a texture change. The seven test files were reverted.
2026-08-18 · 129 items
The New Britannia Herald
A ninety foot dragon, and a month of your things audited
Headlines
- Crash reporting works again: the launcher reads the games logs and settings where the renamed build writes them, instead of a copy frozen before the rename.
- A merge had quietly removed the server half of the siege rework from the branch, leaving nothing that compiled. Recovered from the original commits, plus two unrelated build blockers cleared on the way.
- Buying a catchphrase and then traveling could leave you looking naked to other players. Fixed, and the catchphrase bar is now a tile grid.
- A full month of server changes went under the microscope for item loss and duplication: more than twenty confirmed defects fixed in one pass, from lot sales that could orphan a chest's contents to a merchant sale that could hand the loot system a second copy of your item.
- The economy now has a database-level conservation audit: a read-only sweep that proves every stored item sits in exactly one container, plus new regression tests pinning each of today's ordering fixes in place.
- Bard training works again: eleven of the school's fourteen skills were unbuyable at any trainer, and all fourteen are now on offer.
- The test suite is being walked back to zero: 96 distinct failures traced to a cause, most of them tests that had rotted rather than anything broken in the game.
- Three quarters of a day's client errors on the test shard came from one tooltip asking a trainer to price skills it does not teach. Fixed, with a test that reds if it ever goes quiet again.
- Characters with a very long quest history could fail to load their quest state at character select. The write guard that caused it now stays out of the way of records that were already saved.
- Field dressing paid nothing for a dragon summoned by a dragon totem, because the list of rewards a scene is allowed to give out was built without reading what a dungeon room spawns. Fixed, along with the harvest that threw away every reward when one of them was refused.
- Around 400 places in the game server could drop developer text, or a raw exception message, straight into a red chat line no player could filter. All of them now log the reason instead.
- Dragon totems now summon dragons a fifth their old size. The top tier had been standing about 27m to the wingtip in a room that could not hold it. Its reach, its footprint on the navigation graph and its name plate came down with it, and dragons out in the world are untouched.
The Herald
- The New Britannia Herald for 2026-08-17 is up: Monday's work fixed a whole class of area attacks that had been drawing themselves and hurting nobody, including dragon fire cones and lava channels. Sieges went back to being shared fights and now hold sixty-four players. Eight languages caught up on a month of untranslated text, and the team found out why the coverage report had been reading ninety-nine percent while whole features sat in English. Listen or read the transcript (15 min). Subscribe in any podcast app: /blog/podcast.xml
Community
- Filed two player suggestions from the forums to the wishlist tracker: an async HTTP call for Lua add-ons (requested by Tirrag), and server-authoritative position tracking for PvP (requested by Jack SinAssist).
Launcher
- The launcher looks for the games log and settings under the new company name, so it stops reading a copy frozen before the rename. Since the rename shipped, a clean session on an updated install was being reported as a failed startup, and a real crash left nothing to collect; installed launchers pick the fix up on their next start.
Sieges
- Recovered the server half of the siege rework after a merge quietly took it out of the branch. The one file that called into all of it survived, so nothing built. Re-applied from the original commits rather than retyped, with three pieces that needed real work: the kill hooks had to be hand-placed because the file they lived in has since been split into thirty-odd pieces, one build list had to be re-derived on both sides, and a database ledger entry re-filed by hand. Fixed two unrelated things blocking everyone while in there: a number written with underscores that the server compiler rejects, and two shared files edited on one side and never copied to the other.
- A game master can now start a siege on the town they are standing in, instead of waiting to see which five towns the shard picks. It runs the same path the automatic pick runs, so what gets tested is a real siege rather than a special one that behaves differently from the ones players will meet. Also fixed a tuning value that was a lie: the levels a full power meter is worth claimed to be adjustable, but the setting lived where nothing read it and the shard used the built-in number. It is a real setting now, read once when a siege starts and kept for that siege's whole life, so retuning never moves a fight that is already half won.
- Reviewed the town siege rework against its approved plan and fixed the 19 defects it turned up. Three of them meant a siege could never be finished at all: the rule that empties a besieged town was also refusing to let the Cabalist arrive, a cleanup pass destroyed what had just been placed there, and the encounter read "has not arrived yet" as "already dead" and shut itself down a frame after starting. All three are pinned by tests now.
- Hardened the town siege rework against bad data and bad timing. A server report missing its siege-town table would have ended every siege running on the shard, once a minute, with nothing left to start another; the server now refuses to act on an empty list, and the deploy step fails on a report like that instead of publishing it. Also fixed a counter several rooms wrote to at once with no lock, and a batch of meter progress that was thrown away whenever the master server was unreachable.
- Added test coverage for two corners of the town siege rework that had none before: the on-screen meter showing how much power a Cabalist has left, and the switch that keeps the old and new siege systems from ever running in the same town at once.
- The siege power stat added by the rework had never been told what it is, so it fell through to the defaults: offered to every tooltip, printed as a raw internal name, and logging a formatting complaint on each refresh of anything showing it. Two tests that exist to catch exactly that were failing on the branch. The stat is marked internal now, kept out of tooltips, given a plain name, and refused to addons alongside the flags beside it.
- Three things in the town siege rework did not survive the machine running a town handing that job to another one, all on the same path as the last round of fixes and none of them reachable by a test. The Cabalist stopped having his power applied and dropped to a plain creature on everybody's screen at once; his arrival was never triggered again, so a town that changed hands before he got there hosted a siege with nobody in it that could not be won and never ended; and his health was handed back to the last checkpoint, undoing an hour of work. Found by reading the handover path rather than by running it.
- The town siege rework's automatic picker had no off switch: it started sieges on its own the moment a shard came up, with nothing to stop it short of another deploy, and a siege does not expire. It ships off now, and a game master's own request goes around the switch on purpose, so sieges can be tried one town at a time without turning the picker loose. An opening it could not fill also said nothing at all, which is indistinguishable from a picker that is broken; it records what it drew from and what it spent. And a player-owned town nearly always drew the same Cabalist, because the pool stands every player town behind one placeholder and the placeholder draws its own enemy.
- The switch that turns off the town siege presentation only ever stopped one from starting: thrown while a siege was under way it left the dark sky and the empty streets standing, which is the one moment anybody would reach for it. It takes the siege down and gives the town its people back now. The town gate the Cabalist walks in from was also picked from a number that every kill moves, so two machines working it out seconds apart could choose different gates; it uses the siege's start stamp instead. And the power meter was drawing in the same green the game uses for experience.
- Two test gaps in the town siege suite, both places where the tests looked like they were watching something and were not. The arithmetic that turns the power meter into a bar had no coverage and lived as literals where nothing could reach it; it is nine tests now, one of which holds the bar's quarter marks against the quarters the fight actually steps on. And the guard on the baked siege-town list quietly stepped aside whenever the report was missing, which is right for a fresh checkout and wrong on a build machine, where that file being the missing one is the exact failure the guard exists to catch.
- Wrote the town siege rework into the systems documentation instead of leaving it only in its own plan. The page it belongs on described the old gate-scene siege as though it were the only one, so anyone reading it to work out what a change would break got half the picture, and the half that is going away. The new section covers what the shard and the town each own, which parts of the room state each machine is allowed to write, and the three things a siege needs at run time that reading the code does not reveal.
- The nightly bake that produces the server's data tables could hand over a set with the siege tables missing from it and still count as good, which is how a shard ran a full day with no siege able to start. A short set fails on the machine that baked it now, before it can reach a shard. The deploy-side check for those same tables being dropped during the merge was looking for a shape one of them never uses, so it read zero where there were forty-two siege minion flags and could never have fired. It reads both shapes now.
Interface
- Greyed out the Play Offline button on the main menu. Offline play is off for now, so the button is drawn inactive and no longer responds to a click. The rest of the menu is unchanged.
UI
- The character in the character creation and New You mirror was drawn about 1.6 times too wide, so faces looked broad and the avatar you built did not match the one you arrived in the world with. The preview shared a render target with the character sheet and inherited a resize made for that sheet's taller portrait. The mirror has its own square target now and draws at the correct proportions.
- Fixed the catchphrase bar grid: a theme margin on every tile made each one wider than the row budgeted, so the 3x4 layout wrapped early and showed 2 wide by 6 tall. Tiles now carry explicit margins, the grid renders 3x4 upright and 4x3 turned, and a new bar defaults to the upright shape.
- The wind arrow on the compass bar no longer rotates. Its position on the strip was already the wind's bearing, and tilting the art by that same angle on top of it made the icon look like it was spinning whenever it moved off centre. It now stays upright everywhere on the bar, the way the location markers do. Reported by Alley.
- The compass wind tooltip now names the heading as well as the strength, reading "Wind: Light, blowing NE". The arrow parks at the end of the strip once the wind is behind you, so its position stops telling you where the wind went; the tooltip covers that case. The abbreviations come from the same set the ribbon art is translated from.
- The Animal Lore window offered a pin on its titlebar that did nothing at all, and Escape never closed the window either way. Both wired up. In the list-choice popup, double-clicking a row to take it did nothing; it now uses the same double-click rule as the party and inventory lists.
- The keyboard focus outline was drawn on top of everything, tooltips and a carried item included. It now sits below both, which is where a hint about the keyboard belongs.
- The skill tooltip asked trainers to price skills they do not teach. Nothing showed on screen, but every frame the tooltip was open wrote an error to the log, and one session at a single trainer produced three quarters of a full day of client errors on the test shard. The tooltip now checks the trainer's list first, and the price lookup itself no longer treats an ordinary question as a fault.
- Search boxes no longer grab the keyboard on their own. Holding a movement key while dragging the mouse could drop the typing caret into the backpack Search box, which typed the held key into the search and stopped the avatar (reported by gravidy). Those boxes now start typing after you click them, and the same change went to the decoration palette, the town vendor search and the emote list.
- The /datafolder chat command opens the player data folder on Linux and macOS as well as Windows. On those two systems it reported a failure and opened nothing.
- The centre-screen notice bar now draws in front of open windows. Switching decoration mode with a container window over the middle of the screen used to put the explanation behind it, and the same applied to locked door warnings, party announcements and tutorial prompts. Dropdowns, prompts, menus and tooltips still draw over the bar, and clicks still pass through it. (reported by Gravidy, tracker #5233)
- The property manager now says when the server refuses to move a storage. It used to put the entry back where it started with no message.
- Store pictures and thumbnails were drawn wider and shorter than the artwork they came from, so items looked squashed. They now use the proportions of the original art, with the spare space falling either side of the picture.
- The 3D item preview turns again when you drag it with the left mouse button. It had been opening frozen at whatever angle it loaded on, with only the mouse wheel zoom still working. This is the preview window the Crown Store opens from the item pictures under a bundle description.
- Typing in the report and customer service forms behaves: Enter puts a line break in the comment box and stays there instead of opening chat mid-sentence, and a comment longer than the box scrolls inside it rather than growing past the window and hiding the character counter and Submit button.
- The log-in screen asked for USERNAME: in capitals above a box labelled Password:. The prompt now reads User Name: and matches the password prompt and the Remember User Name checkbox (reported by Echondas). Clients set to another language keep the wording filed for that label until the translation tables are refreshed.
- The access list on a chest, a player vendor or a door now names the same Manager for everyone who opens it. It used to label whoever was looking as the Manager and put every other name, the owner of the decoration included, down as a Guest.
- Pressing Remove Permissions on your own name in that window now says the lot owner or a co-owner can remove you. Before it left a button that did nothing and no reason why. The rule has not changed: taking yourself off the list still needs co-owner rights on the lot.
- The keybinding list in Options, Controls tab is now sorted alphabetically by action name instead of the order the actions were defined internally, and the filter box above it returns matches in that same order. Requested by Echondas.
- Fixed the sort caret on column headings: it now points up when a list is sorted A to Z and down when it is sorted Z to A. Most windows had it the other way round, while the backpack window was already correct.
- Typing the lot owners name into the lot permission window now gives a plain notice and an alert window reading "The lot owner cannot be banned or given additional access." It used to answer with a red server error line in chat, which is the line the game uses for faults on the shard. The check also reads the name the way the rest of the game does now, so a lower case or accented spelling of your own name is refused on the spot and the window stays open instead of closing on you.
- Books and notes stopped showing the Back and Next controls when there is no page to turn to. A short note fits on the two pages a book shows at once, so those controls could never do anything; longer books still show them while pages remain.
- The Catchphrases window was drawing its "Current voice" line across the Preview and Use This Voice buttons, and the line took the clicks meant for them. With a full voice list the pane asked for more height than it had and the button row was the part that gave way, shrinking to a third of its size while the buttons kept drawing at full height. The list now gives up that space instead, and the phrase list buttons on the other side got the same treatment.
- The Vendor Listings in Zone window stays open when you travel with it pinned, and it retitles and reloads for the zone you arrive in. Pinning it and changing scene used to close it, after which it would not open again in any town until you logged out and back in.
- The emote bar now lights the slot holding the emote you just performed, and only that one. Clicking a slot used to play the emote and change nothing on the bar. The light follows the emote rather than the click, so it lands the same way from the bar, from the Emotes window, or from a typed command.
- The upright emote bar draws its icons in the middle of its frame. The border to the right of the column was 20 pixels against 8 on the left, because the plate was sized to fit the turn and close buttons above it while the icons sat against the left edge. The bard bar picks up the same change.
- Guild Wars window: widening a column with its divider now raises how narrow the window can be dragged, so the Score and Time Remaining headings stay inside the window instead of dropping off the right edge. Narrowing the column again, or double-clicking a divider, gives the room back. Reported by rinaldi.
- The Crown Store category list still widens by dragging the divider beside it, and the drag now stops before the item shelf loses a column of items. Resizing the store window narrower pulls the list back in so the shelf keeps its columns, and widening the window hands that room back to the list.
- Quick Deposit now tops up whichever stack in the container has room. A chest holding one full stack of an item and a second part stack of the same thing used to refuse the item outright, because the full stack was the only one the button looked at. Two stacks of one item in your pack can also land in two different container stacks now, instead of both queueing behind the same one.
- The Crown Shop category menu now opens wide enough to read its category names. It was a fixed narrow column before, so longer names such as Furniture: Seating & Beds ran off the end. Dragging the divider beside the menu still sets your own width, and a name that still does not fit shows in full when you hover it.
Decorations
- Two of the nine dungeon trap pieces could not be placed anywhere at all. Holding the Pressure Plate or the Message Plaque and putting it down always answered "Something is already in the way", on every floor, at every size, because each inherited its collider from a prop that was never meant to be held: the plate from a developer piece recessed into a scene floor, the plaque from a wall plaque centred on its own pivot. Both fixed. Reported by Rinaldi.
Tooling
- The trap-piece fix came with a check that walks all nine pieces and fails any whose collider reaches below its own pivot. It found the second broken one on its first run, which nobody had reported yet. Also swept the working tree: committed twelve build-ledger rows the deploys had written and nobody had saved, and threw out a pile of asset churn including a batch of localisation id rewrites that would have orphaned a real translation.
- Built an internal report on player-owned towns that shows, for every town, how long it has been since its governor last logged in, and how long since the governor or any of its stewards did. Rows carry the steward list with each steward's own last-seen date, the number of claimed lots and distinct lot owners, and the town deed's remaining tax days.
- The report reads the town list from three places at once rather than trusting any one of them. The editor-side town registry had drifted a long way behind the shard: 770 towns exist in the game data against the registry's 479, and 41 registry towns have no game record at all. Reading only the registry would have hidden about 330 real towns from the report.
- The town dormancy report is running on the test shard. Its first pass over 811 towns found 42 with nobody on record as governor, 295 whose governor has not logged in for two years or more, and 242 where neither the governor nor any steward has logged in in two years.
- A deploy that would ship the test shard a server data table missing one of its sections used to warn and carry on. It now stops, names the table, and prints both ways to rebuild it. The warning had been enough to let a stale set of generated tables replace a good one, taking a whole feature off the shard for a day before the logs gave it away.
Tools
- The nightly pass that reads tester reports now covers comments left on the internal issue list as well. It had only ever watched the tester board, so replies on internal issues went unread: the first sweep of the other side turned up 23 threads waiting on an answer, the oldest 40 days, sixteen of them direct questions. The same pass can now record a reproduction location a reporter supplied after the fact, which it used to drop.
- Added an editor test that ties the "A Ring of Betrayal" achievement description to the quest task it belongs to, so it cannot drift back to describing an errand the quest never asks for.
- Added a project-wide check for switches, gates and lifts set to travel to a destination that was never filled in, the authoring that stopped the Castle Atos gate switch from turning when it was pulled. Of 833 movers across the scenes and prefabs, one was still set up that way, in a developer test scene, and it was corrected.
Server
- Started a sweep of the past month of server changes for item-loss and duplication bugs. First find: two redeem operations (character titles, emotes) could destroy the item after refusing it when the item data named no title or emote to grant. Both now refuse before touching the item, matching the pet-emote fix from earlier this month.
- Audit find: selling to a merchant put the sold item into the loot recycling pool before the sale itself was fully saved. A save failure at the wrong moment could leave the item both with the player and in the pool, where loot drops would hand out a second copy. The pool insert now waits for the sale to commit.
- Audit find: the job that mails out sale proceeds and refunds could not recognize its own already-sent mail after an interruption, so the affected payment row was retried and logged as an error forever. The duplicate detection now matches both error shapes and the retry completes.
- Rounded out the audit's money-flow review: a dungeon prize claim that raced a fresh stake could zero the chest without paying the claimant when the total passed the gold cap (the gold now goes back on the stake), merchant refunds got the same overflow protection purchases already had, and two internal failure paths in item transfers and bard tipping now report with enough context to recover from.
- Wrote a read-only database sweep that checks every stored item id appears in exactly one container, with a cross-check against the loot recycling pool. The existing conservation tests prove the transfer code against a simulated database; this one audits the real thing and can run nightly.
- Added a regression fixture that pins every ordering fix from the audit in place, plus a conservation-suite test that the sale refund arm can never fire past the transfer's point of no return.
- Characters with a very long quest history could fail to load their stored quest state at character select, coming back with an error instead of the journal. The internal limit that guarded against a runaway write was being applied to routine maintenance of records that were already saved, so a character who had simply played a lot of content could no longer read its own history. The guard now applies where new data comes in and stays out of the way of tidying up what is already stored.
- Two mystery box paths reported the error for an unknown container and then used it anyway, throwing every time. Both now stop where the other checks in that file already did.
- The game server no longer prints its internal error wording into player chat. Roughly 400 places could put a developer sentence, or a raw exception message, into a red line that no chat tab could filter and that forced the window open. The reason now goes to the server log and the client words the refusal itself.
- Saving a character back to the database no longer rewrites the entire main backpack when nothing in it changed. The rewrite ran on every scene load and used whatever copy of the pack the scene still held in memory, so a stale copy could put an older version of the pack back and lose items added since. Only the items that actually changed are written now.
- Gathered the server limits on player-supplied text and numbers into a single table, and tightened the range checks on gold amounts in player trades, guild charter purchases and vendor purchase orders so an out-of-range amount is refused.
- Added shape checks to the item and plot updates the client sends, so data nested or repeated far past anything the game produces is refused before it reaches storage. A malformed entry in a character's loot history no longer blocks that character from loading, and accounts with no titles or recipes yet read as empty instead of missing.
Crafting
- Audit find: when a craft was refused at the last validation step, the storage documents of ingredient containers had already been deleted, so the player kept the container but lost whatever record kept its contents readable. Container cleanup now happens only after the craft commits, the same order every other crafting operation already used.
- Audit fix: a crafting material pull interrupted by a server restart could leave a supply chest checked out forever, refusing to open for anyone. Checkouts now carry an age and free themselves after ten minutes, a pull can no longer take over a chest someone has open as a normal container, and two smaller bookkeeping leaks in the release path are closed.
Catchphrases
- Fixed the armor vanish: buying a catchphrase and then traveling could leave your character looking naked to other players, and after another zone change to yourself too, with the armor still equipped and in your pack. A purchase interrupted by travel now says so and returns its cotos on the next scene load. Reported by Knightrider.
- The catchphrase bar is now a grid of square tiles, three wide upright and four wide turned, with smaller text that wraps inside the tile and trims long phrases; hovering shows the full phrase. The bar also keeps itself on the screen, so an old saved position cannot strand it off the edge.
- Catchphrase key binds moved to the end of the stored bind table. Adding them mid-table last week shifted saved binds for everything after the emote toggle; binds saved before the 15th read correctly again, and any catchphrase keys bound since then need re-binding.
Housing
- Audit find in the new lot and house sale system: reading the sale disclosure took a one-minute hold on every placed container, and the transfer that ran seconds later treated a held container as unreachable, handing the buyer the chest without re-keying its contents. The disclosure read no longer takes holds, a held container now defers the transfer instead of skipping the chest, and the handover scrubs stale container access state so a crafting pull started before the sale cannot reach into the buyer's chest afterward.
- More audit hardening on the sale state machines: a lot or house transfer interrupted at the wrong moment could drift back to a state where the buyer was refunded even though the deed or house contents had already moved to them. The refund arms now recognize the transfer's point of no return and wait for the sweep to finish the sale instead.
- Audit fix: unclaiming a lot while a placed chest was held open could bank the chest with its contents unreachable afterward. The teardown now banks a held chest anyway and clears its access state, one bad item slot no longer aborts the whole teardown, and a busy planter gets a retry before any growth goes unrecorded.
- A lot sale refused because a container on the lot is open, or because a basement or dungeon is still placed, now opens a message window with the reason and repeats it in chat. The reason used to be written at the foot of the lot sign where it had to be scrolled to, and a container held for a moment now says it is busy instead of giving a flat refusal with a red server line beside it.
Pets
- Fixed a summoned pet vanishing and then refusing to come back until you relogged, which happened while creating catchphrases. The necklace was never taken; the game briefly lost track of it while reloading your backpack, and the pet treated that as a dismissal. Pets now wait out that hiccup, and a pet that does get put away leaves the necklace ready to summon again. Reported by Ceal, with the necklace connection spotted by Allium.
- A pet whose summon fails on a zone change for a temporary reason now keeps its place, so it still comes back with you next time. Before, one failed arrival made the pet stop returning on its own for good.
- Repaired a malformed metadata file that had kept the pet inventory-churn regression test out of the automated test suite since it landed; the test compiles and runs again.
Bard
- The bard trainer sells the reworked tree again. The rework added seven skills and retired eight without updating the trainer's list, and because Instrument Proficiency sits under most of the tree, only three of the fourteen bard skills could be bought from anyone. All fourteen are back on offer and the retired ones are gone.
- A regression test now pins the trainer list against the skill table, so a school gaining or retiring a skill without the trainer following can no longer ship quietly.
- The two bard debuff songs, Dirge of Dissonance and Requiem of Ruin, now scale with the target: each keeps its old base amount and adds a share of the resistances the enemy actually has, so heavily resistant enemies lose far more than before. Requiem also reduces every school of magic resistance separately, chaos included. Feedback from Vesper.
- Bard debuff auras no longer land on any player's pet, tamed creature, or summon, including pets belonging to players outside the party.
- When two bards play the same song on one target, the stronger performance now wins. Before, whoever played last overwrote the other bard's song even when it was weaker.
- Savage Sonata, Dirge of Dissonance and Requiem of Ruin have shown nothing on cast and nothing while playing since 2026-08-14. A pass that stripped a retired skill art out of the three songs never repointed the slots it emptied. They now use the same visuals as Psalm of Stagnation.
Client
- Default bloom intensity lowered from 1.0 to 0.1 across the default, town, and dungeon post-effect profiles, so bright surfaces glow far less. The /bloom chat command still adjusts it for the session and its help text names the new default.
- Eye adaptation turned off by default in all three scene post-effect profiles. Scene brightness now stays steady when moving between bright and dark areas instead of slowly re-exposing; the tester tweak window can still turn it back on for a session.
- Hovering a crafting recipe now lists the materials each ingredient slot will take, with what every one of them adds to the finished item at the quantity that recipe wants. A light armour recipe that takes two metal bindings shows all six bindings and their bonuses, so the choice is readable before you own them. Requested by necronut.
- A tamed pet collar could latch onto a stale copy of itself while the pack was reloading from the server, wiping its record of the pet that was out and refusing later summons. The client now waits for the reloaded collar and follows it across the reload, so a summoned pet rides out an inventory reload with the collar still working.
- Fixed four rare client errors found in the log sweep: combat log lines could go missing when a fighter had no name to show, closing a crafting station mid-check could leave the window stuck, returning to character select after a lost connection could fail on the way back in, and a reinforcement point wired up wrong could stop the rest of its scenario from switching on.
- Fixed a shopkeeper who would not open a shop: the Ardoris tailor answered the buy keyword and showed a Buy/Sell button, and neither one opened the window. Merchants lost track of their shop after respawning, which also covered trainers, bankers, post office clerks and public vendors.
- When the game refused a move of items between bags, only the bag the items landed in was refreshed, so a stack could stay missing from the bag it was dragged out of until the player logged out and back in. Both bags are refreshed now, and a new set of editor tests covers which bags a refused move asks the server to re-read.
- Stuns and knockdowns show on screen again. The edges darken slightly and ease back off in a slow cycle for as long as the stun lasts, starting from the moment the hit lands. The shading is partial, so the world stays readable through it and it never reaches the solid black the game uses for walking out of a scene. Requested by rinaldi.
- Fixed the Languard Gemstrike teletype mini-game opening to an empty window. The game asked for its lettering before that lettering had been prepared, which killed the run before it printed its first line, so the window came up with a title bar, a close button and nothing else. The lettering is now prepared on demand and the game starts whatever order its pieces load in.
- A pet summon that could not go through still reported the pet as summoned, so nothing appeared and nothing was said. The summon now reports the failure, and a summon slot that failed on one creature takes another creature again without a restart.
- Fixed decorations that refused to go down anywhere. The Monarch Butterfly Chair and the other two Butterfly Chairs previewed red on lot ground, on pavers and on house floors, because the check for what is under an item measured from the item's main collision shape, which on those chairs is the seat. It now measures from the lowest part of the item, so a chair standing on the floor reads as standing on the floor. Decorations left hanging in mid air are still refused.
- Looping background sounds such as waterfalls and rivers no longer cut out for a second at a time while you stand near them. When the client ran short of sound channels it used to treat a waterfall the same as a footstep and drop the waterfall first; continuous sounds now keep their place ahead of short ones, and the client plays 64 sounds at once where it played 32.
- Catchphrases typed in capitals are now spoken as words. A phrase like "FOLLOW ME!" was being read out letter by letter, so "ME" came back as "emm eee"; short abbreviations such as PVP and HP are still read as letters.
- Dropping an item on a container that will not take it used to do nothing at all, with no message, so a refusal looked the same as a drag the game had missed. Those drops are still refused, and now they say whether the container belongs to someone who has not given you permission or simply cannot hold your items.
Performance
- Extended the async spawn helper to single objects: one decoration or house copy can now be built off the main thread, with the same audio repair and scene-change safety the effect pools already use.
- Player town lots now build their decorations in the background as you walk up. The object copy moved off the main thread and the remaining setup runs on a small per-frame budget, so crossing a lot boundary no longer stutters and a single heavy decoration no longer freezes a frame. Decorations appear at the same pace as before, nearest lots first, and a live switch can restore the old loader if anything misbehaves.
- Claiming a lot or swapping a house mid-session no longer freezes a frame for players standing in town: the house copy now builds off the main thread too, through the same background path the decorations use.
Testing
- The automated test suite went from 33 failures to 89 overnight after ten large source files were split into smaller ones. Nothing had actually broken: about fifty tests read the game source code and check that a particular piece of logic is still written the way it was reviewed, and they were all still looking in the file each method used to live in. Those tests now read a whole class however many files it is spread across.
- A second family of stale failures turned out to be about line endings. A guard meant to prove the edge antialiasing is switched on had never once matched, so it read as off while it has been on since 2026-08-11, and six sheet-music checks insisted a file carrying an id had none. Twenty-odd more stale checks were repaired the same way, including two tripwires added yesterday morning that were wrong the moment they landed.
- A rendering change yesterday switched eye adaptation off in all three scene profiles on purpose, but the check that guards those values still expected it on. Updated to match, keeping the rule that actually matters: the three profiles have to agree, or blending between them snaps instead of fading.
- The last two red tests were both guarding rules that had been deliberately replaced: one wanted a bag re-read in a case a fix last week decided was pointless, and one counted a line across a whole file and caught an unrelated third use of it.
- Added a tripwire so this particular rot cannot build up quietly again: it hands every source path the test suite names back to the reader and fails on any that no longer resolves. Two tests had been asking for a window renamed five days earlier. The three landmines behind this weeks failures are written down in the test docs as well.
- A full sweep of the day's test-shard logs collapsed 1,654 error and warning lines into 296 distinct problems and turned the ones worth acting on into tracked work: eleven issues filed or reopened, three fixed the same day. Two of the reopened ones had been closed as reduced rather than gone, and the numbers say one of them has since got worse.
Combat
- A target tooltip on one of the town siege rework's creatures could kill the tooltip mid-draw: a reading it added had no display name and the lookup throws rather than falling back. Riposte Defense had lost its number formatting in an earlier pass and was printing a raw value. Both fixed.
- Creature kills count towards the Hunter achievements again. The counter behind Novice, Adept, Master and the rung above them was never written, so the progress sat at zero however many creatures you fought. Kills your pet lands count for you too, and a creature is only counted once however much damage was still landing on it.
- Creature and summon attacks with no player skill behind them no longer show their internal name. A buff or debuff icon that read "?ZombieSpecialAttack1?" now reads "Zombie Special Attack 1", and a two-handed bludgeon swing reads "Bludgeon Combat".
Achievements
- Twelve mining, foraging, forestry and field dressing achievements plus three farming ones were sitting under Crafting again. A rebuild of the achievement list had overwritten the fix from ten hours earlier, because the builder could only ever file a discipline as crafting. It reads the category off the discipline now, so the correction survives a rebuild.
Tester Tools
- Opening a tester window in a browser printed a local machine address and a one-time code into chat. That address only ever worked on the computer running the game, so the chat line now names the tester hub instead. The page still opens the same way it did before.
- The tester panel can now set adventurer and crafter level directly. Type the levels you want in the new Set Level row and one button grants enough experience to land about halfway through each, instead of looking the cost up on the curve and typing it into Grant XP by hand. Leave a field at 0 to leave that side of the character alone, and a line under the row shows the levels you are on now. It raises only: a level you already have is refused rather than approximated, because the grant cannot take experience back.
Loot
- Fixed field dressing on creatures a player seats in a dungeon. The server checks every harvest against a per-scene list of allowed rewards, and that list was built by scanning folders rather than by reading what a dungeon room actually spawns, so a dragon from a dragon totem paid nothing but kill experience. Reported by Wishdragon.
- A harvest no longer throws away everything when one reward is refused. It used to consume the corpse, pay nothing, and skip the gathering count if a single bundle failed the check; it now pays what it can and skips only what it cannot.
GM tools
- A summoned creature no longer leaves a corpse that only the summoner can skin. Corpse loot already skipped summons; field dressing did not, so everyone else in the scene got a corpse that could only refuse them.
Oracle
- The Oracle no longer answers with its own working-out. In some conversations it would reply with a wall of repeated half-sentences and a block of raw code instead of an answer, or slip a line of planning in front of a real answer. It now checks its reply before sending it, has another go when the reply is working-out rather than an answer, and says "My thoughts tangled on that one" if that second attempt also fails. Garbled replies from before the fix are cleared out of your conversation so they cannot confuse your next question.
- The same protection went into the character viewer chat and the in-development NPC dialogue service, which run on the same assistant. Both now drop a reply that turns out to be working-out rather than something to say.
Build
- The nightly report bake now refuses to publish a set that has lost the loot for creatures players place. Both checks were run against the old report and both catch it, so the gate fails on the bug it was written for rather than passing on principle.
Tests
- New checks cover the loot bake and the harvest path: one drives the real collector and asserts what each scene bucket must carry, the other pins the server behaviour that has no function to call.
Dungeons
- Dragons summoned by dragon totems in player dungeons are now a fifth of their old size. The largest tier measured about 27m to the top of its wings inside a room that could not hold it, and now measures about 5.4m. All six totem tiers came down together.
- The trigger volume around a dragon decides how far its melee reaches, how much room it claims on the navigation graph, where you can click to target it and where its name plate sits, and it does not follow the model size on its own. It came down by the same fifth, along with the death collider, the effect scale and the movement speed, so the dragon keeps the gait it had.
- Dragons out in the world are unchanged. The totem spawn point carries its own set of scaled dragons, so The Rise and the ancient encounters keep the ones they had. Three new tests fail if any of the scaled numbers drifts off the one fifth ratio.
Content
- Corrected the descriptions on the "A Writ of Betrayal" and "A Ring of Betrayal" achievements. Both told you to carry the document to the spouse who named it; both are earned when Khasi or Siranto tells you about it and sends you on to Min Liang Tan (reported by Allium Oop).
- Every fish you can catch now counts towards the fishing tallies in the achievements journal. Only the thirty trophy kinds counted before, so landing a bass, a cod or a young marlin moved neither the number of fish caught nor the number of different kinds. The roster is now fifty four kinds and the last rung of the kinds chain asks for all of them; the thirty trophy kinds keep an achievement of their own on first catch.
- The two road siege encounters were set up as though one group would run them once, so in a public instance the staged attack waves never started and the catapults and the final boss did not appear. The waves now run on entry, and the encounter resets a few minutes after it is cleared so a later group can fight it again.
- Removed the three mimic taming deeds from the achievements journal. Chest mimics are pledge rewards and cannot be tamed, so Mimic Tamer, Mimic Handler and Mimic Whisperer could never be finished. The taming collection deed now asks for 176 kinds of creature, the number a player can actually tame. Killing mimics still counts towards the bestiary deeds.
- Three sigil plaques in Ardoris were lying flat, so half of each one sat inside the wall it was pinned to and the face pointed at the ceiling. They now hang upright and flush against the wall: two in the Guild of Arms, one on each floor, and one in the Town Hall.
- The town square fountain in Brittany Alleys can be used from the ground. The fountain sits on top of a tall monument, and the game measured how far you were from the water itself, so standing in the square put it out of reach and taking water did nothing. Filling now works from anywhere on the fountain platform, and your character walks to the paving at the foot of the monument to do it.
2026-08-17 · 192 items
The New Britannia Herald
Dragon breath that never burned anyone, and eight languages catch up
Headlines
- Sieges are shared fights again: Private and Party no longer give you a city siege all to yourself, and one siege holds 64 players instead of 8.
- Four fixes that had been written but never landed are in: fly toggle no longer kills you on the way down, chat pins survive a relog, skill tooltips stopped claiming defensive skills hit things, and the empty leaderboard message stays inside its panel.
- Fixed nine defects from the log sweep, including a siege catapult that could spawn invisible and a tool-visual bug behind 706 of the day's errors.
- The Chaos shard got a Tester Handbook: /guide in game and a matching page on the tester hub walk testers through setup, the tools, the verify workflow, and a chart of the bug loop.
- Eight languages caught up on a month of new features. Coverage back to 99.2 to 99.6 percent from 97.3, with about 2,600 lines translated per language and NPC dialogue still at 100.
- The chaos shard runs on a fresh copy of live data: 8.8 million records restored, migrated, and verified, and the whole refresh is now a repeatable checklist.
- Buttons in nine windows had been drawing as hairlines through their own labels. The shared button style they referenced was never written; it is now, at a real 30px.
- The chat window stays where you put it. Every "why your glyph did not fire" message was forcing it open, so a fizzle or a press on cooldown made it appear mid-fight. The lines still land in the log.
- Ran down the "Some items could not be moved" inventory errors testers reported: five fixes across client and server, from stack consolidation to placing containers on lots.
- Six fixes that had been written and never committed are in: wall lamp targeting, weapon comparison tooltips, Crown Store crown payments, a widenable store category list, Body Slam against rooted creatures, and wind-driven windmill blades.
- Took a pass over a day of chaos shard logs and fixed the errors behind the loudest entries: a Castle Atos lever that threw on every frame it was pulled, a taming collar update that threw once a frame after leaving its bag, and two server paths that reported the wrong reason for a busy plot container.
- Town sieges are being rebuilt. A siege moves into the town itself and stays until the Cabalist holding it is killed, with a power meter that drains as you fight his army down. The plan was approved this morning and the groundwork, the server half, the client half and the encounter are all already in.
Movement
- Turning the fly ability off while high in the air no longer kills you on landing. The drop counted as a full sky-to-ground fall and the damage was usually fatal; the first landing after you switch fly off now costs no health. Protection covers that one landing only, and only when you were actually high up, so flipping fly on and off at ground level does not bank a free fall for later.
The Herald
- The New Britannia Herald for 2026-08-16 is up: Sunday was mostly one long argument with Lightning Storm, which had been striking about thirty times where thirteen was the plan, hovering a metre over everyone's heads, and losing its cloud partway through. Quick Deposit arrived, broke twice in public, and got fixed twice the same day. Summoned elementals came back down from double health, and the studio finished moving into its new name. Listen or read the transcript (15 min). Subscribe in any podcast app: /blog/podcast.xml
Chat
- The chat window pin now survives a relog. Chat windows are owned by their own manager rather than the dialog controller the rest of the HUD uses, so the pin was never being saved and came back off on every login. Each of the six windows keeps its own pin alongside the size and position it already remembered.
Community
- Swept the forums and filed 17 wishlist items from the community: a 15-part crafting/economy/PvE bundle from one player, a light-armor set-bonus alternative, and a Clone Jar of Yeast Culture batch-count fix.
Combat
- Skill tooltips only print a target count for skills that actually hit enemies. Defensive skills and heals were reading as hitting: Glancing Blow claimed one target, Dig In and Healing Burst claimed eight. Those lines are gone and offensive skills still report the same numbers combat uses.
- Twenty-five hazard zones that never applied their effects work again. Dragon fire-breath cones and the lava channels in the LavaFishing dungeon rooms are the ones testers will notice first; a handful of other creature area attacks were in the same class. Eight further zones that ship with no shape at all now log a warning as they turn on so authoring can find them.
- Ring of Fire now has a fire loop playing under it while the ring burns, and a short fire-hit sound when a character in the ring takes a tick. The audio was already authored on the effect but shipped muted and inactive; requested by Echondas.
- Root icon on other players now waits for the target to confirm the root instead of painting the attackers guess. Stun already worked this way; Root and RootUnbreakable now share the same fix.
- A blocked glyph press no longer opens the chat window. A fizzle, a press during the cooldown, a press while another action was running, an out of range target: each one forced the chat window open and pulled it in front of whatever else was on screen, so during a fight the window kept reappearing on its own. Reported by Rinaldi. The sentences still go to the chat log and are still there to scroll back to, the hotbar slot still flashes on a blocked press, and a fizzle still plays its effect.
- Wrote out the full combo math for Splintering Strike — where the combo level comes from (a ceiling average of its two source runes), how card stacks change its damage, debuff size, duration, cooldown and focus cost, plus every per-hit formula the rune actually runs at the moment.
- Ground area spells another player cast at you (Lightning Storm, Ring of Fire, Meteor Shower, Ice Field) again actually damage the target the fireball or storm is landing on; the ring had been drawing itself and picking numbers without moving the health bar whenever the caster and the target were on different clients.
- Rend now locks the damage of its bleed at the moment it lands. The last verification pass caught two mirror cases the first fix missed: applying Rend from behind and walking to the front dropped the bleed, and swapping to a different weapon during a Rend rewrote the bleed range from the new weapon. Both are held now. Whatever weapon and whatever facing the initial hit was dealt with, every tick keeps the same range on the debuff icon and rolls damage from the same band. Rapid Fire and other authored per-tick-reroll runes still evaluate each shot as its own swing.
- Bard songs no longer let combat time out under the singer. A bard chaining a support song (Melody of Mending, Savage Sonata, Rhapsody of Recovery) with a pet heal or a strength, speed or taunt glyph now keeps the combat timer alive on every cast, matching what blade skills already did (#5149).
- Body Slam works on rooted creatures. An earlier pass fixed the code path and the glyph still did nothing, because the rune data carried its own gate that zeroed the effect chance whenever the target was rooted, so damage and stun were dropped with it. Reported as #2818.
Sieges
- Sieges are fought alongside other players now. Travelling into a besieged town while set to Private or Party used to hand you a siege of your own, so a city siege could be cleared alone or with only your own group. Sieges now always put you in a shared instance, the same way towns already did. Each besieged town still gets its own sieges.
- One siege instance now holds 64 players instead of 8. If your matchmaking mode is Private or Party, the window before you enter a siege says the setting does not apply there, and the same line lands in your chat log when you arrive.
- Spent the day on research and design for a rework of town sieges. The plan is approved and runs 23 steps across five waves. Sieges move off the overworld and into the town itself: one NPC town and up to four player-owned towns are besieged at a time, each held by a Cabalist who walks in from a town entrance to the shrine matching his anti-virtue. The town stays under siege until he is killed. A four-segment power meter drains as players kill his creatures, and everything about him scales off it. At a full meter he carries 20 times his health, 5 times his damage and stands twice his height; at an empty one he is the plain creature off his prefab.
- First wave landed: five commits of groundwork, none of it doing anything on its own yet. The siege record the shard owns, the arithmetic behind the power meter, the list of towns a siege can start in, and two new fields on the creature kill map so the server can price a kill in levels instead of trusting what the client reports. Two things turned up in the data while wiring it: five player-owned towns listed as siege towns that no longer exist, and Castle Atos flagged as a player-owned town when it is not one. Both were fixed rather than worked around.
- Second wave: the whole server half. The shard picks which towns are besieged and tells the rooms that need to know, kills drain the meter on the same path that pays the experience for them, and killing the Cabalist ends the siege and puts the town on a cooldown. A siege can now be started, drained and won with no client that knows anything about it. His health is checkpointed as he goes, so a town that empties out and dies gives the fight back where it was rather than handing the next group a fresh boss.
- Three more waves: the client half, the encounter itself, and a switch that stands the old siege down once the new one is ready. A besieged town gets a dark sky with the sun casting no shadows, its own lights dimmed to a fraction, and its people gone from the streets, with a few of them saying why on the way out. The Cabalist walks in from a town gate to the shrine with three rings of Obsidian around him, 64 in all, and they travel with him rather than standing where they spawned. A four-segment meter across the top of the screen shows how much of him is left.
Leaderboards
- The empty-board message wraps instead of spilling over the board list. At the leaderboard window minimum width the line was wider than the panel it sits in and the left half drew on top of the selector column; it now wraps inside its own panel at every window size.
Log Triage
- Swept 24 hours of chaos server and client logs. 1,958 error and warning lines collapsed into 294 distinct signatures, which produced 14 new bug reports, 2 reopened bugs, and fresh data on 2 more.
- Filed #5060. Two characters generated 706 of the day's 894 client error lines. Their crafting tool visuals logged a missing equipped item error for every tool on every refresh, suspected fallout from this week's equipment changes.
- Filed #5061. State machine errors, including all login screen errors, have been logging with the actual error text missing. A format string dropped the argument carrying the message, so around 40 error lines a day carry no detail.
- Filed #5062. The interactive siege catapult can spawn with no model wired, invisible and unclickable.
- Filed #5063. One plot loads with an invalid basement size and fails its decoration limit setup, erroring repeatedly while the plot is loaded.
- Filed #5064. The Rise pit dungeon piece places a dragon spawn point where pathfinding cannot reach it inside player dungeons, so the spawn fails.
- Filed #5065. Logging out instantly recorded an error in the client log even when the logout worked.
- Filed #5066. Teleporting to another player could fail silently when the locked scene answer came back without a scene.
- Filed #5067. The overworld town population markers could error when town data arrived during a disconnect.
- Filed #5068. A combat effect chance formula errored on a division with a missing value.
- Filed #5069. An ornament set in Ardoris is mirrored with negative scale, so its collision does not match what players see.
- Filed #5070. A decoration NPC item references an archetype that no longer ships, so the owned item cannot load.
- Filed #5071. Four building blocks on one property have broken parent links and warn on every visit.
- Filed #5072. The overencumbered effect has no icon.
- Filed #5073. An elf guard archetype carries an empty loot bundle slot and warns on every engagement.
- Reopened #4778. Cat decoration pet sounds still fail to attach to the moving body on current builds, 106 warnings in a day.
- Reopened #4779. A camera turn can still leave the cursor hidden. The watchdog recovered it 21 times in a day, close to the rate before the fix.
- Fixed nine of the problems found in yesterday's log sweep. The siege catapult could spawn invisible and unclickable for everyone except the one client running the scene, which would have blocked siege testing outright.
- The crafting tool visuals on a character logged a missing-item error for every tool on every refresh. Two characters produced 706 of the day's 894 client errors between them. The two halves of that code were also duplicated with their left and right labels swapped.
- State machine errors, including every login screen error, had been recording without the actual error text. A format string took four values and had room for three, so the one carrying the message was dropped.
- A basement whose size does not resolve no longer takes the whole plot down with it. It used to abort partway through setup and then error again every update; it now falls back to the smallest basement limits and names the plot in the log.
- Teleporting to a player whose position had not arrived yet could fail silently. The lookup now answers "not found" instead of throwing.
- Fixed an error in the overworld town population markers when town data arrived during a disconnect, and one in combat effect chance formulas where a division by zero threw from inside the code meant to report it. That second one also left the rest of the formula reading the wrong numbers.
- Four ornament colliders in Ardoris carried a negative size. The game was already correcting them at load, so collision is unchanged and the warnings are gone.
- Removed 23 empty loot bundle slots across four scenes. Elf guards and others were warning on every engagement.
- Added tests covering the combat formula division fix.
Localization
- Swept the client for player-facing text that was never wired to the translation system. A string built as a "not localized" value still compiles into any message the game shows, so nothing flagged these: 51 read as English prose, and the ones a player actually sees now have translation records. That covers the catchphrases window chrome and its nine status messages, the equipment warning tooltips, the deco palette off-lot notice, the lot permissions refusal, the Discord offline notice and the /verbose replies.
- Six slash commands built their refusal as an English prefix glued onto a translated reason, so a player outside English got half a sentence in each language. They now format through one record where the command name stays literal and only the joining format translates.
- Regenerated the English string database, which had drifted four weeks behind the code. 288 strings existed in the game with no record for a translator to work from, so no amount of translation could ever have reached them. The worst was the title list: last generated in June, so the 34 titles added at the top of every kill ladder had no record at all. Three files were also serving stale English, including a skill whose description had been rewritten two days earlier.
- Translated the summer into eight languages. Roughly a month of new features had shipped their text faster than it was being translated, leaving coverage at 97.3 to 98.1 percent, so a player outside English met the dungeon builder, town console, guild finder, addon store, achievements, item search, lot signs and trap wiring in English. About 2,600 lines per language were filled. German, Spanish, French, Italian, Portuguese, Russian, Simplified Chinese and Japanese now sit between 99.4 and 99.8 percent, with NPC dialogue still at 100.
- Cleared every stale translation. When an English line is edited, its existing translation is marked out of date and the client quietly falls back to English, so 166 lines per language were showing English without anything reporting a problem. That count is now zero in all eight languages, and for the first time nothing is missing outside the in-game book text, which ships on its own track.
- Measured translation quality rather than assuming it. The automatic filter flagged 14 lines out of about 21,000 and only one was wrong, which says more about the filter than the work, so 45 new lines per language were read and judged directly. 32 of those 360 had a real fault and were corrected: a Russian line that read a card draw as drawing a line, a German word for the message of the day that contradicted the one used everywhere else, and a weapon enchantment that had lost its element from its name.
- Added a check for the failure that hid all of this. Coverage is measured against the string database, so a line that never gets collected into it is invisible twice over: no translation pass can reach it and no report counts it. 214 lines and 34 kill ladder titles sat unreachable for up to a month while every language read 99 percent. A pre-commit check now refuses any change that leaves a string the translators cannot see.
- A test caught the fill overriding good translations. 269 strings are registered twice under one identifier, once from code and once from their original interface panel, and the game reads the code copy first. Those had always been blank, so the panel copy was what players saw. Filling them in handed the win to fresh machine text over translations that had already been reviewed: on German 121 of them changed, including a formal and informal address that a review pass had deliberately settled, a missing thousands separator and a moved keyboard shortcut. All 269 were rolled back and the duplication filed as its own bug.
- Corrected the coverage numbers this pass reports. With the duplicates rolled back the eight languages read 99.2 to 99.6 percent rather than 99.4 to 99.8. Outside the in-game books the remaining gap is 243 strings that are already translated on their other record plus 26 that genuinely still show English, identical in every language. Those 26 are the real remaining gap and they are on the bug.
- Retired the four Discord interface strings from the translation database and regenerated the shipped payloads for all eight languages, so nothing is left carrying text for a feature that no longer exists. The community Discord links in the New Player Handbook and the in-game links panel are unchanged.
Tools
- The unattended tracker pass now works queued tasks alongside bug reports. It also picks the backend build that matches the machine it runs on, so a server-side fix no longer reads as a broken build and gets thrown away before anyone sees it.
- Asking the in-game Oracle "what launcher version is out?" now returns an answer. The Oracle reads the current published build off the patch host for Windows, macOS, and Linux, so the number it gives is whatever the launcher would fetch on its next self-update. It used to say the knowledge base did not cover it. (requested by an in-game report)
- The
setgametimeconsole command shifts the sky clock to the given hour and lets time keep advancing from there, matching its old behavior. A newlockgametimecommand pins the sky at the given hour untilresetgametimeclears it. - Oracle lists your reports with a Status column, so open reports stand out from closed ones at a glance.
- Swept every recipe against NPC prices to check for craft-and-vendor money loops. Nothing to fix; no crafting recipe with all merchant-buyable inputs pays out more than the inputs cost. The audit is now a repeatable Editor menu item and a headless command line tool for the next content pass to run.
- Audited every pre-7.0 FBX in the project for the Unity 6 importer bug that dropped triangles from the Simple Mantle Clock (fixed in July): 1,928 old files scanned, none still carry the broken polygons that trigger it.
- Added a teleport verb to the client-control harness so a scripted test can land its avatar at coordinates in one call instead of steering with autorun until it gets there. Dev/GM builds only.
- Cleared Unity 6.5s UAC1002 warning on the Curvy spline event fields: an audit of every scene and prefab that carries a Curvy component found no Inspector-wired hooks on those events, so the existing warning suppression drops no player-authored data.
- Split the Editor menu junk drawer (22,816-line PortBuildMenu) into 23 concern-scoped partial files so future work can land small, focused diffs instead of rewriting a single monster file.
- Full builds no longer spend three minutes rebuilding the store metadata when nothing has changed. The build now records a signature of the store shelf items and the store configuration, and skips the rebuild when nothing an item pulls from has moved since the last build.
- A new Patch Builds card on the developer portal lists every published build on the patch host per platform, its tree size and file count, which build each channel and launcher pointer is currently serving, and total disk used and free on the patch volume. Read-only; the patch host itself is unchanged.
- Registered a Claude patch-notes skill wrapping the existing regenerate/redact/seed commands, so a worker asked to fix the public notes reaches the right command without redigging the docs each time.
- Crafting catalog now lists masterwork outcomes per item type - one table per weapon kind and per armor slot, showing which effects each can roll along with the crafter-skill window, so a bow, a plate helm and a cloth belt each have their own rollable pool called out instead of one flat list of every masterwork effect the game defines.
- Split BaseCharacterController.cs (6,479 lines, the shared base for the player and NPC controllers) into a slim 807-line core plus sixteen partial-class files grouped by concern (combat, character state, unity lifecycle, properties, utility, and so on). Byte-round-trip verified against the pre-split file. No behavior change.
- Conversation.cs split into partials: the NPC conversation module goes from one file into a slim core plus fourteen themed partials by top-level region, no behavior change.
- Dropped about 6.5 MB more of demo content from the player build: three dead noise textures in the volumetric-lighting plugin, plus a village-asset folder that was forced into every build even though the game only used two materials from it. Same asset hygiene pass as the July skydome shrink; a font-example subitem still needs a server string check.
- Patch host builds page can now flip a channel to a selected build and roll it back, from the developer portal. The flip runs the same code the publisher uses, so the pointer bytes match what the launcher parses; every action goes into an audit log with the operator name.
- Fixed two commits that had landed in a state the Unity project could not compile, which had taken the whole EditMode test suite down with them: an out-of-scope variable in the melee damage log, and a test stub left behind by a mail interface rename.
Content
- Cow nameplate came back down: the previous lift cleared the body but left the name hanging much higher above the cow than it does above a human NPC, so the gap has been closed to what a horse or a person shows. Covers Ophelia in Owl's Head, the cow in Etceter, and a tamed cow pet.
- The Rise Pit room in the Player Dungeon builder had its dragon totem spawn point authored above the pedestal in a spot player-dungeon navigation did not cover, so a dragon armed on that pedestal failed to place. The point has been moved onto the ledge floor at the base of the pedestal and the dragon now spawns and fights normally.
- The ordinary Triangle Shield picture in the bag is a light grey shield again, no longer indistinguishable from its obsidian sibling.
- Ordinary Bone Chest Armor is a light bone picture in your bag again. The obsidian version stays charcoal, so the two are easy to tell apart. The other four ordinary bone pieces are untouched.
- Fixed two dead elves that were hovering above the ground in the Blood River Massacre tutorial corpse cluster; they now rest on the dirt like the corpses around them.
- The two standing stones that call the ruin elevator at the Sequanna Colossus now respond only to a click or the interact key. Brushing against one no longer moves the platform.
- Regular adventurer trainers no longer offer Obedience or Concentration. A tester found that Blackmoor in Ardoris kept both skills on his taming list even though he does not teach Pet Hide Toughness or Pet Attack Precision, the prerequisites. Both rows are gone from the shared regular trainer, and every in-town trainer that reuses it clears the same way. Master taming trainers still offer both skills alongside their prerequisites. Requested by Allium Oop.
- Gave the Battle of Solace Bridge tutorial scene the wartorn sky it was missing; before this the game fell back to a plain blue skybox because no sky dome had been placed at all.
- NPC dialogue that shows the players real character name (the Oracle, or any NPC that has learned the player) now maps to a second voice clip generated with the name elided from the audio, so the client can play a clean name-dropped reading of the line instead of playing silent as it does today. Ships once the offline voice generator publishes the new clips, roughly 5,100 of them.
- Shields now get the coloured-gem enchant pools every one-handed weapon has. Before this change any coloured gem burned on a shield produced the same attribute-only menu; a shield now sees element-specific options for each of the nine gem colours, mirroring the one-handed sword pool. Requested by the weapons deep-dive audit; matches the earlier fix for bows and crossbows.
- Hilt Fortress at Nightshade Pass had two overlapping entrance doors on the last chaos build. The extra leftover doorway has been removed so only the tower gate door remains, with the same tooltip and merged quest-or-standard picker the other two entrances already use.
- Three new Alchemy combine recipes let a crafter fold 3 Greater Health, Focus, or Restoration potions plus 3 Mandrake Root into 1 Imbued potion of the same kind, matching the Lesser-to-base and base-to-Greater combines already in the book. The new recipes file under Potions and open at Alchemy 40.
- Grusk NPCs on shared conversation keys (bankers, guards, generic residents, the town crier, the innkeeper, the crafting trainer, the adventuring trainer, the public vendor) now use kobold voices in Grusk while the same keys stay human in Ardoris, Kingsport, Soltown and Castle Atos. Waiting on the audio generation and publish before it is audible in game.
- Pinned the Watcher scrap drop end to end: the loot bundle for both Watcher shapes now goes through the real roll a hundred times in the test suite and must return a Metal Scrap on every one of them. A future edit that quietly breaks the guarantee no longer passes the checks in place.
- Wrote up the exact Sneak Attack damage formula in the Subterfuge school reference and in the in-game Oracle knowledge base, in answer to a player who asked for the raw math. Both entries now carry the verbatim expression, a term-by-term breakdown (half base, plus three-quarters from behind or against a knocked-down target, plus up to one-and-a-half from stealth with the stealth term capped at 1), and the peak of 2.75 times weapon melee damage a player can reproduce against a target dummy.
- Rehctelf, the spirit satyr in Lost Vale, was voiced by a soft female voice that did not match his horned male appearance. He has been recast onto the deep satyr voice the other satyrs use, so he sounds like the trickster he looks like once the next voice audio update publishes.
- Voice pass no longer speaks emote markers like *winks*, *grins*, *clears throat* or *deep sigh* when they sit inside an otherwise-spoken line. Real emphasis (a single asterisk-wrapped word such as *I* or *really*) is still spoken with stress; the dialogue box still shows the full text either way. Takes effect at the next voice regen. (#782)
- The Dragon Dungeon Entrance places on a lot again. It had been refusing every drop with "Nothing beneath this item to rest on" because its interact box was authored chest-high, so the support check never saw the ground. Requested by an in-game bug report from Wishdragon.
- The five obsidian bone armor pieces were all called Bone Helm, Bone Chest Armor, Bone Gauntlets, Bone Leggings and Bone Boots, the same names the ordinary bone armor uses, so no list could tell the two sets apart. They are now named Obsidian Bone Helm, Obsidian Bone Chest Armor, Obsidian Bone Gauntlets, Obsidian Bone Leggings and Obsidian Bone Boots.
- Crafting still contributes the material word once. A crafted obsidian bone helm reads "Obsidian Bone Helm", and an enchanted one keeps its enchantment name after that, for example "Obsidian Bone Helm of Lunaism". Ordinary bone armor is unchanged and still reads "Iron Bone Helm" when made from iron enforced bone plates.
- Waterfall crest froth at the Paladis Shardfall confluence was moved back onto the flat river just before each lip, made deeper front to back, more opaque, and pulled in further from the bank stones. This hides the seam between river and falling water from oblique angles as well as from directly overhead, after tester feedback on the last pass. The spray at the foot of each fall is unchanged.
Tester
- Added a Tester Handbook. Type /guide in game (or press Open Tester Guide on the /tester window) for a ten-section guide: getting set up, every tester tool, how to claim and verify tasks, how to write reports that count, leaderboard credit, and ground rules. The loop section draws a chart of how a report travels from your hands to a fix and back; clicking a box jumps to the section that explains it. Verify task #5078.
- The handbook is on the web too: a Tester Handbook card on the tester hub opens /tester/guide/, and the browser companion pages grew a Guide page. All three surfaces are generated from one authored source, and a test fails the build if the committed web copy drifts from the in-game text. The hub also gained a card for the UI Window Gallery, which was live but unlisted.
- Tester status is now tracked in one durable list instead of living only in the systems that read it. Web access to the tester pages and the in-game tester tools are recorded as two separate permissions, because they have never been the same set of people, and a new audit command reports any disagreement between the list and the two systems. It also reports the case where two logins point at the same game account, which nothing else would have surfaced, and found one such pair.
Dev Tools
- Fixed the pre-commit check that compiles the client the way a player build does: when another session had files with a byte order mark open, the check read them through the wrong text encoding and refused commits that were fine.
UI
- The Light Settings window now closes the moment you step off your lot, at any lot size, instead of after a fixed 80 metre radius that could carry it two Village lots away. The outline around the selected colour swatch has a black inner edge plus a bright outer edge so it reads on the white and off-white swatches too, and the row of preset colours now sits well clear of the current-colour swatch and the Custom button under it.
- Guild Wars window: dragging a column divider inward no longer shrinks a heading to "Yo..." or "Sco...", and can no longer push Time Remaining off the right edge. Each column keeps room for its own heading the way the whole window already does.
- The bank windows "Show Objects in Containers" checkbox now works: with it ticked, every item packed inside a banked bag appears as its own row; with it unticked, the list shows only the bags and any loose items. Backpack search now obeys the same checkbox: unticked, the search stays out of bags, and ticked, it reaches inside them.
- The achievements journal filed the mining, foraging, forestry, field dressing, and farming recipe rows under Crafting. They live where the game already sorts them now: mining, foraging, forestry, and field dressing under Gathering, farming under Agriculture beside the other seed and harvest rows.
- Fixed a Dungeon Builder Cancel that stopped reverting a placement once you ticked the "Fits this doorway" filter. Preview now clears on Cancel every time; Accept was fine.
- Character Sheet Stats tab now lists a Total Resistances section beneath Resistances, summing each schools attunement, resistance, and universal magic attunement (plus magic resistance for every school except Chaos). Rows only appear for schools the character has invested in.
- Public vendors: saying
vendoropens the buy window and closes the conversation, and the last chat line stays with its keyword words clickable. A click on one of those words no longer reopens the conversation on top of the buy window that is already up. Close the buy window and the click works again. - Grandmaster shield now draws on the nameplate every time. It used to sometimes leave just the count next to the name when the icon atlas had not registered yet; the shield loads its own copy of the art and no longer waits on the atlas.
- The option that flattens or nests the contents of bags and chests inside your backpack now shows up in the Interface tab of the game Options window, alongside Show Inventory Tooltips. The toggle that always lived in the backpack window`s own folded Options panel is still there and stays in sync with it. Off collapses containers to a single row; on lists their contents inline. Requested by Mondravis.
- The compass bezel now fills more of the bracket interior, so on bright scenes the tick marks and cardinal letters sit on a fuller dark background rather than a thin strip inside the frame. The ribbon and letters themselves are unchanged in size and position.
- NPC conversation windows now dim both the button plate and the caption for a topic you have already asked about, matching how disabled controls read elsewhere. The old chaos look only darkened the text and was easy to miss.
- Interface tab of Settings now has a Disable Gathering Mini-Game checkbox. Turn it on and the harvest swing meter is skipped; nodes gather on the plain timer the game used before the mini-game shipped. Off by default and per player.
- The Salvageable category is back on the crafting tables Your Inventory dropdown, alphabetical between Recipe and Tool, so a quick sweep for broken gear or excess tools finds them in one click. The backpack picks up the same option as a category tab.
- Ambient audio gets its own volume slider on the Audio tab. Dripping water, weather and world ambience were following the SFX slider, so quieting a dungeon meant quieting combat too. The two now move independently.
- The gathering mini-game around your reticle now carries a dark outline behind its ring, its coloured zones, its marker, and its callout text, so it stays readable over bright sky, snow, sand, or foliage that used to wash it out (#3818).
- The keyboard focus ring finally draws. Press Tab or an arrow key in a window and a gold ring appears around the control that has focus; click with the mouse and it goes away. The ring gate was in place already, but the underlying style rule was written with a property UI Toolkit does not have and never drew; the ring is now painted from code by an overlay that costs no layout.
- Fixed a bug where clicking the Bard tree at a basic skill trainer jumped the window to the Air tree. The tree you click is the tree you see now, whether or not the trainer teaches it, and a school the trainer does not teach still shows its name while selected so it is clear which tree is on screen.
- Skills window: the small icon that cycles a skill between Learning, Maintaining, Not Learning and Unlearning has a much larger clickable area around it now. The picture is unchanged, but a click anywhere in the shoulder above the crest cycles the pip, so a slightly-off click no longer does nothing (#3698).
- A pin on the chat window now sticks after a patch, not only after a clean quit. The earlier round wrote the setting to memory but nothing forced it to disk before the launcher shut the game down.
- Alt-click and Alt-interact now pick up placed decorations you have permission to remove, matching what the shortcut already did for ground drops. Plain E still opens a book for reading; a placement on a plot you have no permission on stays untouched.
Client
- Paying to create a catchphrase no longer fails on every attempt (#5025); the escrow bag now accepts the cotos it was written to hold.
- Added an Options toggle, Use Mouse To Move In Combat, that lets holding both mouse buttons walk you forward even with a weapon drawn and Auto-Attack off. Requested by Wishdragon.
- Removed a second flat shape at the bottom of the falls in Paladis Shardfall and every other fresh, brackish, and salt water body. It was an editor-only water-surface marker plane that was meant to render invisibly but now shows on the shipped client; disabled its renderer on the three water trigger prefabs. Water tint, waterfall streams, splashes, fishing, and walk-in triggers are unchanged.
- Right-click camera drag: the cursor now returns on the next frame if a rare race left it hidden past the end of a turn. First pass on the same bug removed most of these; this catches the rest before the safety net has to.
- The cat decoration pet sounds now travel with the animated body on placements where the earlier fix missed. The bone search falls back one level up to the deco proxy when the skeleton sits as a sibling of the pet AI wrapper instead of a descendant of it.
- Tree sway now follows the wind reading on the compass. A Calm reading looks calm, a Heavy reading looks heavy; storm hours no longer push the trees harder than the label describes. Windmill blades, cloud drift and tree sway all read from the same per-scene wind source.
- Pasted web links in chat are now clickable. Type or paste an
http://orhttps://URL and it renders as a link, highlights on hover, and opens in your browser. Item and coordinate links keep working as before; trailing punctuation stays out of the URL. (#5137) - Split the 8,211-line NPCController script into thirteen partial files by region so future edits touch smaller pieces. No change to how any NPC behaves.
- Split the AI awareness script into twenty smaller files by behavior region so future work on detection, combat and social logic touches a single file instead of a six-thousand-line one. No behavior change; the same class, laid out across the same regions in the same order.
- Rising chimney smoke now leans and streams with the current scene wind instead of going straight up. The plume reads the same wind heading and strength as the windmill blades and pennants in the same scene, so they all point the same way.
- The new chat command
/treexpprints the total skill levels and total experience you have invested in every skill tree at once, so planning progression no longer needs a click through each sigil in the skills window. - Fences and pavers align flush again — placing a fence right up against the edge of a Large Bone White Marble Paver stopped bouncing with "Something is already in the way," where the two colliders had been overlapping by a few millimeters at the seam.
- PersistenceService network storage refactor: first pass splits the 8,848-line file, moving 40 transaction-state struct definitions into a partial companion file. No behavior change.
- Started breaking up the client-side player controller, the largest single script in the game, into smaller files by topic. First pass moves the instrument playback, catchphrase broadcast, developer command helpers, and the identifier property into their own files. No player-visible change; the rest of the split will follow in later passes.
- Fixed a lever in Castle Atos that could not animate. The gate lever marked for use in the event of an invasion was set up to slide rather than turn, with nowhere to slide to, so its handle froze in place and the client logged an error on every frame the animation was meant to run. It turns like the two levers beside it now, and the moving-object script no longer reads past the end of its own target lists.
- A queued taming collar update no longer throws an error once a frame when the collar has left the bag it was queued against. The update is dropped and the collar re-locks on the next frame, with the lost keys named in the log.
Images
- Images: the Tester Guide window's bug-loop chart, and the same handbook on the tester hub.
- Images: a recorded session showing the tester buff tag.
Client
- Closing the game no longer leaves the window sitting there after the logout countdown ends. Measuring the exit showed the client's own shutdown work finishing in 1.4 seconds, followed by roughly 20 seconds of engine teardown that a quitting process has no use for. The game now ends once its own cleanup is done, so the window closes about a second after the countdown instead of twenty.
- Removed the in-game Discord chat relay. It let a player log in with Discord credentials and mirror channel messages into the game chat log, and it has not worked for years: its compile flag was set in no build, the library it needed was not in the project, and the interface that drove it went in the July chat rework. Gone with it are the Discord chat channel, its colours, its saved tab settings and four leftover objects on the chat tab.
Server
- Dropped the AuthServer "unstamped client" line from a warning to an info entry. It was the single loudest warning in the daily log triage and turned out to be an automation fingerprint every time (bot roster fireworks loop, roughly 170 hits a day on the shard) rather than a real launcher, so the gate policy did not change.
- Save-fenced the flushes that a wedged room would otherwise fire minutes late against a character who has already logged back in. If a newer session now owns the character, the old room drops the write instead of stomping the new sessions progress.
- Audited the server-side of the transport peer for the socket-stop-on-disconnect gap that hung the built client on exit. The server shape is different: one listener socket serves every peer on a port, so per-peer disconnect correctly closes the connection only, and process shutdown owns the socket teardown. Recorded the finding in the code so the next audit does not have to run it again, and tightened the host stop to null out the outbound manager and clear its bound-port list so a stop-then-start on the same host rebuilds cleanly.
- Hardened the server against oversize player-supplied blobs. The hotbar, combat decks, appearance, unlocked emotes and titles, and per-account tracked-stat entries now refuse over-limit values before they land in the database, so a malformed submission from a modified client is rejected instead of jamming that account.
- Answered a forum question about scenes going stale on repeat visits. The server has no code that reduces drop rates, skill success chance, or crit chance based on how often a player has recently visited a scene.
- Lot tax payments now guard against integer overflow when totaling the gold from the player and the credit account, and when adding new days paid onto a deed. Out-of-range totals bounce with a clear rejection instead of wrapping around.
- DbTool internal refactor: split the 6,152-line Program.cs into partial files by report so future edits touch smaller pieces. No change to what any operation does.
- Added a last-line size cap to five of the highest-risk saves on the server (plots, knowledge flags per character and per account, party storage, and an inventory), so a poisoned save is refused before it can jam the record.
- Triaged the remaining audit backlog into six follow-up tasks on the tracker, so the outstanding server input-validation work has a single map to work from.
- Added byte-length caps on guild names and character names before they land in a database key, a missing-fields check on player-to-player mail before it lands in a mailbox, and a range check on interactive-object revision numbers.
- Mail subject size now counts UTF-8 bytes against the intended byte budget instead of characters, so a subject full of multi-byte letters can no longer sneak past the length check. Two racing character creations of the same name now settle before the write hits the database, and a range of storage collisions now surface as a specific error rather than a raw driver message.
- Tightened five server input checks on player-supplied dictionary keys and identifiers so a malformed request now bounces at the handler with a clear error instead of crashing the operation or leaving a stuck record on the character.
- Tightened numeric bounds on player-vendor listings, mail gold, taxes and stored experience so a bad number from a client can no longer slip through to the database and roll over on later arithmetic.
- Character creation now tells you the name is taken only when it really is; other write failures come back as an internal server error and the log carries the actual cause instead of a generic message.
- Every lot interaction log now trims itself on write, so a busy plot can no longer bloat that record until it stops loading.
- Split the scene server plot and deed manager, a 6,400-line file, into nine smaller partial-class files organised by theme. Same code, easier to navigate.
- GameImpl.cs split into partials. The game-server domain-logic class went from one 17,591-line file into a 630-line core plus 32 partial files split by region (deeds, bag, loot, agriculture, crafting, character sheet, bank, admin, merchant, mail, achievements, and 21 more), with the client mirror kept byte-identical. No behavior change.
- A plot container whose lock is momentarily held by another operation now answers "busy, try again" instead of an internal error, and the log stops claiming the container belongs to a character id that means nobody. A plot pointing at a magazine that was detached on purpose, from a stored house or a sale in flight, now clears the stale reference rather than throwing out of the plot load.
Balance
- Combat metrics stopped recording the moment a tester buff was running, so the players who log the most combat time contributed nothing to the balance data. Buffed sessions are now recorded and kept.
- A session page now tags a run whose damage came from buffed skill levels rather than the real character sheet, so the numbers can be read for what they are. The tag stays for the rest of the session once it appears, and the tag also reaches the CSV export. Changing a combat value from the tweaks panel still pauses recording, because that moves the numbers the data is measured against.
Login server & accounts
- Prepared the account admin page for a full-size account database: the list is now paged with a search box instead of rendering every account at once, the game-access column is computed in one query per page, and creating a name that already exists stops with a clear message instead of quietly editing the existing account.
- Built the restore tooling that loads a full production account-database snapshot onto the test shard: a streamed import with the right exclusions, the reward-delivery ledger kept intact, a backup of the current state taken first, and an automated pass/fail verification at the end so a bad restore cannot go unnoticed.
- Wrote the reconciliation tool that carries the existing test accounts across the account-data refresh: accounts whose names are not in the production data are rebuilt exactly as they were, password included, while names that do exist keep the real account and only get their test permissions layered back on. Ambiguous name collisions are held for a human decision rather than guessed at.
- The test shard's health monitoring now also watches sign-in activity and raises an alert on unusual failure patterns, with an all-clear notice when things settle. The routine security posture checks grew matching assertions so a future config change cannot quietly weaken the login path.
- Wrote the plan of record for moving the test shard onto real account data, and a companion operations page covering where the login service runs, how it is monitored and backed up, and the longer-term design: a dedicated login host with continuous database replication, a documented failover procedure with honest recovery numbers, and quarterly restore drills.
- Checking the account-data import against the real snapshot instead of an assumed format caught two faults before it ever ran. The snapshot writes each insert's header on one line and its rows on the lines after, so the filter that was meant to leave two bulk log tables out removed only their headers and would have failed the import partway through, and a row whose text happened to contain the words "foreign key" could have been dropped as though it were part of the table definition. The import now makes a single pass that understands statement boundaries and never edits row data, with a self-test covering both cases.
- Reward deliveries depend on the account database and the game database being refreshed in the right order: the game side remembers how far each account's reward list has been delivered, so an account database older than the game data would mint new reward entries below that point and never hand them over. The restore now measures both sides after loading and refuses to pass when they are the wrong way round, instead of trusting the snapshot dates.
Chaos Shard
- Built the pipeline for refreshing the chaos shard database from a copy of live: a restore worker for the current server stack, a tool that carries tester and admin account flags across the wipe (45 tests), and data-migration tool fixes so every migration now runs directly on the chaos host.
- Wrote the whole refresh procedure up as a repeatable checklist covering preparation, backups, the restore window, migrations, and verification, and brought the operations runbook current with everything learned since the July refresh.
- Replaced the chaos shard game database with a fresh copy of live data: 8,825,503 records restored and brought forward through five data migrations, then verified end to end with a clean login test and a full security pass. Tester accounts and access carried over; characters made on chaos were wiped by the restore, as announced beforehand.
- The first restore attempt ran while old server processes were still quietly alive, which corrupted one record and failed an index build. The pipeline now refuses to restore until every server process is confirmed dead, builds indexes from current code instead of the dump, and carries a duplicate-record guard. Every guard came from a real failure during the run.
- Prepared the shard load-test fleet for its first ladder runs: fixed the bot build, published it to the load-generator box, and validated the whole path end to end with a small live run against the freshly refreshed data. A 100-session hold passed its gates with zero unexpected disconnects and a clean error sweep.
UI
- Buttons across several windows drew as bare labels with a hairline through them. The shared button style they all asked for had no rule behind it, so they fell back to shrink-wrapping their text. Catchphrases, Mail, Books, Deco Layouts, the deco palette, the housing panel, the deck builder and the deco light window now all draw a real 30px button.
- The character sheet was hiding gold and weight behind a scrollbar. The armor set lines added last week made the list of numbers longer than the panel under the character render, and that panel had a fixed floor of about four lines. It now reserves room for every line the list can show, and the sheet opens taller. Reported by Alley Oop.
- The character sheet panel was not losing height by being small, it was losing a tug of war. The character render is drawn from a 1024 pixel tall texture, and the interface splits any shortage of space in proportion to how tall each part wants to be, so the numbers gave up about nine tenths of every missing pixel and dragging the window bigger barely helped. Two tests now measure the whole list on a real layout.
Catchphrases
- Creating a catchphrase could quote a price, take the confirmation, then answer that payment failed. The window counted cotos the purchase could not actually collect, including cotos sealed inside a locked bag. It now counts only what it can spend, so the balance line is the spendable balance and the refusal says why before you are asked to pay.
Interface
- A message that opens the chat window no longer raises it over the window you are working in. A whisper, a party line, a message from a GM and the message of the day still bring a faded or closed chat window back, but they now un-hide it where it was instead of covering your inventory or crafting window. Opening chat yourself, with Enter, a slash, or the window selector, still brings it to the front.
- Wall lamps and dungeon torches now answer the cursor over the whole lamp. One shape had the collider on the object root and the interactive part on a child below it, so hovering the mount plate or the outer edge handed the cursor nothing to target and clicking there did nothing. Requested on the tracker as #5029.
- Weapon comparison tooltips read your off hand by what you are hovering. A two-handed weapon now compares against both hands, shield or torch included, since equipping it clears both. A one-handed weapon compares weapon against weapon and leaves a non-weapon off-hand item out.
Inventory
- Ran down the "Some items could not be moved. Your inventory has been refreshed from the server." reports from Gravidy and Rinaldi. The message was wired to every kind of failed action, re-read the whole pack each time, and spoke even when nothing was actually wrong. It fired 117 times in twelve days on chaos. It now appears only when a failed move really left the window out of date.
- Consolidate All Stacks sent every stack group to the server at once, and the replies could cross wires. It now merges one group at a time, stops at the first refusal, and puts everything back if a merge cannot be sent.
- Dragging an item that is busy with another action, or the collar a tamed creature is summoned through, now shows a message saying why instead of dying mid-drag and refreshing the inventory.
- Moving a container full of bags between the bank and the pack sent all of its parts at once, and a later part could name a bag the server had already moved. The parts now go one at a time and follow the server's renumbering, so big container moves stop failing partway.
- Placing a container on a lot while a bag inside it still held items could half-apply on the server and come back as a bare error. The server now refuses it cleanly before anything changes, and the game says to empty the bags inside first.
- 43 new EditMode tests pin the failure rules: when items get marked, when the pack re-reads, and when the refresh message speaks.
Housing
- A saved deco layout refused at lot level, such as a sale listing or missing permission, no longer retries every item alone. Thirty identical failures became one.
Commerce
- Crown Store purchases paid in gold crowns no longer fail after the confirm dialog. The store counted crowns from an obsolete second coin type that the payment could never collect, then quoted a price it could not take, and the failed collection left a coin stack stranded until relog. The purchase now stops before moving anything when the crowns are short.
- The Crown Store category list can be widened by dragging the divider beside it, up to 420 pixels from the shipped 180, with the shelf keeping a usable minimum. The width is remembered per window until you drag it back to where it started.
World
- Windmill blades turn at the speed of the wind: still in calm air, full authored speed once the wind reaches the threshold, and anywhere in between on the way. Item previews hold wind-driven props still so a windmill in your bags does not spin from the weather outside. Requested as #537.