Build 283.3 プレリリース版


本家フォーラムの Product Owner’s Lounge からダウンロード可能。Build 283.x は正式公開までに辿り着くのがこれまで順調では無くむしろ困難な道程でした。このため正式公開はやや遅れています。Build 283.2 以降発見されたバグなどの修正が主な変更点となります。

参考(本家フォーラム):チェンジログ Build 283.3 prelease

UTF-8 Option については Build 283.2 以降からバグフィックスが加えられ筆者も動作確認済み。

これまでデフォルトでこのオプションがオンになっていたけど、オプションがオンのままだと特定のユーザ環境では INI が保存できないバグがありました。このバグはチェンジログに載ってないけど Build 283.2 以降ですでに修正されています。

また Build 283.2 以降では INI から受け取ることのできる文字列バッファが拡張され、従来ヘルプでは「 1024 bytes ( 1024 文字・ASCII 文字列の場合 )」しか受け取ることができないと説明されています。それが拡張された結果「10 Kb ( 10000 文字・ASCII 文字列の場合 )」が上限となり値として INI から受け取ることができるようなりました。

ここで注意すべきはまた UTF-8 オプションのオン・オフ設定です。UTF-8 は可変長マルチバイトなので ASCII 文字列を表現する場合以外、一般的な日本の漢字や平仮名を 3 byte で表現しています。

実際試すと日本語の場合、UTF-8 Option がオンの場合、日本語全角文字は一文字が 2〜4 byte として、例えば平仮名の「あ」なら 3 byte だから 3333 文字までが受け取り可能でした。日本語で UTF-8 保存の場合、利用されている文字によって INI から受取可能な文字列数上限が変わるということです。

参考( KGK紀州技研工業 ):インクジェットプリンターのKGK紀州技研工業|豆知識_文字コードの話/ユニコード

UTF-8 Option を外した場合はこの上記制限を受けなくなり平仮名の「あ」なら 9999 文字が受取可能でした。受け取り可能な文字列数がまったく異なるため UTF-8 Option をオフにしたほうが受け取り可能な文字数は大きくなります。日本語を多く扱う場合この設定のほうが有利です。

でもなぜ 10000 文字ではなく 9999 とか中途半端なのかについては開発者に質問してませんがたぶん終端文字の 1 byte です。

ASCII だけで構成された文字列の場合、これも終端文字のために 1 byte 使われるため、INI から受け取った文字列をカウントすると厳密には 9999 文字までが受け取ることのできる上限となっています。

文字列の終端を表す文字のことを終端文字といい、これは予めメモリに確保された 10000 byte の上限イッパイを文字列で埋めて使おうとすると最後に文字列終端を示すこの特殊文字のために 1byte 使わざるを得ないということだと思います。

ファイルサイズの上限は言及されていないため 64 Kb のままだと思われます(※試していません)。

チェンジログには載っていないバグフィックスについて

チェンジログには全部のフィックスが載っているわけではないそうです。

INI Object には UTF-8 Option を選択するとデータが INI として保存されないというバグが既知としてありました。

特に問題だったのが#Appdata#、ユーザフォルダ以下に格納されるデータ用ディレクトリなのですが、この時ユーザ名に日本語などを使っているユーザの環境では UTF-8 Option がオンの場合 INI の保存ができなかった。

バグがあったため基本的に UTF-8 Option はこれまでチェック・オフにして利用せざるを得なかったけど、Build 283.2 以降はこのバグがフィックスされているため、今後は UTF-8 Option についてもデフォルトの状態で利用して問題無いです( UTF-8 Option 自体のバグではない別のバグが修正されたため )。

あと開発者の方とすこし PM でやりとりしたのですが、INI 保存の際にファイル名として日本語使う場合、日本だけで流通するファイルなら問題出ないけれど日本語環境以外ではそれが原因で問題出ます。UTF-8 Option 使ってもそれは当然発生します。

CF25 や INI の仕様的問題ではなく、その辺りは各ゲーム開発者が意識して配慮すべき互換性についての問題です。ファイル名に日本語を使っても大丈夫、だけど海外ではファイル名が日本語だと文字化け発生するから、海外との互換性を考える場合 ASCII (半角英数) でファイル名指定をこなしてください。


Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です