SotA

The New Britannia Herald

Monday, September 28, 2026

Work Log Podcast

Episode

The last old screen falls, and a capybara learns zoomies

Five new companion pets went into the Crown Store with four tricks each, and the whole front end of the game, every screen you see before the world loads, was rebuilt on the new interface. Towns run faster after dark now that the moon has stopped casting shadows over them. The server code that moves your belongings around was taken apart and rebuilt so a failed save cannot leave an item in two places or in none.

In this episode

  • Five new pets with tricks, naps and swimming
  • Every screen before the world rebuilt on the new interface
  • Night shadows and per-frame garbage cut in towns
  • Item handling on the server made fault-proof before launch
  • A forty-five second freeze in Resolute, and the loading faults behind it

Transcript

Good evening to thee, citizens of New Britannia. Lord British before thee, with word of what thy makers were about upon Monday last. Five new beasts have come to the Crown Store, and they roll over on command. The last old screen standing between thee and the world has been pulled down and built anew. Thy towns run swifter after dark, for the moon has at last been told to stop flinging shadows about at midnight. And the servant that guards thine every possession has been taken to pieces and reassembled, so that nothing of thine may fall between the floorboards. Come along. There is a raccoon to discuss.

First, though, the one I cannot stop thinking about. Add-ons have been able to play sounds for years. On a Mac, they never did. Not one sound, not in any format, not once. The reason is that the piece of the game that loads a sound was handed an ordinary file path, and the Mac client looked at that path and decided it was a web address. So every time an add-on tried to play a small chime sitting right there on the player's own hard drive, the Mac went out to the internet to look for it. It has been doing that this whole time. It is fixed.

Now. The pets. There are five new companions in the Crown Store, and I want to be honest with you about how much of Monday I spent watching them. A capybara, a raccoon, a baby raccoon, and two red pandas, one dark russet and one paler Himalayan. The baby raccoon is the adult raccoon with a bigger head, bigger ears and bigger paws at two thirds the size, because that is what babies are.

All five learned four tricks, from the pet's menu or by typing. Roll Over, Play Dead, Beg and Zoomies. Roll Over is what it sounds like, with the paws pedalling in the air. Play Dead is my favorite, because the animal keels over, lies there twitching, and will not get up until you walk away. It is committed to the performance. Beg has the raccoons up on their hind legs pumping their paws at you, and the capybara sitting back and waving its forefeet like it is directing traffic. And Zoomies is two fast laps of a circle at full speed, for no reason whatsoever.

Their idle behavior doubled as well, from four little antics to eight. The raccoons dig, startle themselves, waddle about upright and chase their tails. The capybara shakes itself off, stretches, flops onto its side, loafs and pops into a run of small hops. Summoned pets now swim after you across lakes and rivers with their backs above the water and walk out on the far bank. And a house pet walks somewhere new before every nap, so visitors see it arrive and settle rather than finding it asleep in the same corner it has occupied since the dawn of time.

The animation was the hard part. The raccoons and the red pandas share one skeleton, the pandas being the same animal in different coats with longer ears and a fuller tail. But the walk, the trot and the run all arrived sliding the body forward and then snapping it back every single step, which is fine in a preview window and looks like a medical event in a game. Every one of them was rebuilt to run in place. Their fur needed a remapped mesh before it would draw on our shader at all. And then, having shipped, the five of them refused to let the build out the door, because a release check noticed the server did not yet know what they were. The pets broke the release. The release check caught the pets. I am counting that as two systems working.

Second story, and this is the one the team has been walking toward for a very long time. Every screen you see before the world loads has been rebuilt on the new interface. The title screen and the intro burn, the license and terms screens, the main menu, the Steam link screen, the avatar list, the character screen, the offline Load Game screen, the loading plate, the message boxes. Nine conversions in one batch, and then the old interface was cut out of the front end altogether.

The last step has the numbers I enjoy. The file that describes the front end went from one thousand four hundred and sixty-nine records down to one hundred and sixty-seven. The objects inside it went from three hundred and seventy to forty-eight. The client still boots straight to the login screen with every dialog switched on, and the fifty-three pieces of translated text those old labels were carrying were moved somewhere safe first, so no language lost a line.

A few things got better while the team was in there. Two whole panels were deleted because no player could reach them. The descriptions of Play Online and Play Offline used to appear only when a mouse hovered over them, and now they sit under the buttons and also show up when you reach a button with the keyboard. Long agreements draw in full instead of stopping partway. And the Forgot User Name or Password line on the Steam link screen, which looked exactly like a link and did absolutely nothing when clicked, now opens the account recovery page, which is what it had been pretending to do for years.

