Episode
Windows, dungeon maps, and the day NPCs stopped saying outlander
A player standing in your garden could reach through a window and open the chest by your bed. That is fixed, and so is the reason two thirds of our voiced characters called everyone an outlander. Also on the show, every dungeon in the game gained a see-through three-dimensional map in a single day, the crafting table gained a queue, and the test shard admitted it had been letting in sixteen people.
In this episode
- Reaching into a house from the garden, closed
- Every dungeon gets a see-through 3D map
- Voiced NPCs stop calling everyone outlander
- A full day of crafting quality of life
- The push toward two thousand five hundred players
Transcript
Hail and well met, citizens of New Britannia. Lord British before thee, with an accounting of what thy makers were about on Thursday. Every dungeon in the realm now surrenders its true shape unto thy map, drawn in the air before thee, filling in as thou walkest. The voices of my people have ceased calling every soul who passes an outlander. Thy crafting table has learned patience, and a queue, and something very like manners. And a stranger could stand upon thy garden path, reach through thy window, and help himself to the chest beside thy bed, which I am pleased to say is no longer so. That last one first, for it is the story I like best.
So. Picture your house. It has windows. Real ones, with openings you can see through, because that is what a window is for. Now picture someone standing outside on the grass, in your garden, looking through that opening at the chest by your bed. And picture them opening it. Taking things out of it.
For as long as we have had player housing, the game asked exactly one question before it let you touch something. How far away are you? Under five metres? Wonderful, go ahead. It never once asked whether there was a wall in the way.
House walls are thin. That is the whole trick, and it is not much of a trick. Stand on the far side of a bedroom wall and the chest inside is comfortably within five metres of you. The window opening was not even required. It just made it obvious, because you could see the thing you were about to help yourself to.
Now, the obvious fix is to check line of sight. Draw a line from the person to the item, and if a wall interrupts it, refuse. That does not work here, and the reason is rather lovely. In almost all of our two hundred and eight house designs, a window opening is a hole. There is nothing there. No glass, no invisible pane, nothing for a line to bump into. So a line drawn from the garden to your chest has a completely clear run, and the game would look at that clear run and say, quite correctly, that nothing is in the way. The geometry is not lying to us. We were asking it the wrong question.
What actually separates the two of you is not something between you. It is which side of the shell of the house each of you is standing on. And the game already writes that down twice, for other reasons entirely. A decoration remembers what surface it was placed against, so it knows whether it is sitting on an interior floor, an interior wall or an interior ceiling. And the world can be asked what is overhead at any given point, which is how it knows whether you are under a roof. Put those two together and you have your answer without drawing a single line. Is that item indoors? Are you indoors? Same building? Then help yourself.
And it remembers which building, which is the part I like. Standing inside the row house next door does not count as standing inside yours. Better still, when any part of that is unclear, the check stands down and behaves the way the game always did. That is what keeps pavilions and covered porches and every home with open sky over its own floor working exactly as before. Anyone you have granted move, modify or take rights to is exempt, so your friends and your trusted decorators notice nothing at all. And a container you opened from the doorway now shuts itself when you wander off, which is only polite.
Right. Dungeons. In one day, we went from a design document to every dungeon in the game carrying a see-through three-dimensional map, and I am still slightly giddy about it.
Here is the thing about a dungeon map. A flat floor plan of a dungeon is a lie of omission. The Rise has four floors that fold over each other. Draw that flat and you get spaghetti. So instead of drawing a plan, we now bake a small transparent model of the actual shape of the place. And the clever bit, the bit I want to tell you about, is where that shape comes from. Every dungeon already carries a mesh that describes where a creature can walk. It exists so that a skeleton knows not to stroll into a wall. Nobody built it to be looked at. It is the negative space of the dungeon, the walkable air inside the stone, and it has been sitting in every dungeon in the game this entire time.
So the bake tool takes that walkable surface and boils it down. The Rise goes from a hundred and fifty thousand triangles of navigation data to a model of about ten thousand, split by floor, with the fog of war stamped directly into the mesh so the map and the model can never disagree about where you have been. Press M in a dungeon and it is there. Drag to spin it, roll the wheel to zoom, and you are a glowing beacon inside it with an arrow for your heading. The floor you are standing on brightens. Everything you have not walked stays dark until you walk it, and it fills in around you as you go, fourteen metres at a time.
The pilot did not go perfectly, and the failures were instructive. The first live walk-through found that on maps whose calibration is flipped, the fog cells came out mirrored, so you would explore a corridor and watch the corridor on the other side of the map light up instead. Very atmospheric. Not useful. Then the first look at the model showed stray polygons slicing across it like a badly carved joint, because one catch-all floor spanned a hundred and three metres of geometry that overlaps itself in plan, and the mesher smeared surfaces between levels. Splitting floors into height layers sorted it, and the rooms started reading as rooms.
Then the fleet. Fifty-nine dungeons, sewers, mines and undergrounds, all baked in one twenty-minute batch, zero failures, a typical dungeon coming in around three thousand triangles. Every one of those places used to show you a placeholder card with a joke on it where the map should be. That card has had a very long run. It is retired. Two scenes did have calibration that disagreed with their own fog data, and the safety check caught it and switched their fog back off rather than shipping you a map that lies, so those two keep the joke a little longer. And our testers can now clear a dungeon's fog or reset it back to unexplored, so they can walk the same reveal ten times in an evening without rolling a new character.
Now this next one is embarrassing, and it is the good kind of embarrassing, where the answer was sitting in front of us the whole time.
Our characters do not know your name. Most of them, anyway. So when they address you, they use whatever word suits who they are. A guard calls you friend. A suspicious farmer calls you stranger. A kobold has opinions and calls you human. There are around ninety of these, written per character, and they have been in the written dialogue for years, doing exactly what they should. And then we gave the game voices, and every single one of those characters, out loud, in their own recorded voice, called you an outlander.
The word was right there. Stored on the character. The written line said friend. The voice said outlander. The voice pipeline was never taught to read the field. Nineteen hundred and forty-five of our two thousand eight hundred and seventy-three voiced characters were affected, which is roughly two thirds of everyone who speaks in this game, cheerfully saying a word their own text did not say, for as long as we have had voices.
And while we were in there, we found the second half of it, which is worse. Some characters share a conversation file. Generic townsfolk, mostly. Brittany's guards all read from the same script. The tool that generates the voice lines was only ever recording the first name in each of those groups. So the word "Guard" got a recording, and Lucas Porter did not, and neither did Neil Landry, nor the four other people standing behind that same file, all of whom have a line where they say their own name and all of whom said it in total silence. Six hundred and sixty-nine characters were mute on their own name. Four thousand one hundred and thirty-eight clips were regenerated to fix both problems at once.
Two smaller voice things landed alongside. An NPC now stops talking when you leave the conversation, rather than finishing the sentence at your back while you walk away. But if you click Goodbye, the farewell still plays to the end, because the conversation closes a tenth of a second after that line starts and cutting it off would have clipped every goodbye in the game. And NPCs no longer call out their little greetings at dead players. You are a ghost. They cannot see you. They now behave accordingly, no bubble, no voice, and no turning to gesture warmly at an empty patch of air.
There is a much larger thing underneath all of that, which is that we spent the day building a proper home for NPC dialogue inside our own editor, and moved all four thousand six hundred conversation files out of a storage format where two people editing the same character produced a mess nobody could untangle. It also came with a much stricter checker, and the checker immediately found real problems in shipped content. Fifteen character-to-character exchanges aimed at people who no longer exist, so those lines never play. Four characters bound in a way that leaves them silent. Eighteen emotes that are not emotes. That is the sort of thing you only find when you finally build the tool.
Crafting had an enormous day, and I mean that literally. If you craft, tonight's build is going to feel different in about eight ways at once.
The table remembers now. Set a batch of twelve iron ingots and the next time that recipe comes up it says twelve, per recipe, per station, per character, and it survives logging out. An empty table offers to do the last thing again by name. There is a Max button that sets the count to whatever your staged materials will actually make. The recipe list can be sorted at last, by name, by your chance of success, by how many you could make right now, or by skill, and the recipe names carry a colour from red through to a dim grey as the odds improve. You can star a recipe and it floats to the top wherever it appears. The search box reaches past recipe names into ingredients and results, so typing iron ingot finds the recipe that makes one alongside the hundred that eat one.
My favourite of the batch is the smallest. Double-click a recipe you cannot afford, and it used to clear your table and put one vague line in the chat log about missing ingredients. Which ones? Well. That is between the recipe and its conscience. Now it names them, under the summary, in red. Missing for Longsword, one sword hilt, two iron ingot. And it tells you the shortfall rather than the requirement, so if you need three and have one, it asks for two, which is the number you were about to work out on your fingers.
There is also a Quick Craft option, off by default, that finishes a craft instantly and grants no experience. Everything else about it is unchanged, the materials, the failure chance, the wear on your tools. It is a straight trade of experience for your evening. And there is now a batch queue, so you can stack another recipe onto a running craft and walk away. A queued batch of five costs exactly what a batch of five has always cost. What you get back is the time you were spending sitting there pressing a button.
And one real defect went down with it, which has been in batch crafting since the day batch crafting shipped. Clicking a recipe in the list while a batch was running could pull your ingredients back off the table underneath the craft. The rest of the run then produced nothing at all, and your materials ended up split between the table and your pack, in a way that looked very much like the game had eaten them. Recipe rows now sit still for the duration of a run.
Now here is a number that stopped me. We began the push to get two thousand five hundred players onto one shard at once, which is what the original service used to carry on far weaker hardware than we have now. Day one was an audit, a four-week plan, and a ladder of load tests that starts at two hundred and fifty simulated players. And somewhere in that audit we discovered that our test shard has been refusing to admit more than sixteen people. Sixteen. A development default, set years ago, quietly deployed ever since, and it would have capped our two thousand five hundred player load test at sixteen logins. It now deploys at two thousand five hundred, the same as the live service always allowed.
The first round of actual fixes went in the same day, and they share a theme worth naming, which is that a great many things in a server are fine at one hundred players and ruinous at two thousand. A line of channel chat used to be packed up separately for every single player who could see it, so one sentence at full population meant thousands of identical passes over the same words. It is packed once now and sent to everyone. The list of zones a client receives went out as one enormous message that a busy shard could drop whole, leaving you staring at an empty list. It goes in measured pages now. Every player was a permanent subscriber to updates about the zone list, forever, including the ones they never look at. That subscription now closes the moment you land somewhere. And the roster the two social servers exchange once a minute had a fixed size limit that would have broken past a couple of hundred players, which is a fine way to discover a problem at exactly the moment you least want to.
We also built the thing that proves it. There is now a bot swarm that holds any number of simulated players the way a real player is held, all four connections open, idling, chatting on a schedule, relogging a few times an hour, plus a conductor that spreads them across machines, watches them, gathers every result and merges it into one pass or fail. The two hundred and fifty player rung is loaded and waiting on the next deploy.
Three things about your Mac, if you play on one. The mouse cursor no longer vanishes forever the first time you hold the right button to turn the camera. It still worked, it still clicked, you simply could not see it for the rest of the session, which is a fun way to browse a menu. And we built a Mac launcher, which Mac players have never had, meaning every build meant re-downloading sixteen gigabytes of game. And then the first release of it did not install the game. It installed a copy of itself, into a folder, and then showed you the same install screen again. We fixed that, ran the whole thing end to end on a clean Mac, which is precisely the step the first release skipped, and there is a working launcher on the tester page now.
Something new to play with, if you get lost in towns. There is a guide light. Open your map inside a town, click a marker you have already discovered, and a light rises beside you and flies the walking route ahead of you, pausing at each corner so you can see which way it turns. It never moves your character. It fades on its own after a few minutes. You can also summon it by typing slash guide, or bind a key, or switch it off entirely in Options if you would rather not. It only ever leads to places you have already found, and it refuses to enter dungeons, basements, sieges, battlegrounds or the overworld, because working out where you are is rather the point of those.
For the decorators, an optional Tighter Fit mode. Turn it on and the item in your hands gets a placement footprint a quarter narrower, so a chair will finally go under a table and two crates can actually touch. Only while you are placing it. Once it is down it has its full size back. Containers, crafting stations and planting beds keep their real footprint so you can still reach them. Speaking of which, three elven planting beds could not be placed at all and gave no name when you hovered them, both from one missing piece, and the check that stops you sowing into a bed something else is intruding on had come unwired on six of the nine beds.
And in your backpack, three mercies. Rows are back to the height they used to be, which means a full backpack shows about forty-one items instead of twenty-six. Take All no longer slams the container shut the moment it finishes, which was especially unhelpful when part of the contents were too heavy to carry and left with the window. And the column headings say Durability and Quantity in full, rather than abbreviations our testers reasonably read as text the window had cut off.
Lightning round. The charge bar and five of its relatives came back from the dead, having been invisible because a styling rule was never written, which collapsed each of them to no size at all. The tests were green throughout, because they measured percentages, and a bar of no size satisfies a percentage perfectly. The new tests measure actual pixels. Body Slam, Charge and Engage work on rooted enemies again, because the code was checking whether the target could move before letting the caster move, which is a wonderfully specific way to be wrong. Five separate faults in the Edit Deck window went down in one pass, including a school of magic that has never had a filter box.
A hundred and fifty items closed on the tracker, and a good chunk of that is a story about ourselves. Our tester reports were being read by an automated sweep that only understood one format. Our own task template asks testers to write a different one, which is what almost all of them sensibly do. So the sweep understood none of it, and eighty-one reports sat parked where nobody would open them again. One pass cleared the lot. A hundred and twelve reports read, sixty-eight new bugs filed and assigned, nineteen reopened, and fifty bugs our testers had filed themselves that had been sitting with nobody's name on them.
The rest is the usual honourable rabble. Chat tabs can be dragged again. Floating names take clicks again. Vendor listings stopped opening two windows at once. Windows you left open stopped following you all the way to the login screen and drawing over the form. The loot countdown finally reaches red, having spent its entire life with the red band hidden behind the yellow one. Watchers drop their metal scrap every time instead of once in a thousand kills. And on the test shard, you can reset your quest progress as many times as you need, because the old limit was tied to a date that stopped being moved forward in 2022, which meant anyone who used their one reset was locked out of replaying quests permanently. Some bugs are simply patient.
That is Thursday. It was a big one, and the parts I keep coming back to are the ones where the answer was already in the world and we just had not asked for it. The walkable space in a dungeon was always the shape of the dungeon. The right word for you was always written on the character who says it. Tonight I am going to go and walk The Rise slowly, watching it draw itself, and I recommend you do the same.
One last thing. Why did the Mac launcher install a copy of itself instead of the game? Because it had a very strong sense of self, and absolutely no sense of purpose. Good night, my friends.