Windowsゲーム「初音ミク冒険記」、フライさんのハマっている問題について
フライさんから
「試練の洞窟 試練の間(入口)」の石碑を調べると
のように文字化けし、応答なしになってしまいました。
あと音楽が短いループのようになってしまいました。
という問題の対処法について問い合わせがあった。
最初は、オブジェクトファイルのバージョン違いなどが原因で
リビルドすれば直るんじゃないかと思っていたのだが
どうもそうではないらしい。
リビルドしてもうまくいかないとのことだったので
実際にフライさん側で問題になるLuaとBGMファイルを送付してもらった。
すると、かげさんの方ではでは問題なく動いた。
原因は環境周りか?
フライさんの情報によるとかげさんとフライさんでは
DXライブラリのバージョンが違うようだ。
フライさんには、かげさんのところでビルドしたファイルを
送付して確認してもらおうと思っていたのだが
連絡が未だ来ていない。
他の原因だと何があるのだろうか?
改めて、正常動作のハードコピーと問題のハードコピーを見比べてみる。
正常動作はこんな感じだ。
ん? 文字化けしているのって「構」って文字のところ?
そういえばDXライブラリを使う都合で
Luaスクリプトは、文字コードはSJISで作っている。
SJISには0x5c問題というのがある。
0x5cというのは具体的には「\」記号のことだ。
この「\」記号、プログラミング言語によっては
エスケープシーケンスという特殊な文字として扱われる。
日本語文字の文字と文字との間に出てきているなら影響は
少ないはずだ。
しかし、SJISでは日本語文字は2バイトの文字として扱われ
2バイト目に0x5cが来る文字だと、文字を半分表示したところで
続きが特殊文字として扱われる関係で
文字化けという現象を引き起こす。
SJISの文字コードで2バイト目に0x5cが来る文字には
以下のようなものがある。
― ソ Ы Ⅸ 噂 浬 欺 圭 構 蚕 十 申 曾 箪 貼
能 表 暴 予 禄 兔 喀 媾 彌 拿 杤 歃
濬 畚 秉 綵 臀 藹 觸 軆 鐔 饅 鷭 偆 砡 纊 犾
「構」という文字も該当文字の1つだ。
実はこの文字コードの問題は
Windowsゲーム「初音ミク冒険記」、2012/03/17版公開!
という記事のコメントで少しだけ触れている。
また、SJISには0x5c問題があるので 単純にluaの本家からライブラリを持ってきた場合、 一部の文字が正しく認識されなくて エラーになることも考えられます。 その場合、PSP xviで公開されている 「はるるん」とかを使ったり 0x5c問題の対策をしたluaライブラリを使うと 解消されるでしょう。というのがそれだ。
古い記事でしかもコメントに書いたことなので
見逃していても仕方がないし
0x5c問題の対策をしたluaライブラリについて
明示しているわけでもない。
対策として、かげさんは
スクリプト言語による効率的ゲーム開発 新訂版 (LuaとC/C++連携プログラミング)
の327ページ、9.7 日本語の扱いにあるように
Lua@空想具現化プログラミングの
lua5_1_3_Win32_mbenc_a3.zipを使っている。
が、今、このサイトはリンク切れになっているようで
上述のファイルは素直にダウンロード出来ない。
そこでGoogleの検索エンジンキャッシュを使う。
具体的には以下のURLを叩いて欲しい。
http://webcache.googleusercontent.com/search?q=cache:n0RwSSw20toJ:hammm.dw.land.to/lua/+SJIS%E5%AF%BE%E5%BF%9CLua&hl=ja&ct=clnk&cd=1
するとそこにlua5_1_3_Win32_mbenc_a3.zipというリンクがあるので
ダウンロードできる。
後はダウンロードしたものの展開先だけど
HatsuneMikuBoukenkiフォルダと同じ階層に
lua5.1が来るようにすればOK。
これで初音ミク冒険記をビルドすれば
文字化けの問題は起きなくなるはずだ。
| 【固定リンク】 | 【コメント (5)】 | 【トラックバック (0)】
このエントリーへのリンク
トラックバック
この記事へのトラックバックの一覧です: Windowsゲーム「初音ミク冒険記」、フライさんのハマっている問題について:
コメント
このブログの新着コメントをRSSリーダに登録する為のxml返信が遅れてしまってすみませんでした。
正常に動作しました。
詳細はSNSの方に書きました。
投稿者: フライ (2012/08/12 22:17:00)
2連続でコメントさせて頂きます。(すみません)
この記事に関係ない内容だと思われる
トラックバックがたくさんある気がします…。
投稿者: フライ (2012/08/12 22:22:59)
To:フライさん
> 正常に動作しました。
>
> 詳細はSNSの方に書きました。
報告ありがとうございます。
動きましたか!
SNSの方も見ました。
やはりLuaが本家でしたか。
次のソース公開の時は、この記事へのリンクも
書くようにします。
> この記事に関係ない内容だと思われる
> トラックバックがたくさんある気がします…。
フライさんのコメントで気づきました。
削除しておきました。
コメントしてくれてありがとうございます。
投稿者: かげさん (2012/08/12 23:49:56)
Luaを再インストールしてビルドしたところ
問題は起こりませんでした。
SJISに問題があるのは初めて知ったので
驚きました。
ありがとうございます。
投稿者: フライ (2012/08/13 16:38:16)
To:フライさん
> Luaを再インストールしてビルドしたところ
> 問題は起こりませんでした。
おぉ! それは良かった![→◇←]
もう少し早くかげさんが気づいていたら
もっと良かったんですけどねぇ。[冷や汗]
> SJISに問題があるのは初めて知ったので
> 驚きました。
他の.NET環境も基本的にUTF-8になっているしVisual C++だと今は標準でUNICODEなので
気づきにくい問題だと思いますよ。[汗]
最初にDXPを使った時は
猫山さんのはるるんを使って
\を\のコードと見なすように
文字コードで\が出てきたら\\に置換する
というやり方にしてました。
実は初音ミク冒険記のLuaは
最初はSJISで作っていたのを
PSPのイントラフォントを使いたくてUTF-8にして
Windows版で再びSJISに戻していたりします。
投稿者: かげさん (2012/08/14 20:01:21)