■サイト[SilverSecond]トップ
■開発日誌トップ
【ウディタ大規模アプデ内容予告 6 Unicode化】

ということでウディタの大規模アップデート作業、今は超地味で超コストが高いものの
いちおう世界展開にも影響する部分、『Unicode化』を進めています!



「Unicodeってなに!?」 と思われるかもしれませんが、
もともとウディタの内部は地域ごとに作られた「マルチバイト文字」というので動いていまして、
日本ならマルチバイトの『シフトJIS(SJISとも言います)』と呼ばれる文字コードで動いていました。

これは海外だともちろん違う文字コードになっており、中国語の簡体字なら「GB2312」、
繁体字なら「BIG5」とか色々あるため、文字コード1個しか指定できなかった
これまでのウディタでは、同じゲーム画面内では
2つ以上の言語が同時に表示できないようになっていたのです。

さらに言うとWOLF RPGエディターは「シフトJIS」用のエディタ + ゲーム動作アプリなので、
海外言語のOSでゲームやエディタを開くと部分的に文字化けします。
さらにはエディタで中国語の文字なども入れることができなかったので、
海外展開されている最先鋭の人たちは移植の際にお困りになりがちでした(私も)。

ということで今回、大規模更新のついでにGame.exeやEditor.exe内で扱うコードを
世界で使える文字コードである「Unicode」にしてしまおう!
というのが大きな目標の一つとなりました。
大部分の皆さんへの恩恵が地味すぎる割にコストが莫大な部分ですが、
ここを逃すと一生見て見ぬフリを続けそうだったので!!

あと私が裏でどれだけローカライズ関係で言語周りのお問い合わせを
これまでヒィヒィいいながらサポートしなければならなかったかを考えれば、
私にとってはむしろここで苦労する方が人生の総コストで見れば安上がりです!

そんなわけでVer3からは、ゲーム部分は「UTF-8」、
エディタ部分は「ワイド文字(たぶんUTF-16? でもファイルはゲーム用に全てUTF-8です)」
で動くようになります。いまそのための修正を行っています。



【Unicode化でどんな面がよくなるの?】

ではUnicode化で皆さんにどんな恩恵があるかというと、以下のような点です。


●変わった記号が使えるようになる。

↓タイトルバーにも♥が使用可能! メッセージ内に記号も使用可能!(フォントに入ってるもののみ)
要するに、フォントに入っている文字なら何でも使えるようになります。

あまり見ない媚び媚びウルファール。


●1ゲームデータ内で言語切り替えが可能になる。

かなりうまく作らないといけませんが、
文字列のほとんどをDB内に書いておけばCSVファイル読み込みで言語を変えたり、
言語別のマップを作っておいて切り替えられるようにしておけば
1ゲーム内で言語の切り替えをさせることも可能です。


●海外展開するときなどに、エディタ上から直接
中国語などを入れられるようになる。


これまでは日本語OSで起動すると、文章欄には「日本語」しか入れられなかったので、
中国語簡体字へのローカライズが困難でした。

ですがこれからはどんな文字でも入るので、
ただでさえ少ない対象人数の中のさらに何%だよって話になりますが、
現在の海外展開先の主流の一つである「中国語」へのローカライズもラクになります!


●海外のOSでもエディタが文字化けせずに使える。
かつゲーム内で確実に海外語の文字が出せる。


私にとって地味に大きい部分です。海外の人からの連絡で
「これこれこうしたいんだけど文字がうまく出せないんです!」
というお問い合わせが殺到することがたぶんなくなります。
またロシア語など、これまでゲーム内で表示すらできなかった言語も入れられるようになります。

だいぶ昔、ドイツの方に「ウディタは海外言語に対応してないのごめんね」って言ったら
(SmokingWOLFなので)「タバコの吸いすぎで死んじゃえ!」って
お返事をいただいてしまったり、台湾の方からのお問い合わせで
うまく文字が出せなくて何度も泣きそうになったりなど
色んな経験をしてきましたが、これからは多少安心です。


●別言語のセーブデータと共存しやすい。
文字コード自体はどの言語でも共通になるので、
セーブデータの共存がしやすくなります。

とはいえ、アイテム名やプレイヤー名が、
選択中のフォントに対応してない言語のものだと
ゲーム内で表示しようとしても文字化けしてしまいます!

【全言語対応フォント】などを入れてるならいいんですけれど、
なかなか数がないんですよね。
可能なら、「オンラインプレイヤー表示」の部分などには
全言語対応のフォントを入れたいところです。

あと私にとっては、『片道勇者2』のオンラインプレイヤーの処理を
言語別にいちいち分けなくてよくなるので助かります。
(『片道勇者(プラス)』では日本語と英語で接続先もサーバプログラムも変えていました)


●ファイルが日本語のままでも海外で動作する!(?)

これは全言語を試せてないので確定したことが言えませんが、
ロケール(OS言語)を「中国語の繁体字」にした状態でも、
暗号化された「あああ.txt」ファイル(日本語ファイル)を
ゲーム内から読み込めるようになっていることが確認できたので、
日本語ファイル名が混ざっていても海外OSで普通にゲームが動作すると思われます。

