Localization

To any who don’t know: “localizing” a game is the act of changing it to work in a different language or region. It could be as simple as translating all the text in the game, or as involved as redoing all the voice acting and lip-syncing, or changing the script/images/3D models/etc to fit better with the new culture/language. TO BE ABSOLUTELY CLEAR, Bleed 2 isn’t being localized AT ALL (at least not right now) — it’s an involved and expensive task, while I’m just one English-speaking dude who’s resources are limited.

That said! This week I made basic text translations possible — and hopefully, easy. For example, here’s the main menu run through Google Translate to German (definitely NOT the way you want to localize a game. Apologies to any German speakers, I’m sure this isn’t correct!)

Still, it shows you can change the text!! Most of the text in the game used to be hard-coded, but now it’s all stored in an easily readable, easily editable text file, looking something like this:

It’s not a perfect solution — some elements (for example “BLEED 2” on the menu shown above) remain as images, so they can’t be translated in this way. Still, there’s been a fair amount of fan interest in translating the game, so I hope what I’ve done is enough to make someone (or a few someones) happy.

There was more to it than “okay all the text is in this text file now” so of course you get to read about some of the bumps, yaaaaay!

The first most basic thing was making sure the fonts I was using supported accented characters. There are two main fonts in the game and somehow I’m lucky enough that they both support all kinds of non-English characters. Hooray! Here’s me breaking the Key Config screen with a bunch of them.

Next was going through the whole game and trying to make sure I’d moved every last string into the text file. I got a great tip from Mobeen Fikree — if you “translate” all the text in your game to gibberish like AS3JKD14AH97HDAS, it makes it 100x easier to spot the strings you’ve missed, since suddenly they’re the only things you can read.

Along the way, I found tons of strings that didn’t even exist in the game code — they were baked into the textures. I re-did those elements to look the same, but be created from the text file. Below is a sprite sheet before and after. In the “before” image’s top-left you can see sprites for OFF/ON buttons, but in the “after” image it’s just the button backgrounds, and the text is now stored in the strings file. The process ended up clearing out a ton of texture space (not that I’m using it for anything, haha.)

Spacing also became an an issue in some cases. For example, the leaderboards used to look like this…

oldleaderboards

…but the text is getting pretty crowded there! What if the translation for “Global / Mine / Friends” takes up too much space and overlaps “Score / Time”? I tried to find areas like this and account for them — here, I changed the items to be represented by icons, with text describing only the currently selected icon.

I also tried to preserve the aesthetic of menus, where they might be thrown off by longer text. So for example in the “Level Clear” screen, the small and large ranks still line up (although now that I look at it, the long “TOTAL” string at the bottom might be able to push the final score off the edge of the screen, so I should probably look into that, too…!)

Other than that, it was just a ton of copy/pasting and making sure that every last text line worked. All in all, it came out to about 800 strings (yikes!!) Apologies if this topic was boring, but that was the exciting world of game dev this week — the fun never ends!!!