Optimizing for Different Platforms
In this week’s update, we’ll be talking about the process we’ve been doing to optimize and stabilize Outer Wilds.
Outer Wilds is currently in one of the most tedious and important parts of game development: optimization. The tedium comes from the tasks involved, which usually involve combing through lists, organization of directories, and cleanup of various kinds of files. Everyone on the team contributes to the balancing act between the quality of the assets, improved frame rate, and finding the best user experience possible.
The general balancing act of optimization involves a number of different aspects. There is a constant tug of war is between visual fidelity and frame rate. The push for visual fidelity involves getting the game to run at the highest resolution possible without reducing the quality of textures, models and visual effects. Improving the frame rate (how many times the screen refreshes a second), makes the game respond more immediately to button inputs and how smooth the image is when moving the camera. Both are imperative to a game feeling good to play, so balancing these two aspects is a constant struggle throughout development and especially in the final pass before shipping the game.
When optimizing for various platforms, the specs of each platform become a deciding factor for the priorities of each optimization. At the moment our focus in is on PC (Windows) and Xbox One. For Windows machines there is a huge variety between high and low end PCs, while Xbox One has less than ten out of the box hardware options. While we want to use the additional power provided by higher end platforms, we also want to make sure users with lower spec platforms can enjoy the same core experience. There are also bugs and glitches that are unique to each platform due to differences between processors, graphics cards, memory and hard drive space.
For months now, our team has been hard at work on optimizing a variety of different performance issues. Performance bugs come in many varieties: hitches, spikes, dips, and reliably slow areas. Hitches, spikes and dips are usually caused by a specific error in a script or asset, which needs to be hunted down and cleaned up. Slow areas usually just require tightening the belt of memory usage, reducing quality or number of assets, or being more aggressive with suspending other parts of the game to alleviate resources.
Testers (a combination of HUWIZ and our internal team) go to each corner of the solar system and compile the raw data of each areas frame rate using a counter on screen and testing various behaviors in each area. From here they focus on combing through areas that had unexpected or unstable behavior. The next step is to determine priority of each issue and isolate what the culprit of the performance hit is. This is done with a series of simple tests aimed to answer some of these questions: ‘Does this frame rate drop happen when I look at a specific asset or in a specific direction?’ ‘Is there a visual effect or piece of audio that could be involved?’ ‘How reliably can this frame drop be reproduced?’. Answering these questions makes it easier for the Tech team to begin diagnosing.
When the testing team has collected enough information to reproduce the frame rate drop our Tech team can collect more detailed information with a tool called a profiler. A profiler acts as a log that captures millisecond of what is happening on the backend, displaying a visual graph that shows how much time each script and asset takes in that fraction of a second. From there we can see obvious problems or choose areas to do further research into. For issues that don’t seem to involve our own assets and scripts we send tickets to Unity for feedback, insights ,or bug fixes on their end. The team also has to be extra careful that a new optimization or bug fix doesn’t introduce new bugs to the game.
Pictured above is what the Profiler looks like while the game is running. From this the Tech team can see what is responsible for any slow downs we may see.
At this point in development the whole team is in a routine of making a fix, testing to be sure that the fix works, and ensuring the fix doesn’t introduce new problems. We often joke that just like the character in the game, we are stuck in our own time loop of game development, seemingly fixing and polishing the same issues over and over again. Despite how the grind feels, however, every day that we pour into Outer Wilds contributes measurable progress towards our goal of releasing the most polished and fun game we can produce as a studio.
The Game Awards
For those of you looking for something to watch next week, The Game Awards will be on December 6th starting at 5:30 PST.
This is an important evening for video games and we want to encourage all who can to tune in via preferred streaming platforms. As developers we think it’s important to support not only the games that are part of Annapurna’s library, but also those games that have innovated and changed the way we understand the medium in the last year.
XBOX Pre-Orders Technical Difficulties
For those of you who didn’t catch our post on Twitter about our vanishing product page:
This week we’re taking a look into the art of localization.
In our last update we hinted that Outer Wilds is going to be localized to eleven different languages! For those of you who are curious: English, French, Spanish, German, Portuguese, Italian, Polish, Russian, Japanese, Korean, and Simplified Chinese.
Similar to our update on Quality Assurance we as a development team think it’s important to shed light on part of our industry that is often overlooked. The development team has been working directly with the Lionbridge’s localization branch. For those of you who are unfamiliar with the field of localization, it is a lot more than just directly translating text.
The pillars of localization for Outer Wilds include maintaining the context of each piece of text; ensuring that clues are still directing players correctly throughout all the languages the project is being translated to; ensuring that the tone of different characters voices are consistent; and that broad concepts important to the story are not lost in translation.
On a technical side localization includes managing hundreds of xmls created by both the development team and all of the localization teams from across the world. The localization team is creating content that will be read in-game which requires knowledge of correct xml formatting unique to our project.
Below is an an example of how Nomai writing is formatted in xml. The overall format is similar in every Nomai text file, however the subject matter can be anything from a trail marker (like our example) to banter between characters about the best way to conduct an experiment.
The <![CDATA[<color=orange>Crossroads</color>]]>\\n(west 350m)
An example of how Nomai text is formatted.
Directly from Lionbridge, here are some insights into how the teams localized the planet names:
In German, Brittle Hollow was initially treated as an entity name. This means we were not adjusting the adjective (Brittle) in German translation, but kept it fixed as part of the name.
However, the newer lines make multiple references to targets on or near Brittle Hollow, going towards it etc. This makes the decision to not apply the grammar rules stand out more in German, so we reverted to treating it more akin to a description. Instead of originally “I am going to Brittle Hollow” it would be more like “I am going to the Brittle Hollow” now, which makes for better readability and implementation in the text.
Timber Hearth – Drewniana Przystań (back translation of this means Wooden Haven, literal translation would be very weird in Polish) it is the home of the Hearthians. In Polish Hearthians were translated as “Dziuplanie” and was already present in glossary. “Dziuplanie” means literally the people who dwell in tree hollows. The guideline is to have these peoples names relate to the Hearth, however the translations made with that in mind do not sound very good. We preferred to stick to Dziuplanie in this case.
Attlerock – Bezgłazie – “A lifeless rock like our own moon, it combines rock with attle (discarded rocks from mining)”.
The current Polish translation means literally “a place without rocks” which with the new context provided, makes no sense. We have changed that name to “Głaz.” Głaz means simply a plain rock, that does not contain any minerals. In conclusion: Attlerock: Bezgłazie became Głaz.
Working with Lionbridge has required open lines of communication between the development team here at Mobius and the managers at Lionbridge. There are roughly 45,000 words in the English version of Outer Wilds. All of this text is unique and has unique clues, context, and story. By working closely with our localization teams and providing as much context for every question, we feel no matter what language you play Outer Wilds, the mysteries will be both compelling and challenging.
From the development team, much like Dark Souls warned players to ‘Prepare to die’ we want to prep players to ‘Prepare to read.’
A letter from our localization teams:
Outer Wilds: A Beautiful and Challenging Journey in Localization
Outer Wilds is definitely one of our favorite projects of this year. To give voice to two alien races with different characteristics has been really fun, as well as quite challenging.
In Italian, for the Nomai, we decided to use a more old-fashioned Italian, with some obsolete terms; on the other hand, for the Hearthians, the language used is more direct and colloquial, to better mirror their essence.
One of the biggest challenges was to find effective solutions for the gender-neutral essence of the Hearthians speech, because in Italian there is no neutral option, like the English "It", but it was also part of the fun.
For Portuguese, when localizing a project like this one we faced some challenges such the visual of the planets or the characters. Specially the planets. In the beginning of the translation process we didn’t have access to how the planets look like, so it was a bit difficult, though we could figure along the way. So when we indeed received the images from the developers, we must say we were thrilled, because we could now picture the whole system and bring them into our translation.
For Polish, the first challenge we have encountered when translating Outer Wilds was the grammatical gender for use in Hearthian texts. In Polish, this affects not only pronouns, but also e.g. verb forms. Eventually, we have decided to use male forms, although for a moment we have toyed with the idea of inventing neuter forms – but these would be too unusual for the players.
Localizing Hearthian names was challenging, too. Some of the rocks have really long and “scientific” names in Polish – for example Tephra is “materiał piroklastyczny” – so we looked for more archaic terms or invented our own names based on the characteristics of the particular rock. Furthermore, some names have typically feminine forms (e.g. Mika or Galena), but we had to use masculine declination. Fortunately, there are several real names which are inflected in a similar manner, and we have used these as models for the declination of Hearthian names.
Finally, there was the issue of using different names for the Nomai Vessel and Hearthian ships. In Polish, there is one general term for spaceship – “statek” – which was chosen as the translation of “Vessel”. For Hearthian ships, at first we thought about using the archaic term “kosmolot”, but in the end we came up with a completely new name “kosmolotnia” (literally “space hang glider”), which in our opinion fits nicely with the outdoor theme of Hearthian culture.
Russian team felt that this was a very interesting project overall. By the end we've surely learned a lot about the stars, the plants, and the minerals. The Mobius team have helped us localization teams a lot by thinking through Nomai and Hearthian speech style and grammar, though working with hundreds of .xml files instead of several .xlsx was a challenge.
Translating the Hearthian dialogues was the hardest part for us because Hearthians are genderless species, and the Russian language is very gender specific. So, we had to manage without most of the pronouns, the adverbs, and the past tense verbs. The names of the planets were probably the most fun to translate.
For French, the biggest challenge in this project was probably having a whole species of agendered characters, as there is no neutral pronouns and grammatical forms in French (well there are, but they are identical to masculine).
While English would work around the issue with using "them/they", French was only left with the option of using Hearthian characters' names when they were referring to each other, which would have quickly sounded really weird, even for aliens. So we had to find creative ways to convey the same intended message while avoiding to reference other characters as much as the source text would. Likewise, we tried avoiding such things as adjectives with different forms in masculine and feminine so as not to give out any hint of a character being male or female.
We also used several nicknames borrowing from the lexical field of rocks and stones, alternating between masculine and feminine ones, allowing to make use of some otherwise "prohibited" adjectives when it felt a better choice.
Nomai texts and their somewhat alien speech were also a challenge in themselves. It wouldn't have been as much as a problem if the transcriptions went down the path of full-blown strangeness, but the weird parts were just subtle enough they could have been mistaken for mistranslations from the localization team should they have been translated literally. We opted to force a little bit more the bizarre where it appeared so as to make clear it was intended. Although it would depend on each case, most of the time it revolved around using well-known figures of speech and switching one of the words in it with another one with the same meaning but more academic or literary in its use.
Planet names would have been way too long for French if left as is, so we tried finding them single-word names that would have a better ring to it while still being quite evocative of what you're expected to find on them (i.e., Giant's Deep become "Léviathe", a reference to the Leviathan, which would convey both the idea of being huge and related to water). The only exception would have been the Hourglass Twins, as both the collective name and each individual planet's name had to refer to each other, and it seemed a more logical choice to use a naming similar to the Milky Way or other groups of astral bodies. Keeping the Twin part as the common part in the name of both planets seemed too redundant in French (if their name echoes to each other, it's already implied they're twins) so we preferred focusing on the main feature, the Hourglass "mechanic", while using each planet's respective color to distinguish them from one another.
Organization of dialog files: the NPC lines and the player lines were scattered across the file, which sometimes made it harder to remember what question the player was answering, for instance.
Our German team is delighted with the project and to work at with the great game concept behind it. One of our favourite things was, bit of an odd one, finding the appropriate names for the Hearthians, since they are all are derived from minerals and different types of stones. I learned a lot by scouring Wikipedia over the German equivalents of Porphyrite, Esker or Riebeckit.
We kept the Nomai names as is in German, but they are all referencing Flora, we thought that was a wonderful touch that isn’t in your face at all.
Similarly, the different ways of speech were fun to implement between the Nomai and the Hearthians. In a way, the translations for the Nomai were left a bit more unedited by us – a tiny bit stiffer, oddly phrased, without flair. Editing a translation would normally iron these flaws out, but for the Nomai, we purposefully kept some of that awkwardness as is. We tried to make the Hearthian speech even more warm for it, and I’m really happy with how it came out.
Our biggest issue were two things regarding the Hearthians. The first thing was their home planet, Timber Hearth and their referential name, Hearthians. In English, “Hearth” is also close to “Earth”, and we played with the Idee of “Herd” and “Herdlinge” als possible translations some time to keep it close to the German “Erde”. We ended up straying from the English a bit more with the Planet being called “Holzkamin” and the race being called “Kamina.” “Kamin” carries the idea of a hearth as a warm, homey gathering spot much more, and Kamina allowed us to make their race name a bit more gender neutral and less whacky. I really hope this will resonate well with players.
The bigger part was the idea of Hearthians being without gender. Since they are mineral beings (with the implication that they simply hatch or grow out), they don’t specify as male or female, meaning the player will also never be referenced or approached specifically as male or female.
For German, this was a very daunting task, since the German language is very heavily gendered with the way adjectives are used and how there are specific expressions for female job names or titles only, and the male form is considered “neutral”. We had big discussions about how to convey the idea of the genderless race, did research on intergender expressions and language and considered different approaches. We ultimately settled to try to write “around” the gender of the Hearthians as much as possible, and while I understand that this is disappointing for people that are fighting to make German a language more suitable for different forms of gender expressions, I hope I can explain a bit, why we settled for this path of least resistance ultimately.
We feel that the Hearthians don’t have a concept of gender for themselves, not considering themselves intergender or a specific “new” form. We wanted to avoid using disruptive or “new” language for them, since this is never specifically addressed or explained, and we didn’t want players to be addressed in a gender identity that they don’t feel comfortable with, when the more appropriate idea is, that the player is interacting with a race that doesn’t feel the need to address sex that way at all. The Hearthians build their connection without gender, their friendships, and also their own identity. We hope that we were able to allow players to be part of their Outer Wilds Venture in the same way!
We really want to thank Annapurna and Mobius for giving us enough time and context material to really do our best with the translations. We hope the translation helps lots of different people to experience the game for themselves and makes them enjoy their journey even more.
Annapurna Online Store
We’re excited to announce that our publisher Annapurna has launched the online store! You can now buy a PAX Outer Wilds pin, should your heart so desire.
Our PAX pin on that jacket of a Mobius team member.
T-shirts and patches will become available a month after they are sent out to backers. The specific dates for this have not been decided, but as always tune in here to get the latest announcements!
XBOX Pre-Orders Technical Difficulties
For those of you who have a pre-order for Outer Wilds on Xbox we seem to be experiencing some technical difficulties and are currently looking into what is the culprit. Thank you for those who reached out to us to let us know about the problem.
That’s the End of This Update
Just wanted to take a moment to wish everyone a Happy Thanksgiving, which will be next Thursday in the US. The team at Mobius is thankful to have all support from our fans throughout all these years! Thanks to all of you who are writing in with your words of encouragement!
Join us in another two weeks for another development update. Have a great weekend everyone!
After last week talk about quality assurance, we have a shorter update for you this week, with a sneak peak into the new music for Outer Wilds and an announcement hinted at in this intro.
Outer Wilds is Translated!
We are really excited to announce that Outer Wilds will come localized in 10 languages other than English! The languages that will be included on launch are: French, German, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish and Simplified Chinese.
We’ve met many alpha players and people at conventions asking about localization, so we’re hoping that this will allow a much wider audience to enjoy reading the ancient alien text hidden throughout the solar system.
A lot of new music has been implemented into the game. Today we'll focus on some new Nomai music. Let's take a musical journey from the Nomai Sun Station, then back to Timber Hearth at the Museum, where the Hearthians log their studies:
Updates on our games, our process, and the joys of being Mobius Digital.