Game Design, Programming and running a one-man games business…

Democracy 4 Translations. The Economics

I’m trying to decide what other translations make economic sense for Democracy 4. Its never a clear issue. There are some countries where sales are potentially high, but then most gamers speak English anyway, so the boost effect of a translation is small. Then there are countries that sales are entirely dependent on translations being available. Also some countries have higher piracy rates, meaning you are basically just making pirated copies better! Time to look at some stats. Obviously I cannot make any decision without stats. Yes, I may well be on the spectrum…

Here I am going to consider the arguments for translating into Korean, Chinese and Japanese. Which, if any, of these countries make sense as a potential translation target? One useful stat would be to look at Democracy 3s steam sales figures in each country, as a percentage of revenue, as this game is older so it has lifetime (not just early access) stats.

  • China: 1% of revenue (Chinese translation available but added post-release. 5% revenue in prev year)
  • South Korea: 1% of revenue. Not translated 2% in prev year
  • Japan 0% of revenue. Actually to be precise: 0.478% of revenue. Not translated Yikes…

There are a bunch of countries where we do not have a translation with higher revenues such as these:

  • Sweden. 2% revenue
  • Norway 2% revenue
  • Netherlands 2% revenue
  • Denmark 1% revenue

But I think its fair to say that English is commonly spoken in those countries by gamers, and if not, they also have French or German to choose from, so not bad. The big question is picking between Russia, China and S Korea. Its worth noting that S Korea is a playable country in the game… so maybe this needs adding? So is Japan!

So to get really stupid, lets look at the population under 30 to get the total addressable market for each of our now 4 countries:

  • Japan: 27 million
  • China: 237 million
  • South Korea: 13 million

Hmmm… not helpful. Maybe a better source would be to look at steam traffic in general, which I found on this page.

  • Japan: 1.5% of traffic
  • China: 22.7% of traffic
  • South Korea 3% of traffic.

So frankly Japanese is looking like a bad idea. Untranslated sales were close to zero, and as a percentage of steam traffic, its really low for EVERYONE. South Korea is better, but still low. China might be a better bet. We DO have a swanky Unicode engine which will effortlessly render everything in Chinese and Korean… so it seems like that could be a good idea. I need to get a translation quote, and then look at the numbers a bit more, and then pace up and down and lose sleep some more. I’ve scheduled the stress and pacing for tomorrow…

Democracy 4: Resizable GUI

For the last week or two I have been working on what seemed like it might not be too bad…but actually turns into a lot of work. This is a resizable GUI for Democracy 4. The current version of the game has fixed size UI elements everywhere which works fine for the old school screen res from maybe 1280×768 up to 1920×1080, but starts to get a bit annoyingly small text at 2560 plus, and frankly the UI can be a bit too big and blocky at the lower res too. I finally got around to fixing this.

The first day or so was wasted trying to find an automated solution. Democracy 4 uses SDL2 and OpenGL, and I was hoping some of SDLs scaling functions would handle this simply. I could easily implement a scaling slider in the game, and then SDL could just handle a final stretching up or down at blit/flip time of a fixed resolution image.

This failed to work. partly because of some messy implementation at my end perhaps, but also because screen aspect ratios can change. Even if it DID work, it would basically mean throwing away the core UI upgrade of Democracy 4 over 3, which is super-smooth fonts and pixel-perfect vector-based icon and UI element rendering. If the player set the render scalar to anything but 100%, any sort of stretching would give a slightly blocky look. I couldn’t live with that.

In the end, I did implement all this as a simple percentage slider on the games options screen. Changing this requires a reboot to see the effect:

In order to get all this to work I just had to make a LOT of small code changes. Probably every UI file in the project got changed in the last week. What I needed to do is get rid of what coders called ‘magic numbers’ and replace them with values that could be scaled up or down based on this slider. For example code that said this:

int iconleft = Area.left + 120;

Would be changed to something like this

int iconleft = Area.left + WIDE_SIDE_PADDING;

The all-caps value could then be coded as defaulting to 120, but be scaled up or down by a global value for RenderScaling, which is decided when the game starts. This way I could reuse that value anywhere in the game and know it would always be the right value. Because I’m not entirely useless, luckily I HAD actually defined and used a lot of named values already like this:

int iconleft = Area.left + STYLEGUIDE_BLOCKPAD;

So in that case no code change was needed, and that value (10 as a default) could be easily scaled at app startup. The problem was… I had not stuck to this, and actually used a LOT of magic numbers (ie: actual numeric values) many, many places in the code. I ended up just having most of the common ones defined as pixel constants:

int iconleft = Area.left + STYLEGUIDE_PAD50;

For example. A bit kludgy, but some values really are used in random places and giving them stupid names like STYLEGUIDE_MINISTER_)SCREEN_TOP_WINDOW_HEIGHT would be overkill if you ask me. In any case, after a LOT of typing and also a LOT of testing, I am very close to declaring this done, and letting users play with it. Its not perfect, because a lot of combos don’t work. If you are playing at a small res like 1280×768 and set the slider >100%, things will overlap and look rubbish. But I’m hoping people are sensible. This is a FIX for people who dislike the default layout for high or low resolutions. Its assumed 95% of players will not touch the slider.

Anyway here is the game in the current (unscaled) view in 2560 resolution and default 100% scaling:

(Its reduced by 50% for here). Check out how small the text is for the finances, and how much space I waste on the timeline at the top. Now here is the exact same screen resolution, but with a 133% slider:

To me this looks WAY better, but you are only REALLY going to appreciate the change if you have a high DPI but smallish monitor, or an insanely high res monitor and poor eyesight. At first glance, you might not be able to tell the difference, but then check out that timeline at the top to see just how things are re-arranged. or check on the far left near the top, the ‘POPULARITY’ text.

Anyway this is coming to the next update for the game. it took a while, but it really needed doing!