Game Development Community

Tilda is not internationally workable

by Gregg Tavares · in Torque Game Engine · 08/12/2003 (11:45 am) · 13 replies

This has been an issue ignored since DOOM but the tilda key is a special key on Asian keyboards (or at least Japanese keyboards) that switches into and out of Japanese mode.

This makes using tilda to get into the console unusable by any Windows system running Japanese. You press tilda and you get the console but you try to type and the input goes into a separate window (the IME [input method editor] window) instead of into the console and it's Japanese instead of English.

Okay, lets try to make this more clear. In Japanese Windows there are several input modes. The two most common are English mode (or romanji mode) and Hiragana mode (Japanese). The tilda key switches between those modes! So, you start the game and it starts of in English mode. Typing a key goes directly to the game. You press tilda to bring up the console. It brings up the console but it also switched the system into Japanese mode. Now when you type you get Japanese in a separate small window. Pressing tilda again gets you back into English mode but also closes the console.

I know this will be unpopular as tilda has been being using for like 10 years now but it NEEDS TO CHANGE!

Is there a work around? kind of but .... you can ask all Japanese game players that want to pull up a console to go to the Windows Control Panel and add plain old English input. Unfortunately this is arguably a power user thing to do. Now the user has to deal with 2 higher level input modes, switching bewteen them, sometimes when not wanted unless more configuration is done. What I mean is now there are the following 3 modes

1)English Input Mode
2)Japanese Input
2a)(English Mode)
2b)(Japanese Mode)

By default if there are two base input modes pressing something like Shift-Alt switches between them. In other words in this case pressing Shift-Alt switching between (1) and (2) above (seperate from if 2 is in 2a or 2b mode). The problem is the average Japanese computer user has never had to deal with this and if they accidentally press Shift-Alt during normal work they will have no idea why they can no longer type any Japanese or switch in and out of (2a) and (2b) mode by pressing tilda like they always have in the past.

Worse, when in English mode most of the puctuation keys no longer match the keyboard because they are in different places on a Japanese keyboard. In other words, Tilda now works for bringing up the console but trying to type "tree();" is an excersize in frustration because "(", ")", ";" are all now somewhere not shown on a Japanese keyboard.

I'm sure this is not the #1 reason why FPS games have never sold well in Japan but it is certainly a frustration that would effect lots of players if ever one of these games did try to make it here.

#1
08/12/2003 (11:55 am)
So ? you don't expect developers to consider all keyboard layouts available in the whole wide world for the english version of a game ?
I mean, it's not only a problem with Japanese, but with lots of other languages, including some who only use the roman script.
Most games nowadays allow you to remap the keys to what you want, so there you go.
Now, if the game has been localized, in Japanese for example, for local distribution, then you could expect the people who did the localization to be aware of the issues in that particular market, but it's totally unrealistic to think that we could consider all the various keyboard layouts : why should Japanese get a leg up on other languages prone to kb layout problems ?
ie that's what controls options are for : you remap the keys to what you want.
Otherwise, we'd have to do it for all languages, which at least for us indies doesn't seem a reasonable spending of development resources...
Again, most games, including FPS, allow to remap the controls : that's the reasonable solution the industry came up with :)

Edit : Doh, I didn't realize this was in the private SDK forums, otherwise I would have given an example akin to what Harold just did. Thanks :)
#2
08/12/2003 (11:56 am)
Solution:

edit

fps/client/scripts/default.bind.cs

find the line that says:

GlobalActionMap.bind(keyboard, "tilde", toggleConsole);

change "tilde" to the key / key combination you want.


NOTE: this line also appears in the following file

rw/client/scripts/default.bind.cs
show/scripts/show.bind.cs
#3
08/12/2003 (12:06 pm)
I think you are missing the point

It may very well be that every different keyboard for each language has its issues but I seriously doubt it. I think if you looked at all keyboard layouts you'd find there are only 2 or 3 keys that have an issue. Tilda happens to be one of them.

Second, many games do not get localized, they just get released with a Japanese manual.

Third, I'm sure many Japanese would like to be able to download English software and play with it but are going to have problems as mentioned. Why frustrate them?

If you, I, we, just picked some other key and stopped using tilda this issue would disappear. Your game would be ready to use. Would you even be aware that your game was frustrating to Asian players if I had not posted this? Are you sure Garagegames is not going to make some deal to distrubute your game in Japan to make you more money without asking you to localize it? Except you'll not be making as much as you could because we decided tilda was the default?

Have you at least added it to your list of "things to do before releasing in Japan?" list that will most likely get lost between now and x months from now when your game is finished? Just do it now and you won't have to remember later. Just a thought.

You mentioned you could just remap it in the control options. That's true but I don't think I've seen a single game that had that option available. You could remap game controls but not the console key. In fact the Torque examples don't have that key in there.

