We now have localization support!
Author: indiefoldcreator
Date:
Mon, 15 Jul 2024
Game: Ghost Croquet
Hey y'all, Vadym here
This update adds support for Ukrainian (translated by me and Ci8ird), Russian (translated by Nick, DamirLut, and with smaller contributions from a handful of people), and we'll be looking into adding more languages as we figure out who can help with translations/proofreading.
It also adds a handful of non-localization tweaks and fixes.
Translating games is hard work!
But not just the translations themselves - making a game translatable takes effort unless you have planned for it from the start.
For example, many UI elements in Ghost Croquet consist of several snippets of text with an icon (e.g. a crystal) sandwiched between them.
Previously, we have handled this by anchoring a little texture based on label widths, but that wouldn't work with translations - the text might no longer even be on the same line!
And then there's our level editor manual, which has been a sufficient headache that it was merely a PNG image up until this update:
So I had to implement a little system that turns this
Into this:
Or, in case of the level editor manual, turns a whole lot of "markup" (note: probably requires logging into crowdin) into a big pile of text and icons.
The other thing is text itself: English words are relatively short and English labels take relatively little space (or, should I say, text in games is usually written so that it doesn't overflow in English). But text in other languages might not be so short, and might not fit onto the button/screen.
A common "cheat" used in games is to simply make the font smaller if the text doesn't fit - if you play games in German or one of the Eastern-European languages, you have most likely seen buttons with suspiciously compressed text.
However, our game is pixel-perfect, so we can't really make the text smaller without making it look out of place.
And then there are fonts too!
Our game's font is drawn by me. It's a chunky font with (mostly) 6x6 glyphs that I consider to be a good fit for the game's NES-ish aesthetics.
The good news are that I can add new glyphs to it relatively easily.
The bad news are that this is a horrible font size for CJK glyphs - even for Cyrillic glyphs I occasionally have to cheat and make a glyph a pixel or two wider:
While something like Chinese script requires glyphs to be ~11x11 to be comfortably readable.
The game will have to use a different font for those - so far we've done a little test with Silver, but we'll see how it goes.
There are also a few other things in this update:
To switch languages in-game, check out the one-before-last button in the Settings menu.
If you'd like to help translate the game into your language, check out the game's Crowdin page!
With effective (excluding level editor text/descriptions) word count of 800 or so, the game's relatively non-intimidating to translate;
If your language isn't on the list, leave a comment and we'll get it set up.
And if you're a developer and would like a deeper dive into the process (or if you are making games with GameMaker in particular and would like an easier way to localize your games), check out the technical post!
Thanks for reading!
P.S.: the "supported languages" list on the store page should be updated soon - give it a little bit.
This update adds support for Ukrainian (translated by me and Ci8ird), Russian (translated by Nick, DamirLut, and with smaller contributions from a handful of people), and we'll be looking into adding more languages as we figure out who can help with translations/proofreading.
It also adds a handful of non-localization tweaks and fixes.
Localization
Translating games is hard work!
But not just the translations themselves - making a game translatable takes effort unless you have planned for it from the start.
For example, many UI elements in Ghost Croquet consist of several snippets of text with an icon (e.g. a crystal) sandwiched between them.
Previously, we have handled this by anchoring a little texture based on label widths, but that wouldn't work with translations - the text might no longer even be on the same line!
And then there's our level editor manual, which has been a sufficient headache that it was merely a PNG image up until this update:
So I had to implement a little system that turns this
{0}
Only {1}!
Into this:
Or, in case of the level editor manual, turns a whole lot of "markup" (note: probably requires logging into crowdin) into a big pile of text and icons.
The other thing is text itself: English words are relatively short and English labels take relatively little space (or, should I say, text in games is usually written so that it doesn't overflow in English). But text in other languages might not be so short, and might not fit onto the button/screen.
A common "cheat" used in games is to simply make the font smaller if the text doesn't fit - if you play games in German or one of the Eastern-European languages, you have most likely seen buttons with suspiciously compressed text.
However, our game is pixel-perfect, so we can't really make the text smaller without making it look out of place.
And then there are fonts too!
Our game's font is drawn by me. It's a chunky font with (mostly) 6x6 glyphs that I consider to be a good fit for the game's NES-ish aesthetics.
The good news are that I can add new glyphs to it relatively easily.
The bad news are that this is a horrible font size for CJK glyphs - even for Cyrillic glyphs I occasionally have to cheat and make a glyph a pixel or two wider:
While something like Chinese script requires glyphs to be ~11x11 to be comfortably readable.
The game will have to use a different font for those - so far we've done a little test with Silver, but we'll see how it goes.
Non-localization
There are also a few other things in this update:
- You can now open the Credits screen from the Options menu
(instead of having to beat the Arcade mode to see it) - You can now scroll the Credits screen back and forth with arrow keys
- Some of the Cyrillic glyphs (which were previously only seen in chat/leaderboard) now look cleaner (Д is no longer D-like, for instance)
- The game now consistently registers extra short (16ms or shorter) key taps.
This isn't readily achievable unless the taps are coming from a rotary encoder. - The tutorial has gotten quite a bit of a visual lift and now matches your key bindings.
- The game is now also capable of displaying more types of keys and gamepad buttons.
- The game now shows input prompts more consistently across all locations.
- I have fixed an issue where the speedrun timer was showing sub-second times in 1/60s instead of 1/100s (so it would roll over from .59 to .00), which is pretty funny because I think it's been like this for a while, but you don't really notice unless you're paying close attention to the timer instead of the game.
To switch languages in-game, check out the one-before-last button in the Settings menu.
If you'd like to help translate the game into your language, check out the game's Crowdin page!
With effective (excluding level editor text/descriptions) word count of 800 or so, the game's relatively non-intimidating to translate;
If your language isn't on the list, leave a comment and we'll get it set up.
And if you're a developer and would like a deeper dive into the process (or if you are making games with GameMaker in particular and would like an easier way to localize your games), check out the technical post!
Thanks for reading!
P.S.: the "supported languages" list on the store page should be updated soon - give it a little bit.
Write your comment!