グラフィックス進捗 18

 obake   character   progress 

メッセージ表示用システムを作成中

基本的なメッセージシステムはすでに完成。簡単な紙芝居ならできるけれど、なんか色々追加機能が欲しくなってしまい結構がっつり作り込んでしまっている。

GM:S の文字列処理機能はしょぼい&改行の扱いが明らかに変態でガラパゴス。つまり GM:S の文字列処理ノウハウは GM:S でしか通用しない。

でも一応不具合が無く日本語自体は扱える。ノベルゲーム程度の機能実装だったら商業レベルと比較して遜色無いものが作れるだろうか・・・袋文字とかも非効率ではあるが実装可能だし・・・シェーダも使えるからな・・・って感じ。

GM:S で利用されるスクリプト言語 GML は基本的なデータ構造をしっかりとサポートしている言語なので、色々不満はあるけれどそれでもやっぱり便利な存在。欲を言うと配列に関して int 型固定で作らせてくれればもっと巨大な配列データでも小さいメモリ容量で扱えるようになるので便利ですねとか、あとポインタとか使えるように成るとすごく・・・は無理ですね、はい。

メッセージシステムに話を戻すと、大きな問題発生中。メッセージシステムを組み込むと HTML5 で動かなくなる。

既知の問題、included files と file_text_open 関数

GameMakerStudio 1.4 はテキストファイルをアプリに内包できる仕組みがある。これを included Files という。

included Files は Built-in 関数を使ってファイルをメモリへ読み込んで使うのだけど、非互換性の問題が出てきた。っていうかバグがあった。で、問題解決のため自力で HTML5 の JavaScript ソースを改変できるかなと思ってビルド後のソースを見たが、案の定難読化が施されていた。クソめんどくせぇ。

フォーラムを見て回ったが同じような問題が他ユーザの環境でも発生している。しかし約一年前から問題に対する進展が無いようなのである。

Android などモバイル系では問題がない。ini の include は HTML5 でもキチンと機能しているなど、他ユーザの症状と全く同じだった。

原因は file_text_open() 関数で間違いない。

他の手段は無いのか

ファイル参照がテキストで利用できないのは致命的。CSV 形式を配列へ読み込む仕組みは GML の標準関数を利用してロジック作ったが、HTML5 ではテキストファイルの読み込みでまず失敗してるからこれらが全く機能しない。

他手段が複数あることはあるのだが、あまりにも効率悪いためやりたくない。

テキストファイルを無理やり ini として読み込ませたり、ユーザ定義関数を使って

var b = file_text_open_from_string(textfile());

こんなのも試してみたが、file_text_open に関連した命令形がまともに HTML5 で機能していないから、全てただの徒労に終わった。

データ構造に保存されているデータを ini で難読化が施された状態でテキストとして保存する手段もある。

Windows PC で正常に動作している場合、List に保存されたデータを適切なタイミングで一旦 ini に保存、これを included file として HTML5 では ini からリストへデータとして読み込む、こんな手段もある。

ini_write_string(“Lists”, “0”, ds_list_write(TxT_LIST));

c = ini_read_string(“Lists”, “0”, b);

if (c != b) ds_list_read(TxT_LIST, c);

いい案だと思ったのだが、残念ながらこれも HTML5 では動かない。ファイル読み込みでなにか絶対おかしなことになっている。

もうこんなんだったら HTML5 対応を諦めたほうがすっきりする。GMS1.4 向けのアップデートとバグフィックスがピンポイントで来ない限り HTML5 での動作は絶望的な状況。やれやれである。




次へ

前へ