Maybe that's the solution, ask all developers to add that to the list of keys available for remapping in the games options screens.
#4
08/12/2003 (12:56 pm)
I can't find a tilda key anywhere on my keyboard, there is a tilde ( ~ ) key, what does a tilda look like? ;)

But seriously; this sound more like a MS Windows issue than anything else. If the game uses that key, Windows should not respond to it and hijack the input stream, or it should allow for customizing which key switches modes.
#5
08/12/2003 (1:02 pm)
How is Windows supposed to know the game is using that key? I know of no API that allows you to tell windows what keys the app is using. Besides, all IMEs (Input Method Editors) have to override keys because that's the whole point, they make it possible to enter languages that the keyboards were not designed to enter. Ie, Japanese, Chinese, Korean, on basically English based keyboards.
#6
08/12/2003 (1:23 pm)
Gregg.... No the console key is not currently one of the keys that can be remapped using the ingame options menu.

BUT that options menu is very basic. You as a developer would decide what keys your players can remap. For most people the solution I posted would be enough as you would include that information in the FAQ for your game.

The current game key remap dialog is set to only edit the MoveMap key bindings. It shouldn't be much work for you to add in the option to choose which Actionmap you want to edit.
#7
08/12/2003 (2:10 pm)
Actually it occured to me the real problem is in the code for reading the keyboard in the game. The code is reading the keyboard directly, bypassing the remapping tables for non US keyboards.

The tilde on a Japanese keyboard is SHIFT-0 but the code is reading hardware key numbers and assuming that tilde corresponds to the same keycode on a Japanese keyboard as it does on an English keyboard. It doesn't.

The solution is appearently to call the function VkKeyScan()

This article
describes the issue

Down around where it says "More Problems!"

"For most people the solution I posted would be enough as you would include that information in the FAQ for your game"

I don't know what MOST people you are talking about. Most of the users I know of would not think to look in the FAQ for that issue, most users don't read FAQs, instead they would either get frustrated and give up or contact customer support therefore costing me money.
#8
08/12/2003 (2:47 pm)
Posting really, really long urls without
embedding them in link code really screws up
the screen for us Laptop users.

A little consideration for others would
be helpful here.
#9
08/12/2003 (3:43 pm)
Or maybe forum software that knew that such issues exist and breaks the lines (like most forum software) :-)
#10
08/12/2003 (4:05 pm)
Gregg - most users don't want to use the console.

But seriously, if you can get the win32 platform to use translated keys, go for it and submit a patch! If it works well across all systems, then it's a clear win and I'm sure it'll get into the codebase.
#11
08/12/2003 (8:35 pm)
I tried looking into it a little but there is a problem. As I mentioned a Japanese keyboard has tilde at shift-0. The key that would be tilde on a U.S. keyboard is the "hangaku/zengaku/kanji" key on a Japanese keyboard. (half-width/full-width/kanji)

So, should

GlobalActionMap.bind(keyboard, "tilde", toggleConsole);

actually assign to shift-0 on a Japanese system? And then the question is, how would you reference that other key or should the user even be allowed to access it as it's problematic?
#12
08/12/2003 (9:57 pm)
I have a japanese keyboard on my laptop, but got sick of shift-7 for apostrophe :P ANYWAYS using the language bar you can define the keyboard type, you can make an English setting with US keyboard layout, thats what I've done - as I mostly touch type it doesn't matter that the pictures on the keys themselves don't correspond to whats inputted.

IF
A) You're making your game in English and not Japanese but your Japanese keyboard is causing you problems I suggest you change the language bar setting to US Keyboard (its easy to switch between the two)

B) You're making a Japanese version of your game and you want the console to come up without remapping the keyboard, then remap the binding in defaults.bind.cs...

C) You're making English AND Japanese versions and for some reason want tilde to stay in the English version as toggleConsole then allow it to be remapped through the options... or install different defaults.bind.cs files depending on language setting at installation....


Good Luck
Nick
#13
08/13/2003 (7:18 pm)
Yes, the keyboard input needs to use proper remappings for raw inputs -- that's the best way to deal with internationalization.

However, I also agree with the statement that, at some level, the OSes >DO< know when something has taken over exclusive fullscreen access (well, at least under DX, or similar GL path on mac or pc or linux). Any IMEs should really typically be disabled, or have to be manually 'reactivated', when a fullscreen app takes over. In fact, all the hotkeys should REALLY go away. All the crap about Alt-Tab ripping away the context from an application BEFORE the app knows about it is silly (and I shouldn't have to write some low, low level keyboard proc, or hook, or whatever...).

Good topic to keep pushing forward -- how to deal with internationalization issues in TGE products.

d