当ツールでは、オリジナルフォーマットを採用しています。
どのような画像が美しく、より高圧縮になるのかを説明したいと思います。
まず、どのように圧縮されるのかを説明します。
工程1:フルカラー24bitのBMP画像を、15bitに変換する。
方法は単純に、赤・青・緑各成分の下位3bitをカットして、8bitを5bitに減らします。
つまり、グラデーションを多用した画像の場合、この段階で無惨な画像になってしまう可能性があります。
工程2:RGB形式をYCbCr形式に変換する。
色の表し方を知っている方はすぐに分かるのですが、そうでない方の為に簡単に説明します。
RGB形式とは、赤・緑・青をそれぞれ数値化して表したものです。一般的にパソコンではこれを使います。
YCbCr形式とは、輝度・色差青・色差赤をそれぞれ数値化して表したものです。テレビで使われている方式と言うと分かり易いでしょう。
工程3:Y成分の下位1bitと、Cb・Cr各成分の下位2bitをカットする。
元々、RGB形式よりも、YCbCr形式の方が表す事の出来る範囲が広いです。
このぐらいカットしたところで、ディスプレイ表示には殆ど影響を受けません(本当かな?(^^;)
工程4:Y成分はそのままで、Cb・Cr各成分を交互にカットする。
つまり格納するデータは、Y・Cb、Y・Cr、Y・Cb、Y・Cr……のようになると言うことです。
人間の目には、Cb・Cr各成分の変化はあまり認識できません(目の構造上そうなっているそうです)。
そこで、Cb・Cr各成分は、丁度ディザリング状態になるように交互に抜きます。
そうする事で、確実に元データの3分の2のサイズに縮まります。
工程5:Y・Cb・Cr成分をランレングス圧縮
同じ色が続いたら圧縮を行うと言うことです。
RGBで判断するわけでは無いので、大体同じ色だったら圧縮される事になります。
但し、横方向にしか見ませんので、縦線は対象外になります。
工程6:Y・Cb・Cr成分のタイリングをランレングス圧縮
交互に色が続いたら圧縮を行うと言うことです。
これもRGBで判断するわけでは無いので、大体同じ色だったら圧縮される事になります。
但し、横方向にしか見ませんので、縦の破線等は対象外になります。
工程7:秘密(笑)
通常は使われない工程がもう1つ存在します。
使われないので説明しません(じゃあ書くなよ(^^;)
一番問題となるのは、工程1でしょう。
これを防ぐには「なるべくグラデーションを使わない」しか無いです。
グラデーションを表現する際には、ディザリングを用いると影響を受け辛くなるでしょう。
思い切って、256色に減色して使うのも1つの手です(ツールによっては美しいディザリングで表現してくれる為)
かなりの色の変化を起こすフォーマットですので、色が重要になるゲームは辛いと思います。
このツールに限らず、ゲームのプレイヤー中には色弱の方もいますので、文中等で補足した方が良いでしょう。
横方向に同じ色を連続させるか、きっちりとタイリングするかすると小さくなります。
配布時の容量を減らしたい場合は、高圧縮なツールを用いて圧縮すると良いでしょう。
実は一般的な圧縮方式は展開スピードの関係上使っておりません。その為、ツールによってはかなりサイズを縮める事が可能です。