キャラカードの中身

作成キャラクターをPNGファイルひとつで交換できるお手軽設計は大変便利で、ILLUSIONゲームの大きな利点の一つです。
ゲームをプレイするのに必要な知識ではないけれども、これがどう実現されているかに興味がある方は多いと思いますので、そのあたりを少し書いてみます。
慣れておらず長文投稿が厳しいので、まずはさわりだけ

PNGファイルフォーマット

まずはPNGファイルの仕様を確認しておきましょう、ざっくりでいーです。
ググって見つけたここによると、PNGファイルシグネチャで始まってIENDチャンクで終わるようです。
シグネチャ? チャンク? とりあえず雰囲気だけ感じてもらえばおっけーです。

キャラカードの中身の確認

それでは実際のキャラカードの中身を見てみましょう、バイナリエディターを使います。
(StirlingだとUnicodeがうまく扱えなかったため私はFavBinEditを使っていますが、BinaryとASCII表示ができて検索できればツールは何でも良いです)
早速バイナリエディターで我らがちかりんのキャラカードを・・・ちかりんの共通のキャラカードは存在しないのでサンシャインプリセットのSッ気様のキャラカードをバイナリエディターで開いた先頭部が下図になります。
(今回の記事範囲ではどのキャラカードでも同じなので好きなキャラカでお試しください)

ファイル先頭の8バイトが16進数の“89 50 4E 47 0D 0A 1A 0A”ではじまっているので、先ほどのリンク先によると確かにこれはPNGファイルのようです。

ではファイル終端のはずの”IEND”を検索してみましょう。

IENDチャンクはIEND文字の後ろ4バイトまで(上図ではIENDチャンク=“0000000049454E44AE426082”の12バイト)なので、図につけた赤色矢印の場所でPNGファイルは終わっているはずです。
しかしその後ろにデータが続いており、なんだか見慣れた文字列がありますね!
そう、これがキャラカードの正体です。PNGファイルの後ろに仕様外の独自データをそのままくっつけた「PNGファイルではない独自仕様ファイル」になっています。PNG的には「末尾に仕様外のでっかいゴミがくっついている謎ファイル」となるでしょうか。

Q. 勝手仕様PNGとか問題はないの?
A. PNGファイルではなくILLUSIONゲーム専用の独自仕様ファイルなので全く問題ございません。

Q. 画像アプリとかに食わせたらどうなるの?
A. 仕様外なのでインプリ依存になりなんともわかりません。頭はPNGなのでおそらくPNGファイルと認識され後ろの独自部分は切り捨てられて正常動作する、保存するとただのPNGファイルになる可能性が高いかと。
Pixivだとキャラカードのやり取りが可能でimgurだとできないのは、おそらくPixivはユーザーがアップしたファイルは加工しない主義で imgurはもともと加工処理をしているからだと思います。

 

というわけで今回はここまで。
機会があればILLUSIONの独自仕様部の話もできればとは思います。