ファイル名は本来は「英数字のみ」が推奨で、
これまではそうしておかないと海外版が安定動作しなかったんですが、
これからは日本語ファイルが混ざっていてもそのまま出せるかもしれません。
それでも英数字以外のファイル名はあんまり推奨しませんが!



【ゲーム開発者がUnicode化でやるべきことはある?】

Unicodeに変わるにあたってユーザの方が何をすればいいかですが、
基本的には何もしなくても問題ないようにするつもりです。
メリットをあんまり感じにくいUnicode化で大きいご負担をおかけするのもアレなので
低負担で移行できるサポートをご用意します。


●Ver3のエディタを起動したとき、一通りのファイルを
全変換できるコンバート画面が開くように!




Ver2以前のゲームデータをVer3のエディタで開いたら
最初にコンバート画面が表示されます。
ここで文字コードを全変換します。

ファイルの変換対象は「コモンイベントやDBなどの基本データ」、
「Dataフォルダ内の全.mps(マップ)ファイル」、
「Dataフォルダ内の全.txtファイル」です。

※ただし、txt拡張子以外のファイルはスルーされてしまうので、
もし.logなどの他の拡張子のテキストファイルが使われてるなら
自力でUTF-8型に変換していただく必要がございます。
Windowsの「メモ帳」で名前を付けて保存し直すと文字コードを選び直せます。


いちおう安全のために全部まとめて変換しているものの、
実はtxtファイル以外は、Ver2のままのデータを
Ver3用に変換せずともそのまま読み込むことができます。
(.datファイルは、内部にUTF-8済みかどうかのフラグを持っているので自動で区別されます)



●Game.exeを差し替えるだけでも動作するように。

Ver3のGame.exeは過去のゲームデータでも動作します!
旧データも読むようにしたので、Game.exeを差し替えれば、
Ver2のゲームデータでもそのままプレイ可能です。

ただしDXライブラリの更新でウディタの暗号化アルゴリズムが
Ver2.255(2021/2/27)で根本的に変わってしまったので、
それより前に暗号化されたゲームは読めません。


作者さまの場合は、Ver3のEditor.exeで
ゲームデータを開き直して作り直してくだされば大丈夫です。


また、Game.exeで昔のデータを開いたときの挙動ですが、
「文字列操作」コマンドのファイル入出力で出せるtxtファイルも、
【Ver2の旧データだと認識されると、前のSJIS文字コードのまま読み書き】し、
【「Ver3に変換済み」なら「全てのtxtファイルをUTF-8で入出力」】します。

一方、「DB操作」で出せるCSVファイルは新旧にかかわらず「UTF-8」型で出力されるようになります。
ただ読み込み自体は、SJIS版と新しいUTF-8版を自動判別して
どちらもゲーム内で読める文字として読み込めるようになっているので安心です。
(Excelで保存されたものなら、CSVファイル内のフラグを認識して
UTF-8版とSJIS版の文字コードを区別できます)

と複雑なことを言っていますが、要するに
「Ver3のGame.exeは、古いゲームデータでもファイル入出力はなるべく
これまで通り動作するように読み書きされるようになっています」
ということです。
Ver2.255(2021/2/27)で暗号化された去年以降のゲームなら、
Game.exeだけ差し替えしてもたぶん動くと思います。


●過去のセーブデータもちゃんと使用可能。

Ver2時点のセーブデータもしっかり読めるようにしておきました。
Ver2のセーブだと認識されると、内部文字コードを
自動でUTF-8に変換して読み込みます。

要するにこちらも利用者の方はほぼ何も気にせず使えるということです!
私は気にするところがいっぱいですが!
プレイヤーの方が100時間以上遊んだセーブデータなどもあるわけで、
今後もちゃんとそのまま使いたいですものね。



【今後】

ゲーム側は前々からUTF-8化するための準備を内部に仕込んであったので
だいぶラクにUnicode化できました。あとはバグ探しのみです。

が、問題はエディタ側!

エディタ側はほぼ全体にわたって、すみからすみまでオーバーホールが必要な状況です。
Unicodeモードにしただけでコンパイルエラーが4000件も出る!
が、それはもう解決して、起動できるところまでは行けました。

というのも今回の作業においてはプログラミングソフトの
「Visual Studio 2022」のサポート機能がすごい優秀で、
構文エラーや型エラーがすごい勢いで直せていて
非常に高効率で作業できているので、
ここでもプログラミング環境を最新にした効果が出ています。

Visual Studio 2003でやってたら2ヶ月でも終わらなさそうなのが
ほんの数日でコンパイル成功までいけましたからね! 最低10倍速!
こんなソフトがタダで使えるようにしてくれているMicrosoftさんに感謝です。

ですが「コンパイル時に引っかかるバグ」ならまだいいんですよ!
そこで引っかからない隠れバグがいったい何百件隠れているか、想像も付きません。
ここからはその辺を修正しながら進めていくことになると思います。

そして、最後にいくつか新機能を付けたら一旦Ver3.00としての修正を完了し、
一般公開して、しばらくここまでの変更で増えたであろうバグの修正に
集中する感じでやっていこうと考えております。
また、各種非公開機能やプレミアムな機能が使える「ウディタ3プロ版」も
アーリーアクセスで同時販売予定です。
  
関連記事