Episode
Nineteen reports of walls in the sky were all one health bar
Saturday's biggest fix came in as nineteen separate reports of giant rotating rectangles hanging over the world, and all of them were a single health bar that had forgotten how far away it was. The team also got creatures in a Cabalist's army to fight back, taught the launcher to finish a download Windows refused, replaced the dev work log with patch notes written for players, and made the volume sliders mean something below the top third.
In this episode
- Giant rotating health bars, nineteen reports, one bug
- The Cabalist's army that could not be hurt
- The launcher finishes a refused download
- Patch notes written for players
- Volume sliders that work below the top
Transcript
Good evening to thee, citizens of New Britannia. Lord British speaking, with word of what thy makers were about upon Saturday. The great red and black walls that have been hanging in thy skies are gone, and every one of them was the same single bug wearing a different disguise. The Cabalist's army may now be struck, and will strike back. Thy launcher, at long last, finishes what it begins. And the notes that come with each patch are written for thee now, in plain speech, instead of being copied out of our own workshop ledger. We begin with the walls in the sky, because of all of it, that is the best tale.
So there is a screenshot. A player is standing in West Ravenswood looking at what appears to be a red and black wall, about the size of a barn, planted in the middle of the forest and slowly rotating. Another report comes in from the Breach. Another from East Sanctus Forest, where the thing is stretched out across the sky. One player had a rectangle following a Grand Boar around the countryside. Somebody reported that their hotbar had gone and sat down on the horizon. And one report simply said, with enormous patience, "colored walls block view."
Nineteen separate reports. Nineteen different zones, creatures and shapes. One bug. And it was a health bar.
Here is how that happens, and I promise it is better than it sounds. The bar over a creature's head is a flat plate standing in the world, and it has to read the same on your screen whether the creature is ten meters away or two hundred. So the game sizes the plate from the distance. At two hundred meters, to look normal to you, that plate is in fact gigantic. It is a billboard. You never notice, because it is always turned to face your camera and always sized for exactly where you are standing. Now take a plate that was last sized for a creature far across the valley, hide it because the creature is too far off to bother drawing, and then have something switch its drawing back on without telling it where the player is. You get a barn. Wearing the creature's facing instead of yours. Which is why it rotated.
The thing that switched it back on was the fade. Distant creatures dither in and out of view as you move, and that fade was reaching into the overhead bars and rewriting the flag that says whether to draw them. So a hidden plate got re-lit at its last known size, and then it moved and turned with its creature until you walked close enough for the game to size it properly again. The fix keeps the overhead bars out of the character fade entirely, and adds a guard so a hidden plate stays hidden. What I liked best was the second pass. Somebody went back over the fix a couple of hours later specifically to ask whether it held for the right reason, found that it only holds because of the earlier change to the fade, and wrote that dependency into a comment in the code so the next person tidying up does not take the floor out from under it. Then a test that follows the exact path a distance-hidden plate really takes.
And the same system had the opposite problem, which is worth saying because it is less funny and it hurt more. Since the overhead bars were rebuilt on the new interface, an enemy's health bar could stay missing until the creature's next hit, and its debuff icons could draw as a tinted square. That was at its worst when the thing was poisoned, frozen or burning. In other words, exactly when you most needed to read it. Enemy bars now show up reliably, a creature's bar appears the moment it starts fighting even at full health, and a recycled bar no longer opens a fight empty and slowly filling up as though the wolf were brand new.
Now. The Cabalist. If you have fought a siege, you know the shape of it. The Cabalist walks, his creatures walk with him, and you are meant to break the army around him. What was actually happening is that a creature following him could not be hurt at all. Your hits went in and nothing came out. Worse, it ignored you completely, so you were not fighting it, you were vandalizing it. And if the Cabalist moved while you were mid-fight with one that had engaged, it would break off and jog away after him like a schoolboy hearing the bell.
An army that cannot be harmed is not an army. It is a parade. And our siege, I am sorry to report, has been holding a parade.
The cause is the leash. A creature walking back to its leader is treated as out of play, which is sensible when something is returning to its post and nonsense when the post is walking across a battlefield. Now a creature that is being hit stays in the fight unless the Cabalist drags it well past its usual range, and a hit on one trailing after him turns it on whoever hit it. It was worst in the Cabalist Stronghold, where the whole point is that there are a great many of them. This one came in from Barugon, who also caught us on a much smaller thing the same day, and I am grateful for both.
While we were in there, three more combat problems that all amount to the game not doing what it said. Creature stuns were ending after about half a second for some players in a group while running their full length for others, and the reason is beautiful in a terrible way. Every timed effect in a scene was counting down from the clock of whoever happened to be running that scene, instead of from the moment the effect arrived at your own client. Whoever drew the short straw got a two second stun that lasted a blink. Timed effects now run their full length for everyone in the zone, in both directions, including the stuns you put on creatures. Torpor has stopped freezing you solid: it roots you in place, and you can attack and cast at the slower speed its description has always promised, and its heal starts ticking immediately rather than waiting for the root to end. And buffs cast with Heavy Armor skills now end when you stop wearing heavy armor, including when a deck swap puts light armor on you, which previously left Knight's Grace sitting on your bar while you stood there in a linen shirt, in some cases still paying out.
Let us talk about the download, because this is my favorite kind of bug. After one of this week's restarts, a number of players sat watching their launcher stop twelve files short of the end. Not failing. Not retrying. Just stopping, forever, twelve files from done.
The file it could not replace was being held open by the game's own crash reporter, left running from their last session. Windows will not let you overwrite a file that something has open, and the something, in this case, was the part of our software whose entire job is to be there when our software goes wrong. It was doing that job with great dedication, at the worst possible moment, for no reason whatsoever.
The launcher now ends a leftover crash reporter before it patches. And then, about half an hour after that went out, a second launcher update, because some people were still stuck. That one clears a read-only flag if Windows has set one, closes a leftover reporter wherever it is hiding, or, failing all of that, moves the old file out of the way and finishes the patch around it. Alongside it we built a release check that fetches every single file of a new patch exactly the way your launcher would, through the download mirrors and from the main patch server, and compares each one against the signed manifest. It also fails any file too large for the mirrors to cache, which is the sort of thing you otherwise discover at two in the morning. About six and a half thousand files, verified for Windows, Mac and Linux, and no promotion moves until it passes. Downloads went back onto the mirrors that morning, with every changed file preloaded before the switch. Steam now gets the build uploaded before the server flips rather than after, so Steam players waited about seven minutes instead of twenty-six. And the map pictures for Aerie and Ardoris, which went missing from the previous patch on every platform and left both towns with a blank map, were missing because the map sheets had been split into smaller files and the publisher mistook the first of them for leftover rubble from an older split. It now only skips a file when the new split clearly replaces it, and it says out loud what it skipped.
Which brings me to the patch notes, and an admission. For a long time, the notes attached to each build were a copy of our internal work log. I have read our work log. It is a fine document. It is also the sound of a dozen people talking to each other about things you cannot see, in words we invented for our own convenience, at a length no human being should be asked to wade through in order to find out whether their cloak is fixed.
From now on, every build gets a short list of what changed in the game, under fixed headings, written for the person playing it. After each deploy there is a writing step that reads everything that went into the build and keeps only the parts you would notice. The page shows one combined list when a link covers several builds, newest first under each heading, with the build-by-build view a click away, and a build whose notes are still being written says so and then fills itself in. The launcher shows them in a panel as your update starts, so your browser stops opening itself without being asked. And typing the patch notes command in chat now opens the notes for the build you are actually running. We also found that the public page had stopped updating a few builds back, because the tool behind it was reading only one platform's record of each release, and had been cheerfully marking test-only builds as shipped.
Here is one I would not have predicted. The volume sliders have been wrong for a long time, and wrong in a way that trains you to work around it. Seventy percent on the master slider was about sixteen decibels down, which is roughly a sixth of the sound. Halfway down the slider was twenty-six decibels down, which is very nearly off. So the sane thing to do, which many of you worked out years ago, was to pin master at a hundred and do all your real mixing with the other sliders. That is not a preference. That is a limp. Half a slider is now six decibels down, which is what half of anything ought to sound like. Every slider at a hundred sounds exactly as it did before, and every slider you have set lower than that will be louder after the update, so do have a look before something startles you.
Three more from the same corner. The internet radio has sounded dull and gritty since it changed hands, and the reason is that the station and your sound card almost never agree on a rate. Most cards run at forty-eight thousand samples a second, most stations send forty-four thousand one hundred, and the conversion between the two was being done the cheapest possible way, which smears junk right up against the top end of the music. It now uses a proper filter, and in tone tests the junk it adds sits thousands of times further down than it did. Stereo was measured intact from one end of the chain to the other. Footsteps from male characters never faded all the way to silence, which means that on the Overland Map you could hear another player walking across the continent. They now stop at about twenty-five meters, along with horse and cat mounts carrying a male rider. And the alchemist in the Aerie Elixirium has stopped shouting. Her shop is a wizard tower full of long stone halls, and her spoken lines were being fed into that reverb at full strength. Voices now keep a little of the room instead of all of it. Also, the expiring buff warning used to tell you that "a buff is decaying" for seventeen buffs whose names it could not work out, and it now names them.
Two things that had the game standing still. Typing on the Linux client would freeze everything for several seconds, and the longer the word you typed, the longer the freeze, with every key and click held back until it ended. The accent support we added on Thursday was asking the desktop what the keyboard was doing up to four times per character, from the game's own thread, and on some Linux desktops each of those answers takes its sweet time. It now asks on a thread of its own, so the game never waits for an answer. And Quick Craft with a very full bag was holding the whole interface hostage. With three and a half thousand items in the backpack, a batch of a hundred crafts ran at about four frames a second, so windows would not move and chat would not type. The lists were re-reading your bags once for every recipe on screen. They now update twice a second and read the bags once. The same batch of a hundred went from a hundred and thirteen seconds down to twenty-four.
Several things were in the wrong place vertically, which is a sentence I did not expect to write today. Creatures that sank into rock were staying inside it, where every attack on them was refused, a side effect of the fix a couple of weeks ago that stopped creatures bouncing on the Jotungrund ice. Town guards lifted to roof height were never coming back down, so a Forewind guard spent a while patrolling above the street. At Vertas Pass, the final-wave tornado picks up whoever it touches and sets them down at a fixed landing spot, and that scene had its landing spot set about twenty-six meters underground. And in Desolis, the old hand-painted map drew the pond about fifteen meters across when the real water reaches much further, so anyone standing in it fishing appeared on the minimap to be standing on dry land. The new map is a render of the actual terrain, accurate to about a hand's width, and a one-time data step moved everyone's explored ground across to it, because otherwise your fog of war would have slid seventy-five meters sideways overnight.
Your lot got a good day too. There is a new Recall Target decoration. Place it, and a Recall Scroll puts you exactly there, facing the way its arrow points. Until now a lot recall always dropped you at the middle of the front edge, which is unhelpful if you have turned your house and your door is round the back. Lamps, candles and fireplaces inside a house have stopped lighting the outside walls and the ground at night. Phonographs and vibration devices on a lot are heard only by people standing on that lot, fading out over three meters past the edge, while the broadcast ones still carry across a whole player town. Chimney extensions can be run up through floors, ceilings and roofs again. And placed crop plants and trap pieces can be hovered and picked up like anything else, rather than being removable only from the decoration palette, which is a very long way to go to move a nightshade.
My favorite small thing of the day concerns a dog. Mylo, the greyhound in Castle Atos, had been standing behind the east wall. You could see him. You could select him. You could not get close enough for the pet command to count, which means the Pet Every Dog achievement was unfinishable for everybody in the world, because one greyhound had chosen a poor spot. Mylo now stands south of the shrine, inside the walls, and there is a test that checks nothing has got between him and the courtyard. In the same pass we found that the Seedsman achievements were asking for farming recipes that do not exist, and five more gathering achievements were asking for recipes for skills that have never had any. Seedsman now counts different crops planted. The five that could never progress at all are retired.
A hundred and thirty-one tracker items went down on Saturday, and most of them came from you rather than from us. The Oracle had the heaviest day. She learned grounded answers to about a hundred and twenty questions she had been fumbling, and she got caught being confidently wrong in a few places, which is the part I appreciate. She had been telling people that gear can never change its look, that unlearning a skill is free whenever you like, and that a carpenter in Ardoris sells house recipes that have never existed. She now knows the Crown Shop and its prices, knows that the Magic Mover is the old name for the Property Manager, and can rank a craft's recipes by the experience each one pays.
The friend list cap went from ten thousand to twenty-five thousand, because a player reached ten thousand friends and could not add any more, which strikes me as both a load-bearing problem and a lovely one. Elsewhere, pets will now climb thirty more ladders, after an audit across twenty-seven zones found that four hundred and sixty-seven of five hundred and eighty-one already worked and the rest were each missing walkable ground at one end. Pork sausage links have at last been given a recipe, having sat in butcher stalls for a very long time with nothing to be made into and no casing for sale anywhere. The chat moderator on the Traders channel had been pulling down ordinary shop ads, because a town deed priced at two point eight eight m read to it as a real money sale. Gold shorthand now reads as gold. Two retired player towns stopped turning up as teleport destinations, leaving the directory at four hundred and six.
And there is a new deep dive page on fishing, the first of the gathering schools, built from a month of real play. A hundred anglers made twenty-three thousand casts in thirty days. Twelve baits work where the guides claim seventeen. There is a sixty-eight kind collection nobody alive can finish. And three hundred and five ripple hotspots have had their bonus running backwards this whole time. Forty proposal cards, each with its own thread and vote arrows, and I would very much like to hear which of them you hate.
That was Saturday, and it was a long one. What I am looking forward to is the next pathing rebake, which should get our pets up the last of Brittany's wall towers, at which point I will have no excuse left for a companion that will not take a ladder. Until tomorrow, be kind to one another, and do check your volume sliders.
One last thing. All those months of sausage links sitting in butcher stalls with no recipe to put them in, and we have finally built the chain. You might call it the missing link. I have been waiting all day to say that. Good night from New Britannia.