※ 日本語環境の問題 ※
目次
17/04/30 更新
基礎事項 |
ここでは海外のゲームをプレイする際に、日本語のWindows環境で起きる問題点に関して記述する。このトラブルの主な原因は、ゲームの製作側が日本語という世界的に見ても特殊な2バイト言語の環境において、自分達のゲームがプレイされるのを考えに入れていない事にある。これはXP以降のOS, XP/Vista/7/8/10にて発生する。以下の様なトラブルが起きる場合には、対策の項目を確認する事。 *インストールが出来ない *データのアクセスエラー、ファイルが見付からない等で起動出来ない *Optionsでのグラフィックスやキー設定等の変更が保存されない *セーブ&ロードが行えない *マイドキュメント内部に作成されるはずのデータ(スクリーンショット等)にアクセス出来ない *修正パッチ(アップデート)が適用に失敗する *Modがインストール出来ない [参考] 2バイト言語とは、データとして1つの文字を保存する際に2バイトの領域を必要とする言語である(1バイトは"4A"の様に16進数として表記され、16*16=256通りの値を取る事が可能)。ほとんどの言語は1バイト言語となり、例えば英語ではアルファベット26文字(大文字と小文字で計52)に数字や幾つかの記号さえ加えれば、使用するほとんどの文字の表記が可能である。つまり日常使用する文字の種類が、1バイトで表現可能な256通りの区別内に収まってしまう言語ならば、各文字に0-255までの数値を一対一の対応で割り振ってやり、それを1バイトの保存領域に収納してしまえば良い。仮に"41"というデータが収まっていたなら、それに対応するのは大文字の”A”なので、プログラム側もこれは文字Aの意味だと判断出来る しかし日本語では漢字という物が存在し、全文字をデータ化して分類するには256種類では到底足りない。そこで256*256=65536種類の文字の識別が可能な2バイト言語を使用している。一文字分の保存に2バイトの領域を使用する言語の意味。しかしこれを海外のソフトが、「2バイトで表現された1個のデータ」ではなく、「1バイトのデータが2個並んでいる」と見なしてしまう事からトラブルになる。もう少し詳しく書くと、2バイトで一つの意味を成す文字コードを1セットではなく2つに分割して読んでしまうので、その時にそれが英語の様な1バイト言語の場合には存在しないコードであったり、フォルダ&ファイル名には使えない特殊記号を意味する物であったりするとエラーになってしまう。 ただし現在ではUnicodeという世界共通の2バイト形式のデータが普及している為に、以前よりはトラブルの発生率は低くなっている。 |
具体的な対策 |
※ログインする時のアカウント名は日本語(2バイト文字)を避ける PCにログインする時に使うユーザー名に”田中一郎”や”タナカ”の様な日本語文字(2バイト文字)を使用していると、海外産のゲームをプレイする時にトラブルが発生する可能性がある。ゲームをプレイするのがメインならば、半角英数のみで作成したユーザー名を使用するべきである。なお海外の1バイト圏ユーザーでも、その名称に特殊記号を使っているとトラブルに遭遇するケースがあるので、アルファベット26文字と数字10個だけを使用するのを推奨。 具体的な例として、以下の様にプログラムが作業用に使うTEMP(一時)フォルダは、そのユーザー名を含んだフォルダに作成される。 XP C:\Documents and Settings\<ユーザーアカウント名>\Local Settings\Temp Vista C:\users\<ユーザーアカウント名>\Local Settings\Temp 同じく近年では以下の様なフォルダを、ゲームの設定ファイルやセーブデータの保管に使うゲームが増えている。 C:\Documents and Settings\<ユーザーアカウント名>\Local Settings\Application Data C:\Documents and Settings\<ユーザーアカウント名>\Application Data C:\Users\<ユーザーアカウント名>\AppData\Local C:\Users\<ユーザーアカウント名>\AppData\Roaming もしそのゲームがこの様な場所のフォルダを使うようにデザインされているのに、制作側が2バイト言語の使用を想定していないケースだと問題が発生する。<ユーザーアカウント名>の部分が2バイト言語になっていると、それを2バイトのフォルダ名だと認識出来ずに、1バイトのデータが二つ並んでいるが不正な記号が使われているフォルダ名だと判断してしまってその中身にアクセス出来なくなるからだ。 修正方法としては、第一に該当のゲームを一度アンインストール。次に半角英数のみの名前で新しいユーザーアカウントを作成する。(この場合管理者権限を持ったユーザーにする必要がある)。その後新規ユーザー名にてウインドウズにログオン。そしてそのユーザー名の状態からゲームのインストールやプレイを行ってみる。ゲームをインストールした状態のままで、ユーザー名だけを新しくしてもダメなケースが有るので注意。以下はOS別の新規ユーザー作成方法。 XP コントロールパネル → ユーザーアカウント Vista コントロールパネル → ユーザーアカウント → ユーザーアカウントの追加または削除 ユーザー名を変えたくない場合、原因となっているのがTempフォルダの場所であるケースでは、やや高度になるがOS内部の環境変数を直接編集するという方法もある。XPならコントロールパネル → システム → 詳細設定タブの中の環境変数を呼び出し既存の設定を削除してから、新規にTMPとTEMPの両者を半角英数のみの別のフォルダ(先に作成しておく)に指定する。Vistaだとコントロールパネル → システム → システムの 詳細設定 → メ詳細設定タブ → 環境変数 → システム環境変数の中に有る。 また同じ様にユーザーの行ったゲームの各種設定やセーブされたデータを、各ユーザーの“マイドキュメント”に保存するゲームも存在する。この場合もフォルダ名の一部にそのユーザー名が使用されるので、それが2バイトのユーザー名だと同じ様な問題が発生する。上記のユーザーアカウント名を新規に作成する方法よりも変更が簡単なので、先にこちらを試してみても良いだろう。 XP C:\Documents and Settings\<ユーザーアカウント名>\My Documents Vista C:\Users\<ユーザーアカウント名>\Documents XPの場合にはマイドキュメントを右クリックしてプロパティを呼び出し、ターゲットタブにてマイドキュメントを保存するフォルダを半角英数のみの場所に指定する。Vistaの場合はフォルダ構造が変っており、C:\Users\<ユーザー名>\以下にピクチャーやミュージック等の各種項目が並んでいるので、個別に指定してやらないとならない。この場合だとそのゲームの名前の付いたフォルダか、ドキュメントのフォルダが対象になる。右クリック → プロパティ → 場所タブ(保存場所の設定)の中に場所の指定先が書いてある。 ※ゲームのインストールフォルダに日本語を使わない パス名が半角英数のみの日本語が一切含まれないフォルダにインストールするのが基本。ゲーム本体がOKでもModのインストールが出来なくなる可能性も有り。パス名とはそのファイルがどこに有るのかを完全な形で記述した物で、ショートカットを右クリックしてプロパティを開いた時に「リンク先」に書いてある。 例: C:\Games\ABC software\Game.exe (正常) C:\ゲーム\海外\ABC software\Game.exe (問題有り) ※ダウンロードしたアップデートや各種ファイルをデスクトップに保存しない 海外ゲームのデモやパッチ類は、パス名に日本語が一切含まれない半角英数のみのフォルダに一時保存して、その中で解凍あるいは実行する事。よく保存先として使われる「デスクトップ」は日本語名の2バイト文字フォルダなので、そこからプログラムを実行すると問題が起きる可能性がある。 |
日本語Windowsでは動かないゲーム |
※日本語OSとの相性問題 これは私自身も良く解らないのだが、別に制作社側が日本語OS上では動作しないように意図的に設定しているのではなく、何等かの設定の不具合からそうなってしまうケースが稀にある様だ(Unicode関連の問題?)。他には起動はするがゲーム内の文字表示がおかしくなるという件の原因になったりする事もある。日本市場はPCゲームにおいてはメジャーでは無い為に、日本語OS上での動作チェックを行わずに発売されて、その後も修正されていないという状態になる。幾つか例を挙げてみると以下の様なゲームがある。 ・Aliens: Colonial Marines ・Rainbow Six: Vegas 2 (マルチプレイのみ) ・Dead Block どうも旧Unreal Engine(2.5, 3)において制作されたゲームで発生するらしく、アマチュアが制作したフリーゲームでも動作しない物が有ったりする。 *対処方法(XP/Vista/7/8) MSからはXP用にMicrosoft AppLocale Utilityという一時的に使用言語を変更するユーティリティがリリースされている(既に公式からはダウンロード用のリンクが削除されているが、検索すればどこか外部サイトでミラーが見付けられるだろう)。ただしこれはVista以降のOSでは公式にサポートされておらず、普通にはインストールする事が出来ない。こちらも検索すれば日本語でもやり方を解説しているサイトは幾つか存在しているのでそれ等を参照。 起動すると国籍設定を変更したい実行ファイルを聞いてくるので指定してやった後に、どの言語に変更したいのかを指定する。この起動しない問題のケースでは、Visra/7では言語に u'zbek を指定。8では表示が変わったので O'zbekcha にする。ショートカットの作成を選ぶと、スタート → Microsoft AppLocaleの中に指定した言語での起動ショートカットが作成されるので、以降はこれを使えば良い。仮にSteamに登録されているのならば、Steamは普通に起動してやり、その後ライブラリ内ではなくこのショートカットからゲームを起動してやる。 *対処方法(Windows 10) 残念ながら10からはこのApplocaleが動作しなくなってしまったそうだ(インストールは可能だが機能しない)。そうなると対処方法としては、コントロールパネルの地域と言語からシステムロケールの変更で他国語にするという方法になる。管理タブからUnicode対応ではないプログラムの言語にてシステムロケールの変更を選択する(詳細は検索すれば見付かる)。ただしこれは再起動が必要となり、またWindows10の通常表示にも影響を及ぼす恐れがある(OS全体が指定した言語に変わってしまうから)のであまりお勧めは出来ない。 そこで現在はWindows10に対応した言語変更アプリを開発しようという流れになっており、Locale Emulator NTLEA - NT Locale Emulator Advanceといった物が公開されているので、これ等で動作するかを試してみるという形になる。 ※キー入力の問題 プレイ中に特定のキーの入力が出来ないというゲームもある。これはどうもゲーム制作エンジンであるUnityの入力システムとOSの言語との間の問題であるようだ。日本語以外の言語でも発生したりが報告されている。これは制作側の対応を待つしか無い模様。 |
日本の国籍では動かないゲーム |
※国籍チェック(IPアドレス) これはゲームのダウンロード販売との絡みで発生している問題で、SteamやOrigin等において外部サイトで購入したキーの登録が行えないという話を聞いた事がある方は多いと思う。これと同じ意味合いなのだが、ゲームを動作させる際にIPアドレスによって接続しに来ているユーザーの国籍をチェックし、該当していない国の場合にはゲームを起動させないという形のプロテクトを掛けているゲームが在る。 この場合の対応策はプロダクトキーの有効化と同じで、VPNを使ってIPアドレスを許可されている国の物に見せ掛けてやるという方法になる。チェックのタイミングは起動する時のみだと考えられるが、起動中ずっと(定期的に)チェックされるケースでは対応はかなり困難となる。無料で使えるVPNは時間や接続速度に制限が掛けられているので、VPN接続を維持したままでマルチプレイを行ったりするのは無理があるからだ。このケースではどこか有料のVPNサービスと契約しないとならないだろう。 もしそのゲームが該当しているならば日本からの接続は皆駄目になるので、逆にこの辺の情報は見付け易くなるだろうが、VPNの使用に関してはユーザーのネットワーク接続環境にも依存する為に、絶対的にこうやれば偽装に成功するという保証はなく、またゲームの利用規約違反にも該当する事から自己責任でという話にもなってくるので利用には注意。 ※国籍チェック(旧コンテンツ) Windows 95/98/ME/XP時代の国籍チェックへの対応方法。 *XPでの対処方法 XPでは他の項目で解説したApploceを使ってやり、起動言語にEnglishを指定してやればOK(英語ならば起動するゲームの場合)。またはインストール時に外部のインストール用プログラム側の問題で表示が乱れてしまう物が存在しており(Installshield等)、この場合にはコントロールパネル>地域と言語のオプション → 詳細設定タブ → Unicode対応でない言語への対応の項目 → 該当の言語(英語等)に変更してからマシンの再起動で直る場合が多い。 *9x/ME系OSの場合 レジストリを書き換えて対処。なおレジストリの書き換えは間違うと危険な作業でも有るので自己責任でお願いしたい。なおこれによって英語モードにした場合、なるべくフォルダにアクセスしたりしない方が良い(ソートが自動になっている場合等、見た時点で英語の順でファイルが並び替えられてしまう)。 1.「ファイル名を指定して実行」から、参照にてC:\WINDOWS\Regedit.exeを指定して実行する 2.念の為にレジストリの書き出しを実行してバックアップを取っておく 3.HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\Localeを参照 4.ここの一番上の現在の値(標準)が411になっているはず。右クリックで変更を選択。 5.ここを409(US)・809(UK)いずれかに変更 6.終了後変更を有効にするために再立ち上げが必要 7.英語版のWindowsとして立ち上がる。フォントの表示に一部乱れが出るはず。 8.作業終了後は同様の方法で日本語Windowsに戻す事 レジストリのキーにはこれ以外にも国籍情報を持ったキー値が存在しており、ゲームによっては他の箇所を書き換えないとならない物も存在する。 なお何故国籍をチェックするのかについてはいろいろな説が有る。以下推測も含めてだが、具体的なゲーム名を挙げて解説(当時の物なので内容は古い)。 販売地域やサポートの明確化。サポートするのに使っているWindowsと異なる言語版のソフトを動かすとなると、余計な問題が生じる怖れがあるという理由。或いは世界的に販売するのに地域による販売量を明確にする為。各国の支店によって売り上げ成績が問われるのは当然だが、その為には外国からの輸入版が入って来てしまっては公正を欠く事になってしまう。 このタイプの会社で最も有名な所はActivision。最近では聞かなくなったが、95年から2000年辺りまでのゲームにはプロテクトが掛かった物が多い(ただし上記の方法で外せる物が多い)。しかし輸入版でもAsia-Pacific Versionの表示が有るなら問題無い。Quake, Quake 2, Interstate 76, Heavy Gear, Battlezone等。Soldier of Fortuneもそうだと聞いたがこれは未確認。欧州では今は無きPsygnosisのゲームなんかでちょくちょく聞いた。 発禁問題。国によって規制が異なるので、それぞれの国で販売するゲームの内容を異なった物にする関係上、その国に合った物以外は販売出来ないようにする為の措置。代表的な物はCarmageddon。轢き殺す対象が規制に応じて人間・ゾンビ・エイリアンと3タイプ別パッケージで作成されており、国によって販売パッケージが分けられる仕様上国籍のチェックが組み込まれている。よって輸入版は日本語Windowsでは動かない(上記方法で解除は可能)。 国内版との絡み。これはあくまで噂として言われている事で、こういう事をしていると認めた販売店は無いはず。例えば海外のある作品を日本語版にして販売する権利を買い取ったとしよう。ところが国内発売日まで海外での発売から間が空いてしまう場合、輸入版として入って来たゲームが先に売れてしまい、いざ自社で出した時にはあまり売れないという状況になってしまう可能性がある。そこで海外の製作元に頼んで、国内のWindowsでは動かないようなプロテクトを入れてもらい、自社が発売するまでは買わせないようにするというもの。 |
コンソール呼び出しキーの問題 |
話題としてはやや特殊な部類に属するが、ゲーム中にテキスト入力にてある種の操作コマンドを実行可能な画面をコンソール(Developer Console)と呼ぶ。その使用目的は、ゲーム製作側のデバッグ処理等の各種テスト、サーバーの管理人による設定変更の操作、コマンドを入れてfpsを測ったりするテストを実行、といったものになる。だがその他にポピュラーな用途としてゲームのチートコマンドを入力するのに使うという目的がある。 このコンソール画面の呼び出しに対応しているゲームでは、その画面を呼び出すには特殊なキーを入力してやるのだが、多くの場合そのキーには ~ (チルダ)^(カレット)が利用されている。これは日本語の109(106, 112等)KBだと文字の表示位置が異なる。 該当するのは半角/全角キー(これだけ押下すると日本語文字入力がONになってしまう場合があるので、Shift, CTRL, ALTキー等と同時に押す事もある)、あるいは@キーのケースが多い。Quake系エンジンだと半角全角、Unreal系エンジンだと@キー(TABで簡易コンソール)が一般的。 しかし中にはこれが出来ないゲームも存在している。通常のウインドウズのアプリケーションであれば、キー入力を変換してしまうソフトを使えば(フリーで幾つも存在している)、日本語KB上にて英語を含めた他国版KBと同じ環境を実現してしまう事も可能である。しかしゲームの場合には、通常の処理系を介さずに特別な手法でキーの入力を判断している物が在る。例えばプレイ中に誤ってウインドウズキーを押されてしまうとゲームが最小化状態となってしまう為に、それを防ぐ為に独自のキー入力認識プログラムを使って、押されたキーの判定をOSよりも優先して行っているケース等。 上記の様な場合にはコンソールを出す為のキーその物を押さない限りはコンソール画面は出てこない。しかし英語KBでない限りは押せないキーをコンソール呼び出しに使っているゲームだと、日本語を含めた他の言語環境においては不具合となってしまう事になる。もし呼び出しがチルダキーのケースであるなら、純粋に英語KBにてチルダキー(TABの上のキー)が押下されたと認識しないとならず、 ・他言語KBで同じ場所を押下してもダメ ・OSが備えているUSキーボード入力への切り替え機能をオンにしてもダメ(一般的なアプリではちゃんと有効化されていても) ・キー変換ユーティリティを使ってチルダを押下したと認識させようとしてもダメ という意味である。具体的な名前としては、Far Cry, Painkiller, Carmageddon TDR2000, (初期バージョンの)Vietcong等。傾向としてはロシア・ポーランド・チェコといった東欧のゲームに多い。 ではどうしても呼び出したい場合の方法だが、最も確実なのはKBのドライバ自体を英語版101/102KBドライバに変更してやれば可能になる。デバイス・マネージャからKBを選択してやり、ドライバの更新 → 手動で検索 → ドライバー一覧から選択 → 互換性のチェックを外す → 101/102KBを選んで切り替えてやれば良い(ただし再起動要)。レジストリを書き換えるタイプのユーティリティでも大丈夫なはずだが、こちらも変更後に再起動が必要になるという点は変わらない(理想的には再起動無しで切り替えられれば良いのだが不可)。なおその間は当然文字の入力方法は日本語のキーの印刷とは異なった物となるので、特定の文字を入力する必要があるなら英語KBの配列を参照しながらという風になる。ゲームをプレイする度に変更して、プレイし終わったら元に戻してとなって面倒だがこうするしか方法が無いのでやりたいのなら我慢するしかない。 |