ゲーム用画像形式の性能評価 |
というわけで、今回は (c)AliceSoft の Windows95 専用ゲーム「鬼畜王ランス」の CG を用いて、各画像形式の圧縮性能を測ってみましょう。
というのも、今回は性能評価のために 12枚の CG を選択したわけですが、 それを一枚一枚、BMP に変換するのはやっぱりちょっと面倒ですね。 MList は基本的にはただのビューワですから、BMP にコンバートできる機能は あくまでもオプションなのです。 しかし、こうも大量の CG をコンバートしようと思うとちょっと骨が折れます。 私のページの BBS の方にこのような要望がくるのもわからなくもないですね。 大量の CG を一括でコンバートできなくとも、 せめてセーブファイル名のデフォルトの名前くらいダイアログに入れて おいた方がいいですねぇ。 次の、バージョンアップの時に頭にいれておきます。
まあ、そんなことを考える前に、まず 鬼畜王ランスの CG を選択していたわけですが、 久しぶりに見ると
なんて、懐かしさがこみ上げてきました。 で、いろいろ見ているとちょっと気になる CG を発見しました。 その CG とは
です。 ランスがハーレムで 4人の女の子と戯れいている CG なのですが、 一番右側の女の子が ダメ子ソックリなんですね。 まあ、原画さんが一緒ですから、そう無い話でもないとは思うのですがね。 千歳(みこさん)ともどもランスの世界から戦巫女の世界に転生したのでしょうか。 暇な方は自分の目でお確かめください。 ちなみに、街でさらに女の子を物色していると、この CG が次の CG
に変わるのですが、この CG の女の子は虹野さんに見えなくもないです。 まあ、どうでもいい話なんですけど。
アーカイブファイル | ファイル名 | ファイルサイズ |
---|---|---|
鬼畜王GB.ALD | CG0108.PMS | 100592 |
鬼畜王GB.ALD | CG0116.PMS | 108553 |
鬼畜王GB.ALD | CG0159.PMS | 110933 |
鬼畜王GB.ALD | CG0189.PMS | 99267 |
鬼畜王GB.ALD | CG0211.PMS | 114345 |
鬼畜王GB.ALD | CG0212.PMS | 132419 |
鬼畜王GB.ALD | CG0215.PMS | 125354 |
鬼畜王GA.ALD | CG0270.PMS | 16459 |
鬼畜王GA.ALD | CG0271.PMS | 18818 |
鬼畜王GA.ALD | CG0272.PMS | 18682 |
鬼畜王GB.ALD | CG0298.PMS | 22805 |
鬼畜王GA.ALD | CG1704.PMS | 4096 |
ファイルサイズから想像がつくかもしれませんが、 最初の 7枚の CG が通常のイベントシーンの CG(主にHシーン)であり、 残りの 5枚が 非常に単純な絵が描かれた CG です。
イベントシーンの CG は私が MList で閲覧しているときに 気に入った CG を適当に選択しています。 技術的にどうという明確な選択理由はありません。
また、非常に単純な絵を性能評価の対象にしているのは 画像形式によっては、複雑な CG と単純な CG とで明かに圧縮率が 変わるものがあるためです。 多く CG において、Aという画像形式は Bという画像形式より圧縮率が 良いという結果があったとしても、対象とする CG が非常に単純なものに 関しては、その性能が逆転することも十分考えられます。 個々の画像形式には得意とする CG の傾向があるからです。 そもそも今回の性能評価はそのような理由から始まっています。
非常に単純な CG とは、 具体的にはアーカイブファイルが鬼畜王GA.ALDである CG0270.PMS ,CG0271.PMS, CG0272.PMS の 3枚は黒いバックグランドに 単色(白)で大きな文字が書かれているエンディング用の CG です。 また、CG1704.PMS はオープニング用の CG で、黒いバックグラウンドに 24ドット程度の大きさの文字で「大陸」とだけ書かれたものです。 ファイルサイズから想像できるように本当に非常に単純な CGなのです。 なお、鬼畜王GB.ALD の CG0298.PMS は
の CG です。 なんとなく気に入ったので採用しました。
今回対象とする画像形式を以下に示します。
表記 | 備考 |
---|---|
BMP | Windows BMP ファイル |
BMP+LHa | BMP ファイルを LHa で圧縮したもの(Type = lh5) |
BMP+GZIP | BMP ファイルを Gzip で圧縮したもの(デフォルトオプション -6) |
MAG | 256 MAG |
MAG+LHa | MAG ファイルを LHa で圧縮したもの(Type = lh5) |
MAG+GZIP | MAG ファイルを Gzip で圧縮したもの(デフォルトオプション -6) |
GP8 | GP8, MCG, LF2。(この 3つの形式は全く同じ圧縮方法を用いている) |
GIF | GIF |
TIFF | TIFF(LZW圧縮形式) |
PMS | PMS |
PIC | PIC |
PI | 256 PI |
最近、MList を (c)Leaf の LF2 に対応させましたが、 その時、LF2 が GP8 と全く同じ圧縮方法を用いていることがわかりました。 これで私の知る限り GP8, MCG, LF2 の 3つは全く同じ圧縮方法を用いていることになります。 しかし、これは、この 3つの会社、(c)elf, (c)FandC, (c)Leaf の 3社の技術者につながりがあるという ことを直接的に意味するものではありません。 単に、誰もが同じことを考えていただけしょう。 なぜならば、それは、私も全く同じ圧縮方法を自作ゲーム用に使うつもりで圧縮プログラム作ってましたから。 そうでなければ、GP8 の形式をデータ見ただけで解析ができるわけないですね、普通は。 GPX も見ただけで解析しましたが、はて、これはどうしてでしょう。 もしかして、私って普通じゃない?
ファイル名 | PI | BMP+LHa | BMP+GZIP | MAG+LHa | MAG+GZIP | GP8 | PIC | GIF | TIFF | MAG | PMS | BMP |
---|---|---|---|---|---|---|---|---|---|---|---|---|
CG0108.PMS | 50657 | 55844 | 55856 | 60726 | 62138 | 66397 | 71479 | 74659 | 75394 | 92693 | 100592 | 189238 |
CG0116.PMS | 58189 | 62046 | 61314 | 68134 | 68949 | 73338 | 80166 | 76865 | 77758 | 102261 | 108553 | 189238 |
CG0159.PMS | 58884 | 65227 | 64880 | 68852 | 69603 | 75826 | 78000 | 83398 | 84070 | 97587 | 110933 | 189238 |
CG0189.PMS | 50049 | 56470 | 55923 | 60897 | 61792 | 65612 | 67590 | 74421 | 75076 | 89227 | 99267 | 189238 |
CG0211.PMS | 57719 | 66135 | 65504 | 72070 | 72878 | 75369 | 73158 | 85443 | 86088 | 100933 | 114345 | 189238 |
CG0212.PMS | 75794 | 79239 | 78952 | 84391 | 85072 | 91762 | 96770 | 98140 | 98652 | 117277 | 132419 | 189238 |
CG0215.PMS | 70932 | 80134 | 80186 | 82333 | 83204 | 92724 | 93332 | 100253 | 100820 | 109999 | 125354 | 189238 |
CG0270.PMS | 11619 | 10714 | 12670 | 10339 | 10181 | 35441 | 12569 | 10343 | 12856 | 22879 | 16459 | 257078 |
CG0271.PMS | 13354 | 12236 | 14396 | 11968 | 12078 | 35655 | 14350 | 12601 | 14688 | 25339 | 18818 | 257078 |
CG0272.PMS | 13458 | 12243 | 14454 | 11884 | 11984 | 35620 | 14383 | 12864 | 14894 | 24817 | 18682 | 257078 |
CG0298.PMS | 10037 | 12655 | 13557 | 14248 | 14663 | 33122 | 7053 | 17825 | 20036 | 25411 | 22805 | 257078 |
CG1704.PMS | 1392 | 1913 | 1965 | 795 | 819 | 31765 | 1460 | 1502 | 3558 | 9741 | 4096 | 257078 |
この表は全体的に見て、ファイルサイズが小さい画像形式を左に、 ファイルサイズが大きい画像形式を右側に配置しています。 PI と BMP+LHa, GP8, GIF, MAG, PMS だけを対象に考えれば、 基本的には前回同様の結果のように思われます。
基本的に Gzip は LHa より圧縮率が高いといわれています。 それは、LHa は圧縮率よりあまり時間をかけずに圧縮を行なうようにしている (しかし、それは極端に圧縮率を下げる要因とはならず、逆に圧縮率を上げる要因となる。) のに対し、Gzip は時間をかけ、より圧縮率を高めようとしているからです。 だからといって、Gzip は常に LHa より圧縮時間がかかるかというとそうでもありません。 Gzip はオプションにより、あまり時間をかけず圧縮率もそこそこという設定から、 時間をかけて高圧縮率狙うという設定を行なうことができるからです。 今回はデフォルトの設定で圧縮を行なっています。 しかし実際、デフォルトの設定と高圧縮率を狙う設定では、 圧縮率は 1%変わるかどうか、ほとんど誤差の範囲に収まります。 高圧縮率を狙う設定で圧縮を行なったとしても BMP+GZIP が現在浮動の 1位を保っている PI の座を 脅かすということにはならないでしょう。
LHa が単純なデータに強いその理由は恐らく、前述したように
もしかすると、MAG だけ 2重に圧縮することに不公平を感じている方もいるかもしれませんが、 実際にはそんなことはありません。 通常、なんらかの方法で圧縮されたものは、もう一度、他の方法で圧縮を試みても、そのサイズがほとんど変わりません。 したがって、GIF や TIFF を LHa で圧縮したからといって、サイズが極端に小さくなることはないのです。 MAG はあらかじめ 2重に圧縮されることを前提として作成されているため、 LHa や Gzip で圧縮するとそのサイズを小さくすることができるわけです。 これは、悪くいえば、さほど圧縮を行なっていないという意味にもとれます。 それは、MAG+LHa や MAG+GZIP よりも、 無圧縮の状態から圧縮を施した BMP+LHa や BMP+GZIP の方が圧縮率が高いという結果からも想像できると思います。
さて、BMP を LHa と Gzip で圧縮した場合は、シナリオシーン用の CG に関しては Gzip で圧縮した方が LHa で圧縮するよりも、高い圧縮率を示す事例が多いというのは前述した通りです。 具体的には 7枚の CG の内 5枚の CG で Gzip の方がファイルサイズが小さくなるという結果になっています。 ここで、MAG を LHa および Gzip で圧縮した結果のファイルサイズ、MAG+LHa と MAG+GZIP の項をみると 面白い結果を見ることができます。 BMP では 2:5 で Gzip の方が LHa に比べより多くのファイルにおいてファイルサイズが小さくなりました。 しかし、MAG に関しては単純な CG を含めた 12枚全ての CG において LHa で圧縮したファイルの方が Gzip で圧縮したファイルよりもファイルサイズが小さくなるという結果になっています。 この結果から MAG は Gzip よりも LHa と相性がよいということが言えそうです。 なぜ、Gzip より LHa の方が MAG との相性がいいのかというのには、
一般に MAG のデータが Gzip で圧縮されず、LHa で圧縮されるのは、 LHa がアーカイバであり、複数のファイルをまとめて圧縮できるのにたいし、 Gzip は単なる圧縮プログラムでありアーカイブ目的には使用しにくいという理由と 日本の DOS の世界ではあまりはやっていないという理由があると思います。 MAG は Gzip より LHa との方が相性がいいという理由により MAG は LHa で圧縮するべきだ と気がついていた人は上記の理由によりほとんどいなかったでしょう。 しかし、これからは確信をもって、MAG は LHa でアーカイブすべきであるということが言えそうです。
もう、気がついたでしょうか? 単純な CG の場合の GP8 の圧縮率が他の画像形式の圧縮率に比べ相対的に低い理由に。 実は、 GP8 の理論上の最大圧縮率は 1/8 なのです。 それゆえ、どんなに CG が単純になろうとも GP8 のファイルサイズは元の画像の 1/8 以下の サイズになることはなく、他の理論上の最大圧縮率が 1/8 以下である画像形式に比べ 相対的に圧縮率が低くなるのです。
以下に一部の画像形式の最大圧縮率を示します。
ソフトハウス | 画像形式 | 最大圧縮率 | 備考 |
---|---|---|---|
elf | GP8 | 1/8 | . |
Leaf | LF2 | 1/8 | . |
FandC | MCG | 1/8 | . |
elf | ABG | 1/512 | SS版YU-NO |
AliceSoft | PMS | 1/130 | . |
FandC | IPF | 1/340 | . |
ゲーム中で、圧縮率が軽く 1/8 を越えるような CG を使用するのは全体の CG から見れば、ごく小数です。 ですから、ゲーム用の画像形式として GP8 を用いることは通常問題になりません。 しかし、各ユーザが自由に描く CG は単純なものから複雑なものまでピンからキリまであります。 極端な話、真っ黒な絵を何枚も保存するのに、最大圧縮率が 1/8 では問題になるということです。 それゆえ、GP8と同様の画像形式は多くの人が考えつき、ゲームには使用されますが、 一般の CG としては使用されることはないのだと思います。
なお、ここまで長々とこの文を読んで頂いた方々に感謝します。