Localizing A Game Demo in Unity

Introduction

As part of an exploration into the capabilities of Unity’s Localization package, I worked with a team to localize the demo of Untold Atlas, a romance RPG/visual novel developed by Nochi Studios. The game is choice-driven, leading to large amounts of dialogue to cover. It also has interesting features, like an in-game group chat and expedition-themed minigame. The game trailer is available below.

Explore the demo on Itch.io

Localization

This project was done in a six-person team. Our goal was to make the game demo fully playable in Japanese, including the minigame. Our first task to achieve this was locating all the elements to be localized. We did this by combing through the source code and Unity project, then collaboratively creating a spreadsheet to track everything we found. The sheet was also used to divvy up work amongst team members, track our progress, and add troubleshooting notes.

Image of a spreadheet detailing locations of text strings

GitHub

Our next hurdle was coming up with a workflow that would allow all 6 team members to work on the project collaboratively. However, it would be massively impractical to try to share the Unity project back and forth as we progressed. Instead, we turned to GitHub. All team members downloaded GitHub desktop and made a clone of the demo repository. Then, we each created a new branch for each section of the game we were working on. One member of our team was designated as our GitHub manager, who would merge branches after pull requests were submitted. Having different branches for each section and user ensured that if merge errors did come up, we were quickly able to locate where the error came from.

After some initial troubleshooting, and creating a standard Git workflow to follow as modified things in Unity, we were able to successfully merge changes made by other users to our respective local copies of the game and create a fully localized demo.

Unity Localization

The localization for the demo was primarily done using Unity’s localization package. While this package is not preinstalled into the engine, it is very simple to add in. The localization package allows localizers to generate locales and create string or asset tables. The package adds a “Localize” option to relevant menus, which then opens a component to add assets/strings to the tables. Translations can be entered based on what locales were generated when the tables were created. The localization package also automatically generates a language switcher for the requested locales in the Unity engine. However, this language switcher is for testing, and is not accessible in the game outside of the development environment.

Localized image resources were added to the game using resource tables. Separate string tables were created for each section of the game to ease the branch merging process and ensure nobody was overwriting anyone else’s strings. Some strings could not be localized using this method, and had to be localized using slugs in the script files.

Results

Improvements

Some improvements that we would have loved to work on with the ability to devote more time to this project include font refining, text fit, and language switching. Because all the original fonts needed to be replaced to support Japanese characters, we had to find new fonts to use that were similar to the originals. In some places, we were able to find fonts that matched up well, but in other places we had to use more basic fonts as fallbacks.

In some places, the text doesn’t fit the containers quite right. For example, in this popup that explains how to use the notes tab, the Japanese text doesn’t entirely fit on one line and looks a bit disjointed. However, with the string table method of localization we used, we weren’t able to change the size of the Japanese text without also altering the original sizing of the English text.

Finally, it would have been ideal to install a language switcher option available to the user. However, this would not only include constructing the switcher in Unity, but also consultation with the developers regarding graphics and design of the switcher. While certainly not impossible, this just wasn’t feasible within the time constraints that we were working on the project in.

Conclusion

Our team was able to complete the project to our satisfaction. The demo is completely playable in Japanese. After completing the project, I feel much more comfortable using Unity’s localization package, as well as more familiar with its capabilities and limitations. We would all like to thank Nochi Studios for graciously allowing us to use their assets for this exploration. I look forward to the full release of Untold Atlas.

Thanks as well to my fellow team members: Dustin Liaw, Seamus Gildner, Cecilia Lin, Mitchell Hou, and Ann Neville.