Skin Deep: Blendo Localizer


Skin Deep will be released April 30, 2025! In the following weeks, I’ll be writing about the processes and development of Skin Deep.

Wishlist Skin Deep here!

To view all posts in this series, click here.


Blendo Localizer

Today I’ll be writing about the Blendo Localizer tool. Here’s what it looks like:

Context

For context: in Skin Deep, strings assets have 2 components:

The reason for this text setup is so the game can be localized to other languages.

What does the tool do?

The Blendo Localizer tool does various things. I’ll note that this tool is not where we write/type strings into the game (we use a Google Sheet for that, as it makes sense to utilize its functionality rather than replicate it ourselves).

This Blendo Localizer tool is generally used to:

Basically, it’s a general-purpose tool to help with text assets. It got used very frequently during the project.

Search

Having a frictionless way to search for text assets was a primary goal. Similar to the Blendo Wav Tool, assets could be found by entering loose fragments of text into the filter boxes.

Example:

It’s very basic but effective search functionality, allowing us to find assets in a few seconds at most. We found it worked very well – I recommend trying it out for your own tools.

AutoConverter

We keep all of our strings in a Google Sheets spreadsheet. One thing we needed was: a pipeline for moving the text out of the spreadsheet and into the game.

This was going to be a high-frequency task, so the goal was to make this pipeline as simple and fast as possible. This pipeline was called the AutoConverter.

Here’s the AutoConverter process:

  1. In the Google Sheet spreadsheet, we download it in .CSV format (File > Download > CSV)
  2. Blendo Localizer detects the newly-downloaded file, automatically converts it into the game format, and integrates it into the game. Done!

So yea, getting text into the game happens automatically behind the scenes. Once you download the CSV file from Google Sheets, the tool takes care of the rest without any clicks or intervention from you.

Basically, the tool “listens” to your download folder, and when it finds a CSV with a filename that matches a specific pattern, the tool converts it and integrates it into the game.

Credit where it’s due: this “listen” approach was from our programmer Eric, who used this approach in a prior tool he made for XNA asset conversion.

Localization

Additionally, if you have a handful of language CSV files, you can just bulk drag all of them into the tool window. The tool will convert them into the game format and integrate them into the game.

This is useful when receiving a delivery of localized languages.

Audio shortcuts

We ended up finding it helpful to be able to quickly access audio assets associated with a given string. We added these buttons:

This lets you find the .WAV file in windows explorer, open the .WAV file in your audio tool, or play the .WAV file.

Example: if we hear a line of VO that could use an audio tweak, we can quickly search for the VO’s subtitle line using the filter boxes, and then click the Edit .wav file button.

(This is largely only possible because in Skin Deep, the VO audio filename and the subtitle string ID name are identical)


Tools Menu

Blendo Localizer has a Tools menu, for various functions:

Find stringID references

Strings can be used in many parts of the game: menus, in the world, in dialogue, in GUIs, in email messages, etc. Find stringID references found all references of a given string in the game. This was useful to find the context that a string was being used.

AutoConverter

This is an options panel that tells the tool whether to use the AutoConverter or not, what folder to listen to, and what filename wildcard to listen for.

View Stats

This prints out stats like word count, character count, and string count.

Check duplicates

This checks if multiple strings have the same exact text.

Check for unused stringIDs

This checks if any strings are not being referenced by the game.

Export to CSV

This is to convert the game strings back into CSV.

Check duplicate suffix number

This checks if multiple strings have the exact same 5-digit suffix number in their string ID.

List prefixes

Our string ID naming scheme uses _ underscores. List prefixes lists out all the string ID name prefix values, by looking at the values between the underscores.

Find empty strings

This lists strings that have no text in them.

SpaceFinder

This marks out spaces in a string:

This is most useful in some languages that use variants of spaces, or types of spaces you can’t see. There’s a lot!

Character Viewer

This gives information about each individual character:

For some languages, this is useful for find out exactly what character is being used. This uses information from the Unicode character database.

Example: sometimes a character that looks like a ; semicolon is sometimes not the semicolon you may expect.

Compare all languages

This compares the strings in all languages:

This compares all the languages to the base language (English) and prints out what strings are currently missing and if there are any extraneous strings.


Nuts and Bolts

Blendo Localizer was made with Winforms. It was written in C# with Visual Studio 2015.

If you think any of this may be useful, please feel free to adapt it to your own project:


Et al

There’s thousands of text strings in the game. I don’t think tenable to trudge through thousands of assets, or to spend a big chunk of your day doing tedious manual processes. Your time on this planet is limited! Be nice to yourself!

I feel very lucky that I’m able to create these tools pretty quickly. I value the time they save, and I find them fun to make. Sure, some of this tool’s functionality ended up being pretty niche and not being used too much. And you know what? I regret nothing! I’d do the same thing again!!!!!! Tools! ⚙️

This page is based on the Journal theme by Damien Caselli.