And then there is the part where we broke the Skills window. With every screen converted, the team started pulling the old interface out from underneath the rest of the game, including the health bars and buff icons that float over characters. One skill tile missed that switch. On the next test build, clicking any school in the Skills window gave you a single icon floating in the middle of your screen and no tree at all. A tester found it within hours. It is fixed, and there is now a check that scans every interface file in the game for the same kind of miss, so that particular mistake cannot happen a second time.

Third. Towns got faster in two completely different ways, and both are good stories. The first is memory garbage. Every frame the game makes small throwaway objects, and every so often it has to stop and sweep them up, and that sweep is a stutter. Standing in the square at Etceter, the game had been discarding about nineteen kilobytes a frame.

The single biggest source of it was beautiful. Somewhere in the code, to format a number for display, we briefly switched the thread's language setting and then switched it back. Harmless, you would think. But in this engine the moment you touch that setting, the thread is marked for good, and from that point on every resume of every background job in the game allocates memory. One innocent number format was costing about four kilobytes a frame, permanently, for the rest of your session. Numbers are formatted without the switch now, and there is a test to stop it creeping back. With that and a dozen smaller ones, the Etceter square went from about nineteen kilobytes a frame to about seven, with less than half as many allocations. Network packets stopped building a fresh buffer every time one is sent or received, which is roughly two thirds less scrap per packet.

My favorite of the small ones. The Performance window draws a graph of your frame time, one hundred and fifty little bars scrolling across. It was redrawing those bars by resizing them, which forced the whole interface to rebuild itself, several times a second. Opening the window to find out why your frame rate was poor was making your frame rate poor. The bars are scaled now instead of resized. The instrument has stopped disturbing the experiment.

The other half is shadows at night. Someone built a tool that lists everything casting a shadow at a given moment, and then went and priced each one. The moon was casting shadows across town after dark, out to three hundred meters, for about four milliseconds a frame in Etceter. At night. From the moon. That is switched off, and the ground under trees reads a touch brighter for it, which is a trade I will take. Small lamps and candles now stop casting shadows at a distance that scales with how much light they actually give, so a table lamp keeps its shadows to about ten meters while a big fire keeps its reach and in fact gained some. And planted crops stopped casting shadows entirely, because a garden holds dozens of tiny plants and each one was being drawn again for every shadow in view. Measured in Etceter at night in the rain, the shadow work came to about two milliseconds a frame per change, with side-by-side screenshots to confirm nothing looked different.

Fourth story is not glamorous and it matters more than any of the others. With the October move coming, the team went through the part of the server that moves your things around, looking for any place where a save that fails could leave an item in two places at once, or in none at all. One of those is worse than the other. They are both bad.

Every kind of storage is now checked before an item move writes anything, so an operation that cannot finish stops before anything changes hands rather than halfway through. Buying and selling with merchants and player vendors, moving and stacking, opening bundles, all checked up front. Bank, plot and dungeon upgrades, item upgrades, experience redeems and lot taxes now take the payment before they grant the thing. Vendor listings and buy orders stay shut until the item or the gold behind them has actually been taken. Tip jars, prize chests, house and lot sale proceeds and Exchange refunds can no longer pay out twice when a delivery gets retried.

And a container the server could not put away because of a database fault used to be dropped from the retry list, which is a polite way of saying your belongings sat in limbo with nobody looking for them. It stays reserved and keeps being retried now, and if it keeps failing it stays locked for a person to sort out by hand. There is a related one worth saying out loud. If you sold a lot in a player town, or sold a house out of storage, the container of your things arrived in your bank and would not open. Everything was right there, visible, sealed. That works.

Fifth. Three separate reports, one shape of problem underneath all of them. Knightrider reported that walking past the big garden lot in the middle of Resolute froze the game for about forty-five seconds. Every time. That lot carries seven hundred and eighty-three decorations, and the game has to work out where creatures can walk around all of them. The calculation was failing, being thrown away, and started again from scratch the next time anyone came near. Nobody remembered the answer and nobody stopped asking the question. It now works it out once, in under a second, and keeps the result. Thank you for that report. Forty-five seconds is a long time to stand in a street.

The second was offline play for new female characters, which stopped at ninety-four percent, sat through two three-minute timeouts and dropped you back to the main menu. The character model was being picked up through another item's files before its own, which left it loaded with none of its actual behavior attached. A shell of an avatar. Both character models now load while the game starts up.

