Episode
The Castle Atos crash, the red inventory, and a dungeon with no loops
A tester's game closed itself three times in eight minutes whenever an NPC began to speak, and the hunt for it fixed three separate ways voice audio was being thrown away mid-sentence. The inventory window came back to parity after a full tester pass, and one refused item can no longer flag your entire bag until you relog. Plus frost and lightning enchants built from art nobody could reach, a generated dungeon that passed every check while being a straight corridor, and every line of Japanese dialogue in the game.
In this episode
- A crash that closed the game when NPCs spoke
- Inventory round two, and the red-item mess
- Frost and Shock weapon enchants, and elementals that missed
- The generated dungeon that was a straight line
- Japanese finished, all sixty-six thousand lines
Transcript
Good evening to thee, citizens of New Britannia. Lord British here, with an accounting of what thy makers were about on Saturday last. Word from the forge, that frost and lightning may now be laid upon a blade, where fire alone was permitted before. Word from beneath Castle Atos, where there is a new dungeon, and it is flooded. Word from the scribes, who have set the whole of our speech down in Japanese, every last line of it. And word from Castle Atos again, less happily, for a certain talkative fellow there was shutting the game down entirely. We shall have that one first. It is the best story, and I come out of it looking a fool, which is usually a sign the story is worth telling.
Here is how it went. One of our testers is standing in Castle Atos doing the least dangerous thing available to a person in this game. He walks up to an NPC. The NPC opens its mouth. And the game is gone. No error, no crash box, no polite little dialog asking whether he would care to send us a report. The window is simply not there any more and he is looking at his desktop. He starts the game again, walks back, and does it twice more inside eight minutes. Three reports came in from that one castle, and every single one landed at the exact instant a voice began.
So what was happening. A voice line that a character has not spoken yet this session has to be fetched and decoded before it can be played. Decoding takes a moment. And the code that hands that audio out was letting go of it before the decode had finished, which meant the clip could be thrown away while playback was in the middle of starting. Ask for a line the game already knew and everything was fine, which is why this looked like a curse on one specific room rather than a bug. The first line out of any new mouth was the dangerous one.
Once you know what you are looking for, you find its cousins. Clearing the voice cache from the audio options while an NPC is mid-sentence did the same thing. So did the housekeeping that discards old lines after a session has heard a great many of them, which cheerfully discarded one that was still coming out of somebody's face. Same mistake, three hats. All three are fixed. And while we were in there, interrupting an NPC while its line was still downloading used to stop that line from ever playing again for the rest of the session, which is fixed too.
The other thing that came out of this is embarrassing in a useful way. Sixteen crash reports arrived that day with no crash file attached, because in those cases the game had not written one. The operating system, meanwhile, had kept a perfectly good crash file sitting on each of those players' disks the entire time, and we were not picking it up. We are now. Sixteen reports that told us nothing have become sixteen reports we can read.
And in the same corner of the world, the zombies of Solace Bridge. That spawn point rolls its undead from four bodies, an adult woman, an adult man, a girl and a boy, and all four of them shared a single set of dialogue. Which meant all four groaned in the same voice. An elderly man's voice. So a small child would come shambling out of the dark moaning at you in the tones of somebody's grandfather, and it has been that way for a very long time. A voice can now be pinned to the body a creature actually spawned as, and sixty-four new clips went in to fill it. The children sound like children. I am not certain that is an improvement to your evening, but it is correct.
Now, the inventory. When we put the rebuilt inventory window in front of a tester, he did not report a bug. He did a full pass and reported all of them, and the list was humbling. Double-clicking an item did nothing at all. The list had no sorting, no weight column, no durability, no value. Your Gold had vanished from the window entirely. Items would not drop into it. Items dropped onto a container window landed in a different container, which is its own special kind of magic trick. The windows had no front-to-back order, so the one you were using would not stay in front. And splitting a stack could not be reached from anywhere.
All of that is back. The list is a sortable table again with weight, durability and value. Your Gold is back on your own backpack. The category tabs are back as buttons, nineteen of them for your own bag. Items colour-code by quest, locked, equipped and artifact the way they always did. Stack splitting works, and the quantity prompt opens at your cursor in front of the window that asked for it. Shift and control multi-select came back in the bank and the backpack. And a bag inside your backpack now tells you how full it is right on the row, as three of ten, so you no longer have to open every pouch to find the one with room.
The worse one was the red items. If you hit Take All on a full container, or dropped a loaded bag into your bank, and the server refused any single item in that batch, the client marked every item in the batch as broken. A broken item cannot be picked up, equipped, crafted with, or moved again. And there was no way to clear it. Not by closing the window, not by trying again. You logged out and back in, or you lived with it. One rejected item, and your whole inventory was furniture.
A failed move now flags only the items the server actually refused, and the client re-reads the affected containers so the state clears itself. Large moves into the bank are split into smaller requests before an item pushes them over the limit, which removes the cause behind most of these in the first place. Transfers the server never answers now report a failure rather than parking a callback that waits forever. And an item in the middle of a move draws in cyan now, with red kept for something the server truly refused, so an ordinary transfer stops looking like damage. Taking more than sixteen containers out of the bank at once works again as well.
To the forge. There are two new weapon enchants. Frost Weapon lives in the Water tree and Shock Weapon in the Air tree, each learned after its school's first attack spell, and each wraps your equipped weapon in its element for a duration. Frost adds water damage and slows what you hit by fifteen percent for a few seconds. Shock adds air damage and rolls a small chance to stun. Both add less raw damage per swing than Ignite Weapon does, and trade that for the effect. Fire has been the only school that could set your blade alight for as long as this game has existed, and now it is not alone.
Here is the part I love. The ice weapon effect and the lightning weapon effect were already in the game. Finished. Built years ago and sitting there. Nothing in the entire game pointed at the lightning one at all, and the only way any player had ever seen the ice one was by being bitten by a dragon. Two pieces of finished art that no one could reach, and the work was mostly a matter of giving players a way to ask for them.
Speaking of swinging at things. Your summoned earth and ice elementals have been attacking targets they could not actually hit. The pet decided a swing was in range using its weapon reach of five metres. The ground effect that carries the damage only reaches about four. So in that last metre you got everything except the point of the exercise. The wind-up, the animation, the earthquake, the whole performance, and no damage, and not even a line in your combat log to tell you it had missed. Both halves read the same number now, and the elemental walks that final metre before it commits. There was also a check sitting in the creature behaviour that aborts an attack whose target has stepped out of range mid wind-up, and nobody had ever switched it on. It is on.
Two more from combat. Animal Charm now holds an animal for as long as the timer on the icon says it will. The duration was being recalculated without the caster's skill level, so at grandmaster the beast tore free at roughly half the time you were looking at. The description was wrong too. It called the effect a mesmerize, which is a different thing entirely, and it never mentioned that Lunar Specialization extends it. And skills that strike once and leave a bleed behind, Rend, Puncture, Sawblade Sweep and Spinning Attack, were firing your weapon's on-hit effect twice per cast, so a poisoned blade applied its poison two times from one Rend. The bleed was being counted as a second impact. A sweep of all two hundred and five skill definitions confirmed those four were the only ones.
Now the dungeon. The new dungeon builder produced its first complete work this week, The Cistern of Atos, a flooded drainage run underneath the castle. Nine build passes, seventy-eight objects, tunnels and junctions, a chest alcove, a great cistern, a boss cistern, standing water, torchlight, dripping, ten creature spawns and ten sealed stubs left for later. The dressing was chosen by story rather than at random, silt near the entrance, cobwebs spreading as you go in, then bones and glowing moss as the tunnels flood.
Then the team built the big one, four levels, two kits, and it passed every check we had. It was also a corridor. Thirty-nine places, thirty-eight connections, zero loops. Thirty-one steps from the front door to the boss with no way home except the way you came. Now, I have opinions about dungeons. A dungeon ought to let you become lost and then let you come out somewhere you did not expect. A single line of rooms is a hallway with monsters in it. So rather than fix that one dungeon by hand, they taught the builder to measure the shape of a layout instead of only its validity. It collapses every loop down to a single point first, so a nine-tile room counts as one place and only its doorways matter, and then it warns when most of the dungeon is sitting on one critical path. The rebuilt version has twenty-seven loops, an entrance ring that forks three ways and rejoins, hub rooms whose side galleries come back to the main corridor, two ramps at every change of level so even the descent is a loop, and a vault you can reach two different ways.
And then the good one. The walking map that monsters use to find their way is baked inside a box sized from the level geometry. The physics only refreshes a piece's collision bounds when something asks it to, and nothing was asking, so all one hundred and sixty-five pieces of the dungeon still reported the position they had at the instant they were created. The box collapsed down to the size of one corridor segment at the origin. In a dungeon three hundred and twelve metres long, the bake covered the entrance and nothing else. Eighty walkable spots in the entire place. One line to ask for a refresh first, and the same dungeon bakes three thousand six hundred and thirteen, in one connected piece from the front door all the way down four levels to the vault. The check meant to catch exactly this had been going green the whole time, because it confirmed every room could find the nearest walkable spot without ever checking the spot was anywhere near the room. A hundred rooms all matched the same handful of tiles by the entrance and passed with honours.
Japanese is written. Every NPC conversation line in the game, sixty-six thousand seven hundred and ninety-two of them, and that is all of them, plus item names and descriptions, quest entries and objectives, loading tips, skills and the interface. A hundred and nineteen thousand records in total. Native review is the next step, and that step matters, so hold your applause until a Japanese speaker has had a look.
The interesting part is how it was possible at all. Every language we have filled before had human translations already in it that we could mine for a glossary, so the same character's name would come out the same way in a signpost and in the sentence that mentions the signpost. Japanese had nothing to mine. So the tooling authored the glossary instead, three thousand five hundred and ninety-one conversation keyword terms and two thousand seven hundred and ten names of people, places and things, all settled before a single line was translated.
Choosing how to do the translation was done as a blind head-to-head. Five hundred records, two systems, a reviewer who was not told which was which, and the two candidates swapped left to right on half the records so that position could not skew the result. One won by about sixty percent to thirty-three, and its widest lead was in politeness level, which is precisely the part of Japanese that reads as broken when it is wrong. That same reviewer also caught a mistake in our own style rules, which I enjoyed rather more than I should have. A quest objective, or an entry the player has written in their own journal, is not a person speaking to you. We had specified polite verb forms everywhere, which made every objective read like an order being barked at the player. The rules were rewritten and all three thousand seven hundred and ninety-one batches re-exported so every one carries the correction. An automated pass over the finished result flags two hundred and forty-seven lines out of a hundred and nineteen thousand, and every one of those is something that should stay exactly as it is, such as the invented words of spellcasting and the Latin carved into certain walls.
While all that was going on, Simplified Chinese had a confession to make. Chinese text has been drawing about twice too light since the day we added it, because the font we shipped defaults to its thinnest weight and the renderer has no way to ask for a different one. Measured out at three hundred and twenty-four ink pixels per character against six hundred and fifty-nine for the correct weight. Every Chinese character in the game has been hairline thin. We ship the normal weight now, and the file is smaller than the one it replaced.
Three reports of black ground came in over two weeks from three different places, Solace Bridge Outskirts, Sequanna Colossus and Mistrendur, and they all had one cause. The terrain shader loses the version of itself built for the lighting method the game actually draws with when scenes are packed for release, so the ground near your camera rendered unlit while the grass, the trees and the distant hills all looked perfectly normal. The ground shaders come in pairs, near and far, and only the near half had protection. Both are protected now, with four automated checks so a future edit that drops them fails the test run instead of shipping. In-game bug reports also record your graphics settings now, because all three of those reports arrived without them, which made a driver cause impossible to tell apart from a content cause.
A permission handed out by a guild officer no longer outlives the officer. Kick them, demote them, or let them walk out of the guild, and the lot access they granted goes with them. The same applies to player vendors and tip jars, which had been staying open for up to six minutes after the permission behind them ended. Anything the lot owner granted themselves is untouched and stays exactly as they set it.
The social commands had a rough week and a good day. Paired dancing arrived, so two players can properly waltz together with a real invitation and both partners starting on the same beat, except that the invitation was never actually delivered to anybody, so the person who typed it saw "you ask so-and-so to dance" and then stood there alone. That is fixed. The new follow keybind shipped on a keypad key and followed whoever your mouse happened to be hovering over, so players spent the day trailing each other around with no idea why. That default is off. And the new mimic command, which copies another player's emotes, was documented as stopping when you move, and did not, so one of our testers spent several minutes helplessly performing everything another player did. It stops when you move now. It also stops when they walk away, when they leave, and when you ask it to.
And the combat deck window was rebuilt on the same day it shipped, because two players told us within hours of getting it. It had been opening a second empty window behind itself, and it gave each deck a three-line block with seven buttons wrapped across it, four of which were equip buttons with three of them always greyed out. One line per deck now, one Equip button, one Alt button, the rest behind a small menu. About fourteen decks fit at the default size where six did before.
The rest went by in a blur. Lot markers in player towns now flatten the ground beneath them instead of refusing to sit on any slope worth the name, which makes the larger lots placeable in a great many towns where they were not, and unclaiming a lot warns you first if there is a basement or a dungeon under it, with a count of what is inside. A hundred and seven cooked dishes stopped drawing the same empty wooden plate. Crown Shop purchases learned to ask how many you want. The video options grew a frame rate limit, and stopped occasionally resizing your game window down to the smallest resolution available and saving that for next time, which one player fought by dragging it back sixty-six times in a single session.
Somebody fixed the fountain in the Brittany Alleys, which had been pure decoration for who knows how long while everyone walked to the next scene to fill a bucket. A shadow bear in Spindelskog that had been spawning eleven metres from the arrival platform, which is to say on top of you, moved out to thirty-nine. Torch crates in sewers stopped crackling for minutes after somebody took the torch. Failed crafts stopped announcing that all fuels were consumed on the one thousand three hundred and eighty-eight recipes that use no fuel at all, butchering very much included. And Linux players in windowed mode can now click on the thing they are pointing at rather than the thing above it.
Thirty-one tracker issues closed. Something near a hundred and sixty changes went in. Whole rows of the interface rebuild fell over in one day, the vendor windows, the trade window, the property manager, both maps, the compass, the lot sign, the harvesting meter, and I will not read you the list because the list is not the interesting part. It was a Saturday.
What I am looking forward to is standing in the flooded vaults under Castle Atos with a frost blade in hand, getting lost on purpose, and coming out a different door than the one I went in by. That is the whole point of a dungeon and we very nearly shipped one without it.
And I am told the drainage runs beneath the castle now work exactly as they should, which makes The Cistern of Atos the first dungeon of my long career that I can honestly call a complete sewer-cess. Good night, my friends. Be excellent to one another.