Jul 31

Localizing Saqqarah

CUG FrameworkLocalizing games – or basically translating them into different languages, if you’re not familiar with the term – is now a common thing on the task list of a game developer, and casual games are no exception. Unfortunately the more complex a game is, the more difficult and costly it is to make localized versions of it. What’s more, if you don’t plan ahead for future localization right from the start it is possible then later localizing a poorly coded game will not be plausible at all! I know something about it as our first casual game Magic Match is available exclusively in English and it is not without a reason…

Ancient Quest of Saqqarah is a very big game in terms of content that needs to be localized, especially if you compare it to other casual games. To make everything look good the game has 5 bitmap fonts, where each character is shaded, shadowed and textured. We have almost 10 thousand words of in-game text, 1538 of which are spoken with the voices of 8 professional voice actors (including Khufu’s outstanding voice of Michael McConnohie, known from Diablo 2 and World of Warcraft to name just a few). But that is not all – we also have a lot of bitmap texts and dynamic text effects (like Super Sweep, or falling Well Done 3D letters in the statistics) all of which need to be recreated for each language version.

Fortunately Saqqarah was built on our proprietary game engine CUG Framework that was architected from the start to support localization. The features which make up CUG localization functionality are string tables and Unicode font support. The whole deal is to make it possible to localize the game without having to code anything or change in the game. We tested this functionality when a Polish version of Saqqarah was prepared and to our surprise everything went very smooth. In order to create a different language version of Saqqarah one has to translate the string table, make sure that the fonts have all the extended characters, replace graphics with text, replace the sounds with spoken text and edit some simple script files to make the dynamic text effects work in a different language.

It doesn’t of course mean that with CUG Framework localizing a game as complex as Saqqarah is easy, fast and cheap. You still need to hire translators, re-record the voices and redo a lot of graphics. But integrating it with the game is quite ease and straightforward. Additionally when doing the game in the first place we had to take care to leave empty space so that texts of different length would still fit into the game.

Currently a whole set of FIGS languages (French, Italian, German, Spanish) is being prepared by an external company and hopefully it will go as smooth as the Polish version. Below you can see an example of text holding textures for both Polish and English versions of the game.

English writing texture for Saqqarah

As you see above on the English graphic text texture there is quite a lot of empty/wasted space. That is true, but again this is to make sure that other languages with longer phrases can fit. Below is the Polish version of the same texture. As you see the empty space is much smaller.

Polish writing texture for Saqqarah

A seasoned developer will quickly notice that all texts are packed onto power of two textures (the actual size of the textures in game is 1024×1024) and that the positions of texts don’t match from English to Polish version. Yes, that’s true but CUG Framework stores texture meta data in the form of sprite definitions on the texture externally alongside with the texture file. This makes possible to tweak positions, sizes and anchor points for sprites in the game without recompiling the game. Actually it is possible to tweak such things at runtime while playing the game using CUG_DEV (a special build of the game which embeds the application inside a multipurpose editor) but that is a topic for a whole new post 🙂

To sum up, localization of complex games is a very tough job which can make your developer life quite miserable if done wrong. On the other hand if you plan ahead and do everything by the book, having localized versions of the game is a quick way to grow your user base and find additional revenue streams.


Related Posts

7 Responses to “Localizing Saqqarah”

  1. Ovogame says:

    To avoid localization problems, I try to avoid as much as possible textured text. Also, my text system automatically scale the text to fit a predefine area. So, when I draw a text inside a button for example, it will never be drawn outside the button. 95% of the time, it is fine, in some rare occasion, I have to increase the size of the drawing area because the text is massively scaled down and it looks wrong (German most of the time). So, this is why, I make sure that my buttons are big from the start 😉

    > make sure that the fonts have all the extended characters
    I have an offline small function that read all the characters from the text database and tell me if some characters are missing from the font.

    Did you experience the joy of Japanese and Chinese 😉 the fonts are huge… Luckily my system is automatically streaming the characters from a file on the HD and dynamically blits them into my textures font. This is extremely useful for Japanese and Chinese. Otherwise, you have to find out witch characters are being used and pack them into a classic font bitmap system. The nice things about my dynamic system are that I can say: only use 4 textures for the fonts and the system will automatically cache and remove the characters from them depending on what on screen.

    Localizing my games is a no brainer, but it was some work at the beginning.

  2. val says:

    Saqqarah is the best game I’ve played for a long time. I can’t stop! Hurry with the sequel.

  3. Jippie says:

    Will you ever open the CUG framework?
    I have been using the popcap framework for a while, but I do miss the mac support.
    Your engine also has a lot more scripting I see from some of your games. That is also something I would like to have as I’m a one man show.

  4. Maciek says:

    We don’t plan open sourcing CUG in the near future, but later who knows. If you’re missing Mac support have you tried Playground SDK?

  5. lena says:

    Are you planning to translate the game to Russian?

  6. Maciek says:

    lena, unfortunately we haven’t decided at this point. We are currently in the process of developing FIGS (French, Italian, German, Spanish) and we’ll be deciding on other languages after seeing how Saqqarah does on local markets.

  7. PODD says:

    Its not just translation but localization means changing names, adding specific content but maintaining the feel of the game but making it more appealing for the receiving locale.

Leave a Reply