This page holds the current week; older weeks are linked at the bottom.
2026-08-04 · 95 items
Headlines
- Backed up the entire community wiki — 38,417 pages and 12,700 images, checksum-verified, after its host started failing.
- Experience attenuation is gone. High level characters no longer hit an hourly ceiling on combat experience, and no kill pays zero.
- Tamed pets stopped leash-looping: the tether changed the distance that starts a leash without changing the one that ends it, so pets set and cleared it on alternating ticks and dumped their fight on their handler every time.
- Pet Taunting Training pulls creatures onto the pet. Three separate things were stopping it: no threat move when the buff landed, a buff most pets did not read, and a distance falloff that bottomed out at the range pets fight from.
- The smoke bomb hides you. Obfuscate raised your stealth level but never faded you out, so you stood in plain view. It is now a camouflage that lands while you are targeted, and bleeds cannot strip the stealth you take underneath it.
- Interface lockups. Two faults that killed chat focus and every drag for a whole session are fixed, and a watchdog now catches the rest and switches input back on by itself.
- The map now shows every housing lot in town, coloured by whether you can claim it, each drawn as the lot's true boundary rectangle at its real size, rotation and facing.
- Bug queue pass. A new automated run works the open bug reports one at a time, from fix through testing task through close, and keeps going until the queue is empty.
- Guilds and Guild Wars Deep Dive published: twenty-five proposals open for votes and comments, headlined by war PvP scoped to your actual enemy, a guild vault, negotiated war terms, and each guild's own page on the web.
- Dragging several glyphs at once into a deck slot works: all of them land, the slot stays unlocked, and a stack dropped on a locked slot no longer eats the glyph it displaced.
- Player-Owned Towns Deep Dive published: twenty-four proposals open for votes and comments, headlined by a governor's console, an in-game town directory, a placeable town crier, and a donation board for the town square.
- A Player Dungeons deep dive joined the proposals series: 25 proposals to give player-built dungeons an audience, from clear-check publishing and entrance plaques with record times to a Delve Board directory and a prize chest staked with the owner's own gold
UI
- Made the health and focus bars on the new interface status plates thicker, 7 to 12 pixels, so the numbers on them sit inside the bar instead of poking out top and bottom.
- Lined the buff icons up with the left edge of the bars on the player, target, party, pet and companion plates. They sat 12 pixels to the right, an inset carried over from the old interface layout.
- Removed the colored outline that framed the target plate whenever a target was locked. Party, pet and companion rows keep theirs, which is what marks the row you have targeted.
- The deck edit window got the polish pass a tester asked for. Dropping several selected glyphs onto an empty slot used to lock in one and lose the rest from the deck; all of them now land in the slot and stay listed under In This Deck.
- The stack of glyphs above a deck slot is interactive again: drops aimed at the stack land in the slot instead of doing nothing, each glyph in the stack can be dragged out or right clicked on its own, and a slot shows eight or more glyphs by squeezing the stack instead of cutting it off at three.
- Dragging rows out of the game's list windows starts reliably now, even on a quick flick, and selecting several rows no longer loses the selection when the list refreshes.
- Raised the status plate bars again after an in-game look, 12 to 15 pixels, and centered the numbers on them. They sat low, nearly touching the bars bottom edge.
- Tucked the Options and Social window tab rows inside the window frame on the Bastion and Citadel themes. The row spanned the full window width and sat across the picture-frame border, so the end tabs looked like they hung off the dialog. Tabs also compress to fit a narrow window now instead of poking out of the frame.
- Replaced the deck editor slot lock, a small dark square, with the gold padlock the old interface drew: a bit larger, closed when the slot is locked, open when it is not. The grandmaster arrow on skill cards moved back to the upper right corner with its old art and dark outline, and the apprentice arrow sits upper left again, on deck cards and the hotbar alike.
- The per-window opacity control (right-click a title bar) now thins the panels, list wells and text boxes inside the window along with its frame. Before this it moved the outer plate only, so a window set to 15% showed a nearly invisible frame with full-strength panels on top of the world. Dropdown lists and tooltips are still left alone at every setting.
- The per-window opacity control (right-click a window title bar) now reports the opacity the window is actually drawn at. At the glassiest end of the slider it read out a lower number than the window can reach, because windows are held at a minimum visibility so one can never fade to where it is invisible but still takes clicks.
- Fixed compass quest markers that never appeared. The compass and the world map share the same marker code, and the map's rule that a marker needs a label had been applied to the compass too, so anything the compass wanted to point at before its name was known got dropped. The tutorial task to find Edvard the Wanderer in Battle of Solace Bridge now shows its marker from across the bridge.
- The "Show Player Health Bar" option in Options, Interface now works on its own. It used to follow the "Show Player Nameplate" setting, so with your own nameplate hidden the health bar never appeared, and turning it off left the focus bar behind. The two settings are now independent.
- Moved the pet status frame clear of your own: with a title, a guild line and a full row of buff icons showing, the pet's name and health bar were drawing on top of the player's buffs. The party list moved down with it, and a pet frame you had already dragged somewhere stays where you put it.
- Equipped items can be dragged out of the character sheet onto the backpack again. The drag was being rejected before it started, which left right-click and Unequip as the only way to take a piece off. The same drag was dead on the mannequin, doll cabinet, fish tank and crafting tool slots, and works on all of them now.
- Fixed the Air and Citadel interface themes drawing an empty button frame in place of small button art. The window close, pin and help buttons, the chat header buttons, the deck reorder arrows and the lot sign gear kept their own icons again, and interact menu rows went back to plain text rows with no frame behind them.
- Vendor listings in a zone show item tooltips on hover again, in the current zone and in the All Zones search, where a result opens with the basic details and fills in the rest a moment later.
- Fixed the two option boxes above the vendor listings table. All Zones and Buy Orders each drew their check box well to the right of its own words and close to the next option, so it was easy to tick the wrong one. Each box now sits directly in front of the words it belongs to, with a clear gap between the two options.
- Fixed vendor listings in a zone printing colour codes inside item names. A stack of five cotton read as "Cotton <color=#7F7F7F>(5)</color>"; the rows now show the plain name with the count and the "(Dyed)" and "(Empty)" tags coloured as intended.
- Added an Interface option, Close Loot Window When Emptied, that makes Take All close a loot window once nothing is left in it. It is off by default, it leaves the window open when some of the loot would not fit, and it never touches your own backpack, your bags or lot storage.
- Pointing at a harvest node from out of reach now shows the same "too far to use" cursor as any other object. It used to show the plain arrow, so a cotton bush, ore vein or tree looked like bare ground from a few steps back even though its name still appeared under the pointer. The tool picture still means you are close enough to harvest.
- On the login screen, Enter now logs you in without clicking into a box first. The form only listened for the key while the caret sat in the user name or password box, so pressing Enter after the screen came up, or after clicking elsewhere on the form, did nothing. A Cancel button reached with the Tab key still answers Enter itself.
Performance
- The faster loading is confirmed on the test shard rather than just in the editor. The fixed pause at the start of a load measured 0.42 seconds against 0.80 before, and the wait at the end of a load dropped from 2.4 seconds to 0.6 at the median. Both match what the change was expected to do. The sample is still small, so the figures will firm up over the next day.
Tooling
- The new load timings were arriving as text rather than numbers, which would have left them unchartable and the averages silently broken. Caught it on the first record from the new build, so exactly one was affected rather than a day of them.
Community
- Filed four items from the forum into the tracker: a multi-destination POT teleporter idea, distinct buff icons, an optional double-press-to-cast targeting option for placeable skills, and a bug report about time-machine devices in a Player Owned Town over-triggering the comet meteor shower.
- Took a complete local backup of the community wiki at sotawiki.net after its hosting turned unreliable this week. The archive holds all 38,417 pages across every namespace, the 12,700 uploaded images at full resolution, and a browsable copy that opens with no network connection, alongside a dump that could restore the whole wiki into a fresh install. Every page and every image was checked against the wiki’s own checksums. This is a backup and nothing more — the content belongs to the players who wrote it, and we are not republishing it.
- Put a second copy of the wiki archive on separate hardware, and checked all 38,417 pages and 12,700 images against the wiki’s own checksums again once they landed there. One copy on one drive is not a backup.
Client
- Starting the game with no scene name set, which is what an unsaved or scratch scene gives you, threw during startup instead of reporting the problem. That startup path caches its failure for the rest of the session, so every later call into it threw again, once per frame per caller. One editor session recorded 699,708 of those and left a 4.1 GB log file. Startup now falls back to an empty scene id and reports the missing name once.
- The offline character load ran its completion callback inside its own error handler, so an exception raised by that callback was caught by the same handler and the callback ran a second time reporting no character found. It now picks a result first and calls back exactly once.
- Health, Focus, Gold and Weight on the character sheet now explain themselves on hover. They were the only rows on the Character tab with no tooltip at all, while Str, Dex, Int, Resist and Avoid all had one. Health, focus and weight each list where the number came from: the base value, what Strength or Intelligence adds and at what rate, the Adventurer Level multiplier, and a line for anything else moving the total. In a scene that caps your level, the tooltip names the cap and your real level, which is the only account a player gets of their maximums dropping when they zone in.
- The max health, max focus and carry capacity formulas now hand back their own terms, and the game and the tooltip read the same result from one implementation. A tooltip carrying its own copy of the constants is what put a weapon damage range twice as wide as the game rolled in front of players for several releases. Twelve tests pin the explanation and the formula together, and pin that the printed terms add back up to the total.
- One point of interest changing used to refresh every marker on the map, which was fine for a scene with a dozen and expensive for a town with hundreds of lots. Each marker now refreshes only itself, and lot names are cached instead of being rebuilt every time.
- Fixed a meteor storm in towns that hold more than one time or weather device. A device that forces the time of day could leave the sky clock flipping between two hours, and the meteor timer read that as a fresh moment on every frame, so streaks crossed the sky several times a second. The timer now holds a real gap between meteors whatever the clock does. Covered by five new editor tests.
- Cat mounts (lion, black panther, jaguar, snow leopard) rode in silence because their mounted animations carried no footstep events. Added the missing steps so they now sound at walk, jog and run speed, and change with the ground surface like every other mount.
- Fixed a saved decoration layout going missing after it was put in a container. A layout recorded from a very heavily decorated lot was written but never came back down to the client, so it was in the container and in no list the player could see. Recording now refuses up front when a lot holds more decorations than one layout document can carry, and layouts already saved that way show up in their container again, with their title and decoration count.
- Fixed the Dash skill playing its cast sound twice at once, which made it about twice as loud as every other skill. It now plays once, at the same level as other casts.
- Fixed harvesting with a worn tool: pointing at an ore vein, tree, cotton bush or garlic plant from a distance no longer left the pointer stuck and the node unclickable once your pickaxe, sickle or harvest axe dropped below full condition. Skinning with a worn skinning knife was affected the same way.
- NPC voice-over no longer speaks a different word than the line on screen. Spoken lines are recorded ahead of time and cannot say a player name, so a greeting written as "Well met, <name>." was read aloud as "Well met, outlander". Lines that show your character name are now left unspoken; the far more common lines that address you by the NPC's general term still play.
- Steepened the distance fade on NPC voices. A voice now drops off clearly as you walk away instead of holding near full volume most of the way out, and still goes silent at the same range.
Rendering
- Fixed an editor-side shader error on the world-space nameplate material. The shader was copied from the stock TextMesh Pro distance field shader and kept include paths that only resolve for shaders stored alongside TextMesh Pro's own files, so it failed to compile whenever the editor imported it. Player builds were unaffected.
Interface
- A tester asked whether the three window opacity sliders work independently of each other. They do not. The theme's own solidity, the Window Opacity slider in Options and the per window slider on a title bar all multiply together, so a window set to 100 percent could still look glassy because the Options slider sat at 60. All three controls were also called Opacity, and the per window popup used the same title text as the Options row. The Theme Editor's is now Surface Opacity, the popup is This Window Only and reports what the window actually ends up at, and the tip under the Options slider says the two multiply.
- The per window opacity slider stopped at 100 percent while the global one reached 120, so a single window could only be made more see-through than the rest and never more solid. It now matches at 120. At the other end the two sliders combined could drive a window to 1.5 percent solidity on the Air theme, invisible but still catching clicks with no title bar left to right-click, so the composed value now floors at 5 percent. The popup also previewed by writing to disk on every frame of a drag, and now commits when you let go.
- Found the cause of the Theme Editor throwing settings back to an earlier state whenever you clicked anything. The colour boxes on the Simple tab saved their contents on every loss of keyboard focus rather than only on Enter, and edits made on the Advanced tab never refreshed those boxes. So one click after an Advanced edit wrote the stale colour back over the new one. Boxes now save only when they have been typed into, and every Advanced edit and tab switch refreshes the Simple side.
- The attenuated experience icon and its tooltip are gone from the Skills window along with the system behind them.
- Two faults could leave the whole interface dead for the rest of a session while the world, the camera and the keyboard kept working. Chat would not take focus so you could not type, and nothing would drag out of inventory, containers or the deck lists. The only way out was to restart the client.
- The first was dragging an item or a glyph out of one of the rebuilt list windows. The drag-start code still wrote to a piece of per-event state that only exists when the click comes through the old UI layer, so a drag that started in a rebuilt window threw every time and took the whole window layer down with it. Eight of these turned up across six player sessions and four builds in a 36 hour window of logs.
- The second was dropping an item back onto the row it came from. Picking an item up takes it out of the container, so that row is already out of date, and dropping there raised an error that ended the drag system for the rest of the session. Both cases now put the item back where it was.
- Hardened five more places where a single error could switch the interface off and leave it off: the old UI layer's recursion guard, the stuck-cursor recovery, the modal input gate, the shared event system check, and the cooperative task loop. Any one of them could turn a one-off error into a session-long lockup.
- Added a UI input watchdog. It samples the state that decides whether the interface can receive input at all, twice a second, and when it finds input switched off with nothing holding it that way it switches it back on and writes one line to the logs. Reticle mode, a held right mouse button, an open dialog and HUD-less mode all switch input off on purpose, so each one has a test proving the watchdog leaves it alone. 33 tests in all.
Balance
- Removed experience attenuation. Characters above adventurer level 110 used to have their combat experience shrink once they had earned 15 million in the past hour, and a kill paid nothing at all past 30 million. Every kill now pays its full amount no matter how long the session runs.
Taming
- Tamed pets stopped leash-looping. The Pet Range tether changed the distance that starts a leash without changing the one that ends it, so a pet set and cleared its leash on alternating ticks forever, dumping whatever it was fighting onto its handler two or three times a second. The two distances are now derived from one number and the release always lands inside the tether, pinned by test across the whole skill curve and all three follow bands.
- Pet Taunting Training pulls creatures onto the pet. There was a hook for the buff ending and none for it starting, so nothing ever pointed a creature at the pet, and a buff that scales future threat cannot out-earn a target that has been collecting attention for the last thirty seconds. Casting it now matches the handler threat the pet has to beat and commits the switch on the same tick.
- Two more reasons the taunt read as doing nothing. The buff raised a value that nine of the ten pet basic attacks did not read, so it multiplied nothing for a bear, wolf or boar simply swinging at something. And the distance falloff on pet threat hit its floor at exactly the range a pet fights from, cutting every pet in every ordinary fight to a tenth of its threat.
- Pet tether numbers loosened on top of the fix: 5m untrained, 8m at Pet Range 80, 12m at 150, up from 2m, 5m and 10m. Two meters put the pet inside its handler. Pet Range also moved up a tier, from behind Combat Training to a sibling of the other pet trainings under Summon Tamed Creature. Price unchanged.
Subterfuge
- The smoke bomb hides you now. Obfuscate raised your stealth level, which stopped others selecting you and shrank how far creatures could notice you, but the fade and the per-observer visibility check both hung off the real stealth effect, so your character stood there in plain view. It cannot be a real stealth effect either: that path refuses to apply while somebody has you targeted, which is the only time you would throw a smoke bomb.
- Split the stealth effect in two. The concealment half (the dissolve, the fade, the per-observer visibility channel) moved to a shared base, and stealth kept what it always was, the list of things that break it. Camouflage is the same concealment with none of them, so the smoke lands while you are targeted and being hit, and only its own timer ends it.
- Bleeds no longer strip the stealth you take inside your own smoke. While the smoke holds, a poison or bleed tick and a fresh target acquisition both stop breaking stealth, so you get a window to clear the damage and reposition. Narrow on purpose: a direct hit still gives you away, and a bleed still breaks a stealth taken anywhere else. The window runs 2 seconds untrained, 3.5 at Subterfuge Specialization 80 and 5.75 at 200.
Housing
- The map you open with M now shows every housing lot in the town you are standing in. Green means nobody owns it and you could claim it, amber means it is empty but locked to you, grey means someone else owns it, and a lot you own stays the blue it always was.
- Lot markers are sized by tier, so a City lot draws larger than a Row lot and you can pick the size you want out of a crowded street. Hovering one names the tier and either its availability or its owner.
- The map's "..." menu switches lot markers between all lots, only the ones available to you, and off. A lot you own and a lot you have set as a compass destination stay on the map in every setting.
- Player owned towns took the most work here, because a lot in one is a decoration the town owner places at runtime. Markers now appear and disappear as the owner adds and removes lots, without you reloading the area, and a lot on the far side of a town reads its real owner instead of showing as available while its data is still arriving.
- The map's housing lot markers changed from tier-sized house icons to the lot's actual boundary: a rectangle at the lot's real size and rotation, drawn with the same green overlay a town owner sees when placing a lot, tinted by the same claim-state colours. The overlay's arrows sit on the lot's front edge, so the map also shows which way each lot faces.
- A Row lot now reads as a narrow strip and a Castle as a large field, in true proportion, and the rectangles rotate with angled lots and scale with map zoom. Tooltips answer anywhere inside a lot's rectangle, and the lot filter menu carries over unchanged.
Tools
- Added an unattended pass over the open bug queue. It takes the newest report, works out a fix, tests it, commits it, files a testing task and closes the report, then moves to the next one and keeps going until the queue is empty.
- Fixed a fault in the unattended bug-queue runner that made it quit on the first bug it picked up: the claim step reported success but the runner read a leftover status value and treated it as a failure. It now reports its result explicitly, and the runner starts a fresh read each time.
- The unattended bug runner allows one instance at a time, and it judged that by how recently the lock file had been touched. A run that was killed rather than stopped cleanly left its lock behind, so the next start refused for two hours over a process that had already exited. It now asks whether the recorded process is actually alive, and reports a stale lock as stale.
- Fixed the in-game Oracle answering "the knowledge base doesn't contain that" to every question. When its reference library failed to load, the Oracle could not tell that apart from a genuine gap in the docs, so it denied every question with no sign anything was wrong. It now says its library is temporarily unreachable and offers to take a report instead, the service health check reports whether the library can actually answer, and an update that leaves it unable to answer is refused.
Content
- Town criers were greeting players with the wrong place name. The greeting is baked ahead of time, and it was keyed to the folder a conversation lives in rather than the town the crier actually stands in, so the generic crier used by around 426 player towns had one greeting that fit none of them and played silent. The zone now comes from where the crier is placed, and a line that names the town is baked once per town.
- When a town crier or guard lists the free lots in an area, that sentence is composed at runtime, which meant it could never match a pre-recorded line. It now sits on its own segment so the text around it keeps its audio and the sentence can carry its own. No audio has been generated yet.
- Rewrote the New Player Handbook's help chapter. It pointed at a help site that no longer exists and treated a player-run wiki page as the place to go for new player help, so a player who arrived while that site was down read a blank page. The chapter now sends players to in-game chat and the official Discord first, and says plainly that the community wiki is run by players and is sometimes unavailable.
Combat
- Fixed a dead safety check in the skill experience spend math: the overflow guard around the experience multiply could never actually run, so a runaway value would have wrapped around instead of being capped. The multiply now trips the guard, and new tests cover both the extreme case and an ordinary skill.
- Fixed 64-bit math in the retired skill decay path, where a pooled experience balance above roughly 2.1 billion could wrap and take far more skill experience than the pool was meant to cover. Decay is still switched off, so nothing changes in game today; added tests so the arithmetic holds if decay ever comes back.
- A Chaotic Clone now puts its weapon away and takes it back out whenever the player who cast it does, and a stowed weapon is no longer drawn on the clone. The state is worked out on every player's screen instead of only the caster's, so an onlooker sees the clone match the caster's stance and weapon. The clone still changes over without playing the draw or put-away motion; that half needs an animation change.
Guilds
- Published a guilds and guild wars improvement plan: twenty-five proposals, from surfacing what the servers already know (join dates, an activity log you can read in game, scheduled war starts) to a guild vault with per-rank withdrawal caps, a guild finder with applications, alliances, negotiated war terms with counter-offers, war PvP scoped to your actual enemy instead of the whole world, persistent war history with craftable victory plaques, mercenary enlistment, guild PvE hunts, a quarterly ladder, and a bridge to each guild's own page on the web. The illustrated version is public at catnipgames.net/blog/proposals/guilds/ with a comment thread and vote arrows on every proposal.
Images
- The three composed surfaces from the guilds proposal, as mockups: the Guild Ledger, the War Council, and a guild's page on the web:
- Two composed surfaces from the towns proposal, as mockups: the Town Console and the Town Directory:
- Two composed surfaces from the player dungeons proposal, as mockups: the upgraded Dungeon Entrance window with its plaque and owner ledger, and the Delve Board directory:
Developer Portal
- Added a Resource Atlas card to the developer portal landing page, so the public per-zone resource map is reachable from the portal instead of only by typing the URL.
Deck Building
- Dragging several glyphs at once into a deck slot now puts all of them in the slot and leaves it unlocked. Only the first glyph of a selection was landing, and the slot locked itself around that one glyph.
- A multiple selection dragged from the Glyphs list into In This Deck now adds every glyph in it rather than one at a time. Dropping a multiple selection on a locked slot does nothing now; before it swapped the locked glyph out and the displaced one was lost.
- The deck slot padlock moved back under the slot at the size the live game draws it, 12 pixels instead of 18, off the card art it had been sitting on since the window was ported.
- Slots holding two or more glyphs now carry a small arrow button that opens a list of every glyph in the slot, with name and school, each row hoverable, right-clickable and draggable. In a 13-glyph stack the last glyph showed about 0.7 pixels of itself, and the 16th shrank to nothing at all; the stack also stops shrinking its tail away now.
Website
- Added a Resources link to the work log header, on the current week and every archived week page, pointing at the public per-zone resource map at /resources/.
Tester Tools
- The tester panel's Set ALL Skills button is now Buff ALL Skills: a level field and an hours field (4 by default), and for that long every skill reads as the level you typed. It lapses on its own and your real character sheet is exactly where it was, so a tester can jump into high-level content and then go back to testing progression on the same character.
- The old button spent the experience pool, so a fresh tester character had to grant experience first and skills still stopped short of the level they asked for. The buff has neither limit: it works on a brand new character, always reaches the level typed, and costs nothing. The single-skill Set Skill is unchanged for anyone who wants a permanent change.
- The buff survives changing scenes and logging out, and it never writes to the character sheet: the levels live in a read-only layer the save path cannot see, so nothing about it reaches the server. Zone skill caps still apply to it exactly as they do to a genuinely trained skill.
Towns
- Published a player-owned towns improvement plan: twenty-four proposals, from a message of the day with a real editor and an arrival welcome to a governor's console that runs the whole town from one window, an in-game town directory sorted by who is actually home, a placeable town crier who speaks the town's message aloud, named townsfolk, district signposts, multi-destination town teleporters, town banners and citizen titles, lot applications, a donation board that upgrades the town square and never downgrades it, market row vendor stalls, and shipping the five finished bespoke town maps that currently ship to nobody. The illustrated version is public at catnipgames.net/blog/proposals/towns/ with a comment thread and vote arrows on every proposal.
Dungeons
- Published a player dungeons improvement plan: twenty-five proposals, from a doorway that finally says why a piece will not place, to publishing a dungeon by clearing it yourself, an entrance plaque that remembers first clears and record times, a live map of your own halls, pressure plates and dart walls, new creature families, blueprints on booksellers, and a prize chest the owner stakes with their own gold that the first clean run claims. Every proposal has its own comment thread and vote arrows: the full write-up.
2026-08-03 · 100 items
Headlines
- A two-second escape skill turned out to be the biggest melee opener in the Subterfuge tree. Sneak Attack read the hidden-ness stat as an unbounded damage multiplier, and stealth effects stack, so layering a smoke bomb on top of Camouflage nearly doubled the hit. The term is now capped at fully hidden.
- The Cave Wrasse fights like a wrasse instead of a crocodile: its own bite, a cinder spit and a sulfur roar, built on three attack IDs that had been reserved for it and left unused since 2015. It also ambushes now, crouching without a nameplate until it springs.
- The launcher can keep a copy of a build and run it later. Players asked for it, and there was no way back to an old build before now.
- Skill decay is retired. Dying no longer takes experience off any skill, at any level, in any scene.
- Zone loads after the first are about 2.4 seconds faster. Most of what was left in a 10 second load turned out to be fixed waiting, not loading.
- Pet Range was in the taming tree but no trainer taught it, so every tamer in the game has been stuck at a two metre pet tether. Trainers offer it now.
- Four of the game's best-known artifacts finally count as artifacts in your inventory: the Scepter of Dread, the Heart of Sorrows, the Bonesteel Crown and the Shroud of the Avatar.
- A public Resource Atlas went up at catnipgames.net/resources/: every harvestable node in the game, mapped per zone, with the zone tier and a lookup for which zones carry a given resource.
- The 50% experience loss on unlearning a skill is gone. Every school now returns everything you drain, and the time it takes is the only cost of changing your build.
- The Skills window shows its numbers. Experience in a skill, what the next level costs, what unlearning gives back, and a school total: all of it was computed on your client and printed nowhere, so players were buying unlearn scrolls just to read a figure off the confirmation box.
- Buffs no longer wear off when you switch scenes. A bug reported since 2020: buff time was recalculated from your attunement during loading, when buffs and gear are not counted yet, and anything judged expired was deleted. Duration is now locked in when the buff is cast.
- The encumbrance warning is readable now: the yellow and red marks draw large, bold and centered on the icon, and the icon no longer loses its picture when you log in light and get heavy later.
Community
- Filed 10 tracker entries from the nightly forum sweep: nine wishlist ideas (skill reworks, Lua localization APIs, NPC dialogue/faction depth, character customization, quest-item QoL) and one quest-flow bug the team already flagged in a forum reply.
- Added a card to the SQUIRREL! page on why untraining no longer destroys experience, including the part where the only way around the loss was to buy the item that skipped it.
Build
- Fixed the Mac update channel being left behind by the nightly release. The Mac launcher shipped on July 30 but the release pipeline still only published Windows and Linux, so Mac stayed on build 76 while the shard moved to 87 and Mac players could not log in. Build 87 is now published for Mac and every release carries all three platforms.
- When the Mac build agent is offline at release time, the release now ships Windows and Linux as usual but flags itself so the missing Mac update gets noticed and re-run instead of sitting stale.
- The Mac build machine dropped off the build farm on the 2nd and stayed off. The disk image that holds its build tree lost contact with the drive underneath it, which unmounted the volume but left the image loaded, so every attempt to reconnect the machine failed at that same step. Reattaching the image brought it back, and the build tree came through intact.
- Rewrote the Mac machine startup step so it recovers from that fault on its own: it clears a stuck image before reattaching, and does nothing when the build tree is already mounted. Tested by unmounting the volume and reconnecting the machine, which came back up without anyone touching it.
- Corrected the Mac build notes while checking that machine over. They still said Mac builds had to skip the pre-build refresh because the machine kept no local copy of the large game files. It has held a full copy for a while now, and the nightly release has been refreshing normally the whole time.
Combat
- Capped the stealth term in Sneak Attack's damage formula. It was the only place in the game that read the hidden-ness stat as an unbounded multiplier, and that stat routinely goes past its intended maximum because stealth effects add together. A fully specialized Camouflage opener from behind drops from 312.5 to 275 damage at 100 melee damage, and the same opener with Obfuscate layered on top drops from 462.5 to 275. An unhidden Sneak Attack is unchanged.
- Fixed timed buffs wearing off on scene changes and relogs, reported on the old forums as far back as 2020 (Strength of Earth was the usual victim). The saved buff record kept only a start time, and the loader recalculated total duration from current attunement, which dips while a scene loads because other buffs are not reapplied yet. Long buffs came back judged expired and were deleted. The duration resolved at cast time is now saved with the buff and reused on load.
- The same fix covers potion buffs, whose elixir extension bonus was re-read from current gear on load, and the buff icons other players see on you, which could vanish the same way. Multi-tick heals and damage-over-time keep their tick rhythm across the load, and pre-fix saves fall back to the old behavior until they expire.
Infrastructure
- Fixed the client frame-rate dashboard, where most panels had been showing "Could not locate that index-pattern-field" instead of charts. The telemetry was arriving fine the whole time; the log viewer caches each index pattern's field list inside its saved object, and that cache was written three days before the newer frame-timing fields started flowing, so every panel built on them failed to resolve.
- Added a script that rebuilds those field caches for all four log index patterns, and wired it into the provisioner so it runs after every saved-object import. The import re-creates the index patterns from files that carry no field list, so each provisioner run used to wipe the cache it had just been handed. Applied to the shard: 595 fields on the debug stream, and the item and metrics patterns went from no cache at all to 50 and 64 fields.
Images
- The new build archive controls, in the launcher's Show debug panel.
- Encumbrance warning marks after the pass, shown at actual size and zoomed:
Creatures
- The Cave Wrasse family stopped borrowing the crocodile's attacks. Three attack IDs reserved for this creature back in 2015 were still sitting unused in the game's tables, so it now has its own bite, a short-range cinder spit, and a sulfur roar that drops a target's Strength by 20 for 15 seconds on up to five people at once. The tier 15 and the Broodmother still escalate into dragon fire, which suits a thing that lives on dragon leavings.
- The wrasses ambush now. The behaviour flag that turns it on had never been set, so the ambush tuning on all five did nothing at all. The animation for it was already built and unreachable: the creature crouches, waits, then springs with a roar, and shows no nameplate until it moves. The lower tiers, the ones you would write off as harmless, let you get closest before they go.
- Two faults in the same family, both found before anything was play-tested. Both of its sound sources named a bone belonging to the crocodile it was copied from, one the wrasse skeleton does not have, so its audio played from the wrong place on all five creatures. Its gaits were tuned to between 1.2 and 3.5 metres per second against an animation whose feet only carry it 0.65, so it slid across the floor at up to five times its own stride. Measured the animation and matched the numbers to it, then checked the method against the crocodile, which sits within 14 percent of its own.
- The wrasse family's guard test ran for the first time since it was written. It had been blocked by another session on the day it was added, so its checks were confirmed by hand and never actually executed. It passes, and grew from 44 checks to 60 to cover the new attacks, the sound bones and the ambush tiers.
- Pet Range, the taming skill that sets how far your pet will chase a target before breaking off, was in the skill tree but no trainer taught it. Every tamer was pinned at the untrained two metre tether, so pets disengaged almost as soon as they left your side. Taming trainers now offer it, and training it widens the tether to about ten metres at the top of the skill.
- Follow Close, Follow Near and Follow Far set the distance without putting the pet into follow mode. A pet told to stay put would acknowledge the order and keep standing there. All three now start the pet following as well as setting the distance, the choice survives a zone change, and the matching chat commands work instead of doing nothing. Companions get the same fix.
- Four problems in how a taming attempt resolves. If the creature died or you left the area as the attempt finished, the attempt could fail to resolve at all. A creature not on the tameable list could report success, take your collar and give you nothing. A tame that succeeded but could not hand you the pet cost you both the creature and the collar. The chance on the cast bar could also read above 100 percent or below zero, and a creature with no real chance could still be tamed on a lucky roll. All four are fixed.
- A pet emote item that could not be redeemed was rejected and then destroyed anyway, so the item was gone and nothing was unlocked. The item now stays in your inventory.
- Wrote up the whole pet, summon and taming system as a single audit, covering tamed pets, the taming tree, magic summons, companions and deco pets. Five defects fixed, a set of hardening fixes in the summon path, and a dozen balance and intent questions recorded with the evidence for each rather than guessed at.
- Fixed a case where a room full of test bots could take over simulating the creatures in a scene. Bots do not run creature behaviour, so every creature there would freeze for the next real player to arrive. Bots now hand that role straight back when a player joins.
- Creatures could never see a test bot standing in front of them. Bots were missing one piece of the data a real player publishes on arrival, and without it every creature treated them as still spawning in, forever. They are visible to wildlife now, take real damage, and stop wandering off mid-fight.
Client
- Tracked down why the draw-call panels on that dashboard were empty: no shipped client had ever reported a draw-call number. Across 27,471 frame-rate heartbeats there was not one, and the client has been trying to send them since mid-July.
- The cause was timing. The engine registers those render counters lazily, and the frame-rate meter asked for them at startup, so it bound to counters that did not exist yet and stayed broken for the rest of the session. It never showed up in the editor, which has them ready before anything asks. The meter now re-asks on a five-second cooldown for the first few minutes, and says so in the log if it gives up.
- The Journal opened itself on every login, whatever you had done with it beforehand. It now opens only if you left it open, keeps the position and size you gave it, and stays put when you cross a zone line. Closing it with the X, the J key, or Escape all count as closing it.
- A tester reported the Journal was still doing it after the first attempt at a fix in July, and they were right. Two separate startup paths could each open a HUD window without consulting the other, and that first fix turned off the one that remembers your choice while leaving the one that opens the window outright. A new test rejects any window wired to do both, because that pairing can only ever save as open.
- Retiring Frenzy left a leftover glyph sitting on the hotbar of anyone who had it there, looking clickable even though the skill was gone from the tree and its experience refunded. Combat decks already cleaned themselves up in that situation; the hotbar never did. It does now, and only for skills actually retired from the game, so potions, scrolls, tools and emotes on the bar are untouched. DO NOT PANIC! (just experimenting)
- The character sheet's Masteries section rounded the mastery value to a whole number, so a Blades Mastery of 1.6 showed as 2 on the line while its hover tooltip said 1.6. The line now prints the exact value, matching the tooltip. Reported by a tester with a screenshot.
Balance
- Wrote a deep-dive analysis of the skill specialization system: how each school's Specialization skill works, what it actually grants at level 80, and how the training and switching costs compare to nine other MMOs.
- The specialization review turned up 13 effects that never apply or that read the wrong school's specialization. All are documented with proposed fixes for a future balance wave; no gameplay changes shipped yet.
- Fixed summoned Air, Earth, and Fire elementals leveling from Water Magic Specialization instead of their own school. Each elemental now scales with its caster's matching specialization.
- Cleaned up wild elemental attack data that scaled off Fire Magic Specialization for every element. The term was inactive for wild creatures; each elemental's data now names its own school.
- Fixed the summoned Phoenix having zero magic resistance unless its caster had Sun Magic Specialization. It now gets the same base resistance as other summons, with Sun Specialization adding more.
- Fixed the tamed Wyvern's tail attack ignoring the owner's Taming Specialization. The bonus hits now apply.
- Fixed two unreleased Bard songs whose focus and reagent discounts were keyed to Ranged Specialization instead of Bard.
- Looked into the specialization elixirs: their bonus math needs a design pass rather than a quick formula fix. An initial tweak was reverted the same day while that decision is made; the drinks behave exactly as before.
- Cleaned up four creature attack archetypes that read armor specialization stats no creature has. The data now points at the owner's specialization so it works if these attacks are ever given to pets.
- Heavy Armor Specialization now raises the damage absorption cap as designed: at specialization 80 armor can absorb up to 90 percent of a hit instead of 80. The bonus existed in the design but never applied.
- The taming success bonus from Taming Specialization now only applies while the specialization is set to training or maintaining, matching every other specialization benefit.
- Chance tooltips no longer display values above 100 percent. Combat rolls are unchanged.
- Removed a leftover Obsidian Mastery entry from the specialization tables. It belonged to a school that was never built and could not be obtained.
- Hardened the two-specialization limit: promoting a specialization now cleanly demotes the others in every case, and a repair pass fixes characters carrying more than two active specializations from old data.
- Added automated tests pinning the specialization fixes so the wrong-school and self-stat reads cannot quietly return.
- Wild elementals' melee strikes now count as their element, so elemental resistances and wards reduce the whole attack instead of only part of it.
- Skill decay on death is gone. Dying no longer removes experience from any skill, at any level, in any scene. Decay had been running at the full rate from level 40 up to a scene level cap while characters at or above the cap lost almost nothing, because the rate was scaled by a ratio built from two different experience tables.
- A specialization now switches all of its bonuses off when you stop training it. Only the mastery bonus itself was gated before, so the school attunement a mastery grants, worth up to 16 points at mastery 80, kept applying to a specialization that had been parked. Levelling every magic mastery and parking them all granted attunement in nine schools at once while occupying two specialization slots.
- Parties fighting in player basements were collecting the 25% open PVP experience bonus that basements are meant to be excluded from. The exclusion compared a whole set of scene flags against a single flag, so it never matched. 50 scenes carry the basement flag and none of them carry it alone.
- Party experience is no longer dropped partway through a group kill in a scene missing from the scene records on the server. Members earlier in the list kept their share and everyone after them got none.
- Unlearning Lightning Storm returns all of its experience instead of half. It was the one implemented Air skill left out of the full refund list, which cost about 1.2 million experience on a respec at level 100 while the other fourteen Air skills refunded in full.
- Verdantis Shardfall no longer caps producer skills. The zone holds adventurer level and adventuring skills to 110 so fights there stay close, but it was applying the same 110 ceiling to production skills, which clamped the bonuses those skills grant and showed the wrong level in their tooltips. Production skills now count at their real level inside the zone. The adventuring caps are unchanged, and it was the only scene in the game capping production.
Launcher
- Added a way to keep a copy of the build you have installed, and to run a kept copy later. Both live in the launcher's Show debug panel: one button keeps the current build, and a dropdown beside it lists your kept copies with a Play this build button. Players asked for this; until now an update overwrote the old build and there was no way back to it.
- Kept copies go in a folder you pick. On the same drive as the game a copy takes seconds and no extra disk space, because it shares its files with the installed build until a patch replaces them. On another drive it does a real copy, with progress and a cancel button. Running a kept copy leaves your normal install alone, so the launcher goes on patching and playing the current build.
- Released launcher build 26 for Windows and Linux, carrying the build archive. Installed launchers pick it up on their next start. The Mac launcher stays on 25 until its bundle is rebuilt, which has to happen on a Mac.
- The Mac launcher is on build 26 as well, built and signed on a Mac and published to the same channel. All three platforms now carry the build archive.
Crafting
- The batch crafting experience penalty holds at half again across the whole curve. The halved value and the lower floor were computed from different numbers, so the penalty faded from ten prior crafts of a recipe and was worth nothing from thirty on, where a batch paid exactly what single crafting paid.
- Crafting and gathering bonuses now use the production skill cap in the four scenes that cap adventuring at 100 while leaving production at 200. The cap was being read and then discarded, so a miner at 140 in those scenes had every mining bonus evaluated at 100 while the character sheet showed 140.
- Repairing an artifact at a crafting table now counts everything you put on the table, including items inside a bag sitting on it. Before, only the top layer of the table was checked, so an artifact or a gold crown tucked into a bag was missed.
- Enchanting, masterworking, collecting a brew and pulling ingredients from a lot chest stopped dragging the chat window in front of the table you are standing at.
UI
- The rune card list updates the right way round when a skill changes. Unlearning a rune used to leave its row on the list, and lowering a rune skill with an unlearn item removed the row even though copies remained.
- Turning a specialization off now rechecks your decks straight away. The extra card a specialization grants at mastery 80 stayed in the equipped deck until an unrelated later event removed it.
- Starting a third specialization now gives up the lower level of the two you already hold. It had been picking whichever the server happened to send first, so it could drop a level 100 specialization in place of a level 80 one.
- The daily pooled experience bonus compares whole dates, so a player returning exactly a year later on the same calendar date is no longer refused the bonus for that day. Both records of the last claim now update together.
- The pet status bar only wired up its stance icon and movement letter when the pet was first summoned. A pet that came back with you through a zone change showed blank or stale indicators and stopped updating for the rest of the session. Both now fill in and keep updating however the pet arrives.
- The Scepter of Dread, the Heart of Sorrows, the Bonesteel Crown and the Shroud of the Avatar now appear under the Artifact category in your inventory and render in the same bronze as every other artifact. Their tooltips already called them artifacts; the filter and the name colour did not agree. How you repair them is unchanged.
- The encumbrance warning in the top right corner draws its yellow and red exclamation marks large and centered on the rune icon now, in bold with a black outline. They used to draw at the 16px body size with no outline over 32px of busy art, and players reported them as hard to see.
- Fixed the encumbrance icon losing its picture. The rune art only becomes available once a character is over capacity, and the corner asked for it a single time at startup, so logging in with a light load left the warning drawing as a small bare exclamation mark for the whole session. The corner now keeps asking until the art arrives.
Performance
- Zone loads after the first are about 2.4 seconds faster. Two fixed delays were being charged to every scene change after the real loading work had already finished: a two second pause at the end so creatures would complete their spawn-in effect out of sight, and a half second pause at the start on top of a loading screen fade that had already completed.
- Measured the load against 1,784 real loads on the test shard rather than one development machine, which moved the target. The median load was 10.1 seconds and the phases accounted for all of it, so the largest remaining slice was fixed waiting rather than asset or engine work. Two earlier conclusions from the development machine were wrong: garbage collection costs 0.22 seconds, not about a second, and 2.2 seconds of apparently missing time was one phase being reported twice.
- The end of the load was the biggest phase and reported a single opaque number. It now breaks out shader warmup, the creature spawn wait, level finalize and the scene checksum separately, and it also measures the screen hide and fade that the old total stopped short of, so the reported figure now matches what a player actually waits through.
- Wrote up four load-time ideas that were measured and rejected, with the reason each one fails, so the next pass does not spend the time on them again. One of them would have looked like a free second and would instead have left the master volume stuck partway up.
- Measured the load changes in the editor: the fixed pause at the start of a load dropped from 0.8 to 0.2 seconds and held steady across a cold and a warm load. The new timing also showed that the old figure stopped counting 0.9 seconds before the player is actually looking at the world, and confirmed that one delay we had considered removing was already costing almost nothing.
- One measurement is still owed. The part of the saving that applies to creatures finishing their spawn-in needs a scene with creatures in it, and the test shard was not reachable from the development machine, so that number will come from the shard once the change is deployed.
- Checked two ideas for making loads faster by keeping more in memory, and rejected both on the numbers. Returning to a scene you had already visited is barely cheaper than arriving fresh, and re-reading a map from disk costs nothing at the median because the operating system has already cached it, so neither trade was worth the memory.
- The same measurement found a much larger target. Time spent loading art during a zone change tracks the decoration phase almost exactly: about a second on a map with no decorations, and nineteen seconds on a heavily decorated one, inside a load of thirty-six. One town template spends 41 percent of its entire load there. That is now the top candidate for the next pass.
Items
- Your chat log now tells you when an item takes durability damage, naming the item and the points lost. The matching lines for repairs already worked; the damage lines had never once reached a player.
- Artifact system deep dive: the combining ladder, the tier data and the ancient essence loop read end to end, with the results written up so the parts that look wrong from a distance and are not do not get re-investigated. Four player-facing fixes came out of it, and the artifact repair rules now live in one place for both online and offline play.
Bug Fixes
- The effect that plays when you find an artifact now plays once for the container you opened rather than once per artifact inside it, so a container paying out several no longer stacks the visual on you and everyone nearby.
Gathering
- Added a public Resource Atlas at catnipgames.net/resources/. It lists every zone that has harvestable resources with its tier and node count, and each zone opens a map showing where those nodes stand, seen from above. You can also pick a resource and see which zones carry it, ranked by how many.
- Each resource on the atlas lists both its placed spots and how many of those spots the zone keeps filled at once. A zone with 40 emerald spots and 23 live never has all 40 up together, which is worth knowing before you plan a gathering route.
- The atlas is live with the full world baked in: 221 zones carry resources, holding 16,260 placed nodes across 29 resource types. Copper veins are the most common thing in the game at 1,961 spots, with cotton close behind at 1,908.
Tooling
- New editor tests for the pet system pin the things that broke: that every taming skill a player is meant to buy is actually offered by a trainer, and that every pet command in the command list does something when issued. Both defects this pass found were invisible to the old tests because no individual piece was wrong.
- Test bots that populate a scene now walk around instead of standing in one spot. Each bot is given the scene's own walkable ground, exported from the map data, and picks its way across it with real pathfinding, so it rounds corners and follows the terrain rather than sliding through walls.
- Added a check that guards the data channels those bots use to appear in the world. The channel numbers are positions in a list, so an unrelated change elsewhere could silently shift them and leave bots invisible or under the ground. That now fails a test instead.
- The walkable ground for the bots' default gathering scene is now shipped with them, so they wander it for real. Running the new checks against it caught two things: long routes across a large area were being abandoned partway, and the documented channel numbers the bots publish through had quietly drifted by one.
- Bots that have arrived somewhere now bow, clap, wave and dance instead of standing to attention. They only do it while stopped, so nobody bows their way across a courtyard.
- Bots can also speak ambient lines now, though it stays off unless asked for: a large group talking would bury the local channel for anyone standing nearby.
- Ran the bots against a real server for the first time, which found three things reading the code had not. Their path smoothing was inverted, so every route was about twice as long as it needed to be and bots minced instead of walking. The setting meant to keep a group together was being ignored on any large map. And a message the server sends back on arrival was going unhandled.
Skills
- Unlearning a skill now returns all of its experience to your pool. It used to return half for most schools and everything for Air, Fire and Bard, a split left over from old school reworks that was never explained anywhere in game: walking away from a specialization at level 80 destroyed 1,801,380 experience in one school and nothing in another. Unlearning speed is unchanged, so switching builds still costs the same play time, and unlearn items still do it instantly.
- The Skills window shows the experience numbers it always had and never printed. Hovering a skill gives the experience in it, what the next level wants, what unlearning would return, and how far it moved this session; hovering a school sigil gives that school levels and experience. The header shows both experience pools at once instead of only the tab you are on. A new Interface option, Show Skill Experience Numbers, turns the figures off for anyone who would rather not read them.
- A skill set to unlearning now reports what it is losing each time you earn experience, and about how many more experience gains it needs to reach its lowest level. The estimate is in experience gains rather than minutes because the drain ticks on each award rather than on a clock.
Documentation
- Wrote down why the editor cannot connect to the test shard: the old fallback ports were retired in July and the replacement network stack is compiled out of a plain editor build. The port reference still described only the old scheme, so it now carries a warning and a pointer to the current one.