Proofreading

Like King of Dragon Pass before it, Six Ages will have a lot of text. Which means a lot of opportunity for typos or other misspellings.

Most of the text is in OSL scripts, such as these excerpts:

saga: <expeditionLeader> was attacked, but returned home with <his/her> escort.
sagaText: The worshipers suffered the same fate.
text: We eventually pieced this together from stories told by wandering traders.

The scene compiler outputs all strings into a single text file. It looks something like this:

<expeditionLeader> was attacked, but returned home with <his/her> escort.
<expeditionLeader> was attacked and wounded, but returned home with <his/her> escort.
Unfortunately, <he/she> lost the livestock they were driving home.
<expeditionLeader> and <his/her> escort <disappeared mysteriously/were ambushed by trolls and completely devoured>.
The worshipers suffered the same fate.
We eventually pieced this together from stories told by wandering traders.

And that file can be spellchecked. I just use TextEdit. The biggest issue with proofreading is that the game uses a lot of proper names and jargon specific to Glorantha. Luckily it’s easy enough to add “Orlanth” to the dictionary (or the ignore list). More problematic is that variable names (like expeditionLeader) also show up here, though ignoring them usually works too.

Another issue is that it’s a big file. It may be generated by our tool but it still takes a human a while to review, so that doesn’t happen often (in fact the first complete review was today).

This is just a brute force pass. Many typos end up with words that are spelled correctly. And once in a while game-specific names get misspelled. So QA still needs to keep an eye open for problems.

Author: David

10 thoughts on “Proofreading”

How does stuff like work? It seems marvelously contextual and a PITA to implement.

I ask, both out of curiosity, and because it seems like the scene compiler ought to know enough to be taught to fill variable expansion with empty strings when generating output like that. I built something similar a while back for a job, except it did the inverse – it only printed out the variable names! Useful for tracking down typos in code, especially when you’re working with a tool specific language with debug tools thin on the ground.

The strings it outputs are the same ones that it needs at runtime. It would make the proofing pass a little easier if it stripped out simple variable substitutions like . Maybe it’s worth doing this. For finding errant variable names, there is a separate report with all variables, and new entries there are worth checking.

As for , it’s contextual at runtime. There are a limited number of pronouns like this, and the correct one is used based on the previous replacement. (OSL values that are people or deities have a gender associated with them.)

In the comments of the linked KoDP post someone had suggested using an online translating service for doing translations after the text has been rendered in English by the engine. This might be something to keep in mind for the future, as Google Translate has improved in leaps recently due to neural networks being utilized.

Probably out of the box Google Translate is not a suitable solution, at least not yet, but I just thought to bring this up as something to follow as machine translation has improved a lot and will probably keep on improving in the near future. Baidu and Facebook etc. are also doing their own neural network based translation stuff. Most likely the best solution would be to use some API to access the translation service and add your own tweaks to it.

Always online is a bummer requirement, but at least for mobile devices it’s kind of a given these days and I’m not sure if it would be a big issue even for PC if it was only used for translations.

Out of curiosity, I just tried some of the game’s saga (with French, which I can read moderately well). It sometimes did OK, but I believe it got several basic things wrong. And in one paragraph it translated a clan name once but left it in English the next sentence.