THE MYSTERY OF THE SANTA MARIA
RSS
← Devlog
v0.41.0–v0.41.24 · text · interface · testing · revision

One bracket too many

The Communications Module during a conversation with Yusuf: his close-up on the left, the log of exchanged lines on the right, and the panel with the five available replies along the bottom

Every time you enter a room, the Santa Maria tells you where you can leave from. It puts a heading above the list, and that is the line a player sees more than any other: it appears on every entry, in every room, from the first minute of the game to the last.

That line had two square brackets on each side instead of one.

It was not tucked away in some side branch of the story. It sat in green, at the top of the space where everything else gets read, and anyone who has played this game has had it in front of them a few hundred times.

Three separate blind spots, and each one is right

The mistake itself takes a minute to fix. What kept us busy was the other half of it: none of the tools that check this game could have found it, and not through carelessness. For three distinct technical reasons, each of which, on its own, is the correct decision.

First. The program that measures and checks the text deliberately skips system lines, the ones that are interface rather than speech. If it did not, it would fill up with fragments of code, and on one earlier occasion it did exactly that. So as far as the counter is concerned, that line does not exist.

Second. The extra brackets were not written in the text. They are added by the part of the program that draws the panel, and it is right to do so: that is how every other system line gets its own. The flaw is that this particular line already carried a pair from home, and was handed a second one.

Third. The automatic code checks were happy. These are two valid pieces of text that, put together, compose something wrong. No compiler holds an opinion about that.

Three nets with different mesh, and the error fell through the gap in all three. It was only visible by looking at the screen.

The panel that could not light up

Two more of the same family turned up in the same week.

The game has a courtesy panel for when an image fails to load: it says the signal is unavailable, so instead of an empty room you get something that still makes sense inside the fiction. That line had been rewritten during the revision, discussed, approved, counted as work done.

It could not appear. A layout rule kept it hidden as long as the image element was present on the page, not as long as the image worked. And the element is always present, because all ten rooms have their illustration. A missing file did not remove it: it left it there, broken, with the courtesy panel switched off underneath.

The first automated check came back clean. The panel measured over five hundred pixels tall, therefore present. That was true and meant nothing: at that moment the character portrait had inserted itself between the two elements, the rule had stopped applying for an accidental reason, and the panel was sitting underneath the portrait anyway. Green in the measurement, invisible on screen.

Two labels with no space between them

The third one is visible in the image above, which is why we chose it.

The bottom panel, the one holding the available replies, has a heading like every other panel: the panel’s name on the left, whoever is on the other end of the line on the right. In the image you can read DIALOG_CHOICES on one side and YUSUF — CANALE CRIPTATO on the other, pushed out to the right edge.

Until yesterday they were stuck together. Not close: touching, without so much as a space, in every conversation in the game.

The text was correct. What was missing was the layout rule that keeps the two labels apart, and missing in the literal sense: it did not exist. The game’s other three panels each have one of their own, this one had been left without, and the distance between the two labels, measured inside the running game, was exactly zero pixels.

The batch the counter could not read

The reason we were in among all this is that the last two batches of the revision touch the interface: first the shell that holds the screens together, then the menus, the overlays, the inventory, the map, the log, the settings.

On these files the text-measuring program was blind. The work plan declared ninety-four phrases to reread. Counted with the corrected tool they were two hundred and nineteen, and the scope went from thirteen files to eighteen, two of which came into existence after the plan had been written.

Fixing the counter brought a surprise in the other direction. It reads far more than we thought: it picks up text written directly into the page, text inside vector drawings, and the accessibility labels attached to buttons. The document that opened the batch said the opposite, and it was wrong. We noticed by applying an ordinary correction and watching the count move on its own.

Twelve batches

The shell batch changed two sentences in total, and rightly so: most of that text is machine register, and the rule says not to prettify it. The interface batch changed more, across fourteen versions, one file per version.

With this, the text revision is finished. Twelve batches closed out of twelve. Thirteen were numbered, but one was dropped months ago, when we found that the file it covered had nothing in it worth revising.

It started in late May, always with the same method: two files at a time, a table approved line by line, applied to the letter. If a replacement does not match, you stop and ask; you do not improvise.

Two apostrophes in the whole game

One last thing had been deliberately held back for the end. Purely typographic corrections, meaning apostrophes, quotation marks, ellipses and double spaces, had been removed from the individual batches because they cost attention without ever finding anything worth the price. The agreement was to do them all at once at the end, with a program, in a single pass.

The pass found two genuine infractions in the entire game. Both in the same file, and zero wrong quotation marks.

The first attempt was wrong, though, and it is the more useful half of the story. Searching whole files, the program flagged over a thousand badly placed spaces: almost all of them were pieces of code that happened to look like punctuation to a search. Rerun on only the text a player actually reads, the list dropped to six cases, all of them intentional. They are the dots that align the columns on the on-board terminal’s boot screen, and they resemble an ellipsis without being one.

The two real apostrophes were a different character from the one the rest of the game uses. The reason is practical: at that point in the code the correct apostrophe has to be written in a slightly awkward way, and the wrong one works with no special handling at all. It compiles, it passes every check, and only someone looking for it will see it. In the game’s other files that bit of awkwardness appears dozens of times. In that one, not once.

Meanwhile

There is nothing new to do in this version. There is an interface that says the same things with the right punctuation, an emergency panel that can now actually appear, and a heading without a spare bracket in front of whoever is reading.

What we are taking away is less comfortable. Of these three flaws, two were caught by a screenshot while every automated check was saying yes. The tools stay, and over these months they have found things we would never have caught by hand. What changed is the moment you stop looking: now, after the program says it is fine, the game gets opened anyway.

The test build in our testers’ hands is still the one from 30 July, where it has sat for the whole revision. Now that the revision is closed, it can move again. That copy stops working on 6 August, as its own start-up page states, so the next thing to happen on this project is a new build.