The good part is what happened after. Rather than stop at the one model, the team went after the general case. A great many character, creature and effect models live packed inside one file and are referenced from others, and each one only works properly if the game reaches it through its own file first. The build now records which of those models everything else reaches into, and the game loads them first, whatever asks for them. That covers monsters, NPCs and effects the same way it covers your avatar. One player's report about one character became a fix for a whole class of things that had not gone wrong yet. Third in this group, Linux players with the companion switched on could not start at all after one crash or forced quit. One bad exit and every launch afterward died during loading. Mac shared the fault. Both start normally now and tidy up after the old session themselves.

Right. Smaller things, grouped by where you will meet them. Your windows first. The party member list used to save its position every time you clicked a row to select somebody, so with a large party it would park itself over your own health bars or jam against the top of the screen. A click only selects now. Companion and pet bars hang below the party list and travel with it instead of opening at a fixed spot that fell inside the list the moment you had two party members. Reset Positions puts both back. The minimap has a new home beside the warning icons in the top right, so your damaged equipment icons stop being shoved down the screen. Skill tooltips stopped sprawling across half a monitor. And the quit confirmation stopped putting its question down by the buttons with a wide empty strip of window above it.

Your maps. The Isle of Storms map only ever showed a black field of stars that never filled in no matter how far you walked, so the map is switched off there now, it says so when you press the key, and it returns when you step through the Lunar Rift. Opening the world map from inside a town used to rotate it by that town's own idea of north, which meant it came up sideways in Aerie and upside down in Solania with the town's lot outlines drawn over the top. It is north-up and clear of markers now, and Local Map brings the markers back. And the Teleport to Zone list shows the destination's map beside it, drawn under your own fog of war, with a pin on every entrance it offers. Eight hundred and fifty-three arrival points were measured into the map data to make that work.

Your house. Closed doors now stop placed pets and Conversationalists in thirty more home styles, from the Log Cabin to the Obsidian Inn to the pirate galleons. An audit of every house door in the game, all two thousand four hundred and one of them, found two hundred and twenty-seven that were never marked as doorways at all, which is why your pet kept strolling through the wall. Moved houses hold their doors now too. The chimneys on two Town Home styles went from a pit nineteen centimeters deep with the stone stretched into streaks, up to a proper meter. And devotionals placed in a player-owned town count as ordinary decorations instead of NPC buildings, so they stop eating the slots a town needs for its bank and its Oracle. Towns that already have devotionals down get those slots back.

Add-ons and the recipe book. Creators can now attach a support link to an add-on, its forum thread or its code page, and the Community Addons window shows it and asks before it opens your browser. That was requested by Tirrag. Packages can carry a lot more sound formats, and their own data files now, so a long list of items no longer has to be typed into the middle of the code. Add-on buffs carry a category as well, food, potion, blessing, song, pet and the rest, so a custom buff bar can sort them into rows without keeping its own list of every name in the game. And the Recipe Book search used to go blank on the first search of a session, because before showing you anything it went and loaded the item behind every ingredient and every result of every recipe you know. All of them. It reads those names from the catalog now, there is a Searching line while it works, and the pause after you stop typing dropped from six tenths of a second to two tenths. Requested by Gravidy.

Lightning round. The Oracle had been leaking her own thinking into her answers, stray sentences like "Search again" glued onto the front of a perfectly good reply. Those are cut wherever they appear now, and she has stopped answering her own reminders out loud. The Crown Exchange clerks in three cities were opening an empty chat window, because they were the only NPCs in the entire game missing the second file every conversation loads. They had nothing to say. They greet you and point you at the exchange now, and a test fails if anybody loses that file again.

A cluster of combat fixes went down together: a stunned or knocked-down creature no longer parries or blocks, a troll or dragon shows one Enraged icon rather than two, a dragon that loses you and walks home can enrage in its next fight, and the Enraged icon stopped haunting corpses. Alongside those, a heap of window bugs, the Declare Guild War panel that went deaf when you challenged the same person twice, link cursors in both books, a divider line, a HUD column logging an error every frame while the corner of your screen finished arranging itself. Starting from Steam logs you straight in with no clicks now. Nearly eight hundred new English lines were translated into all eight languages, with four hundred and ten place names corrected to match what each language already calls those places.

A hundred and five tracker issues were closed on Monday, and about seventy of those were verification tasks, testers working down a backlog and signing off on things the team fixed weeks ago. That is unglamorous work and I notice it. Three of the day's fixes came from reports and requests with names on them, and not one of those was something we could have seen from inside the building.

That is Monday. What I am looking forward to is the first quiet evening after the move, standing in Etceter at night with the moon behaving itself, watching somebody's red panda choose a fresh spot for its nap. A small world, running better.

And before I go. We taught a capybara to roll over. Which makes it, and I apologize to nobody, the world's largest roll-ent. Good night, New Britannia.