日本語、英語、中国語に対応しようとしています。
テキストのデータはcsvです。単純化して書くと、
id, jp, en, zhcn
0, こんにちは, hello, 你好
となっています。
GameMakerでは日本語フォント(英語と共用)と中国語フォントを使っていて、
Fontの[Add]で[From File]でcsvファイルを選び[Add Range]しています。
これで各言語でテキストを表示できます。
問題は、1つのcsvファイルに3言語を記述してるので、
日本語で[Add Range]した時に中国語の文字も一緒に読み込まれていらないフォントビットマップが追加され、
中国語で[Add Range]した時に日本語の文字も一緒に読み込まれていらないフォントビットマップが追加されます。
(たぶん)
テクスチャページが増えてパフォーマンスに影響しかねないなと思いました。
解決するにはファイルを分ければいいと思いますが、ファイル1つで済ませる方法は無いんでしょうか?
Gamemakerにはコードから文字を追加するのとファイルから文字を追加する方法がありますが、
csvで書いてるデータをコードに書いて、それを文字に追加する方法は最後の手段としたいと思います(自分的にとても大変なので)。
いいデータの持ち方、実装方法をご存知でしたら教えて下さい。
編集したりするときは、全部の言語一緒の方が、一覧性だったり保管に便利だから一つのファイルの方が楽というのは、わかります。
fontのデータをゲーム実行時に追加できるfont_addがあるので、asaさんのやりたいことができそうかと思いました。
しかし、font_addはGameMakerのフォント画像に追加する文字を、開始と終了の範囲でしか指定できませんでした。
使っている文字だけ追加するエディター上のフォント追加と機能的違いがあります。
今のゲームメッセージリソースCSVはそのままで、
外部ツールとして、PHPでもpythonでもC#でも何でもよいのでCSVを読み込んで、所定の列を入れた新しいCSVを生成するプログラムを作成し、フォント作成のFont Rangeに各CSVを入れるようにするというのはどうでしょうか。
Excelでデータを作っているなら、ExcelのVBAなんかで、ファイル保存したときに自動的に各言語用CSVが生成されるようにすると手間がなくてよいかもしれません。
ゲームメッセージリソースCSVを読み込み
・日本語と英語の文字データだけのCSVを作成する。
・中国語の文字データだけのCSVを作成する。
日本語用と中国語用のフォントを作成し、Font Rangeに各ファイルを入れる。
これで各フォント必要な文字だけ入ったものが出来上がりそうです。
なるほど、そういうツールが作れたら便利そうですね。
ファイル分けを自動化するか、それが難しければ制作中は1つでやって最終的にファイルを分ける方法を考えたいと思います。
ありがとうございます!