ゲーム用画像形式の性能評価

PMS追跡調査

1998/5/16

  さて、前回、(c)elf の「臭作」の CG を 色々な画像形式にコンバートしてみました。 そのときの結果では、(c)AliceSoft の画像形式である PMS がその時コンバートした 画像形式の中では最低の圧縮率を示すという結果になったわけですね。 しかし、これは PMS の圧縮率は最低であるということを直接的に示しません。 もしかすると、PMS の形式は (c)AliceSoft が使用する画像に特化されており、 たまたま、(c)elf の画像とは相性が悪かったのかもしれないからです。

 というわけで、今回は (c)AliceSoft の Windows95 専用ゲーム「鬼畜王ランス」の CG を用いて、各画像形式の圧縮性能を測ってみましょう。

1. ちょっとその前に

  今回、PMS の性能を測るために使用する CG を鬼畜王ランスの CD の中から 拙作 MamiList (以下、MList) で探していたのですが、その時少し感じたことがあります。 それは、

 

「やっぱり MList に BMP 一括コンバート機能は欲しいなぁ。」
ということです。

 というのも、今回は性能評価のために 12枚の CG を選択したわけですが、 それを一枚一枚、BMP に変換するのはやっぱりちょっと面倒ですね。 MList は基本的にはただのビューワですから、BMP にコンバートできる機能は あくまでもオプションなのです。 しかし、こうも大量の CG をコンバートしようと思うとちょっと骨が折れます。 私のページの BBS の方にこのような要望がくるのもわからなくもないですね。 大量の CG を一括でコンバートできなくとも、 せめてセーブファイル名のデフォルトの名前くらいダイアログに入れて おいた方がいいですねぇ。 次の、バージョンアップの時に頭にいれておきます。

 まあ、そんなことを考える前に、まず 鬼畜王ランスの CG を選択していたわけですが、 久しぶりに見ると

 

「ああ、こんな CG だったけなぁ。」

  なんて、懐かしさがこみ上げてきました。 で、いろいろ見ているとちょっと気になる CG を発見しました。 その CG とは

 

鬼畜王GA.ALD/CG0215.PMS

  です。 ランスがハーレムで 4人の女の子と戯れいている CG なのですが、 一番右側の女の子が ダメ子ソックリなんですね。 まあ、原画さんが一緒ですから、そう無い話でもないとは思うのですがね。 千歳(みこさん)ともどもランスの世界から戦巫女の世界に転生したのでしょうか。 暇な方は自分の目でお確かめください。 ちなみに、街でさらに女の子を物色していると、この CG が次の CG

 

鬼畜王GA.ALD/CG0218.PMS

  に変わるのですが、この CG の女の子は虹野さんに見えなくもないです。 まあ、どうでもいい話なんですけど。

2. 性能評価に使用したファイル

  どうでもいいことをうだうだ書いてしまいましたが、 そのようなことを考えながら性能評価をするのに以下の 12枚の CG を選択しました。

 

表1. テスト CG
アーカイブファイルファイル名ファイルサイズ
鬼畜王GB.ALDCG0108.PMS100592
鬼畜王GB.ALDCG0116.PMS108553
鬼畜王GB.ALDCG0159.PMS110933
鬼畜王GB.ALDCG0189.PMS99267
鬼畜王GB.ALDCG0211.PMS114345
鬼畜王GB.ALDCG0212.PMS132419
鬼畜王GB.ALDCG0215.PMS125354
鬼畜王GA.ALDCG0270.PMS16459
鬼畜王GA.ALDCG0271.PMS18818
鬼畜王GA.ALDCG0272.PMS18682
鬼畜王GB.ALDCG0298.PMS22805
鬼畜王GA.ALDCG1704.PMS4096

 ファイルサイズから想像がつくかもしれませんが、 最初の 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 は

 

「おねがい。Please」

  の CG です。 なんとなく気に入ったので採用しました。

3. 性能評価対象

  今回は PMS からファイルを BMP に変換し、そのファイルから 種々の形式に変換します。 前回は GPX から BMP に変換したため、GPX と他の形式の性能を 比べることができました。 しかし、BMP から GPX に変換するツールが存在しないため、 今回は GPX との比較を行なうことはできません。 いづれ、BMP を GPX に変換するツールを作成したいと思います。

 今回対象とする画像形式を以下に示します。

 

表2. 性能評価対象
表記備考
BMPWindows BMP ファイル
BMP+LHaBMP ファイルを LHa で圧縮したもの(Type = lh5)
BMP+GZIPBMP ファイルを Gzip で圧縮したもの(デフォルトオプション -6)
MAG256 MAG
MAG+LHaMAG ファイルを LHa で圧縮したもの(Type = lh5)
MAG+GZIPMAG ファイルを Gzip で圧縮したもの(デフォルトオプション -6)
GP8GP8, MCG, LF2。(この 3つの形式は全く同じ圧縮方法を用いている)
GIFGIF
TIFFTIFF(LZW圧縮形式)
PMSPMS
PICPIC
PI256 PI

  最近、MList を (c)Leaf の LF2 に対応させましたが、 その時、LF2 が GP8 と全く同じ圧縮方法を用いていることがわかりました。 これで私の知る限り GP8, MCG, LF2 の 3つは全く同じ圧縮方法を用いていることになります。 しかし、これは、この 3つの会社、(c)elf, (c)FandC, (c)Leaf の 3社の技術者につながりがあるという ことを直接的に意味するものではありません。 単に、誰もが同じことを考えていただけしょう。 なぜならば、それは、私も全く同じ圧縮方法を自作ゲーム用に使うつもりで圧縮プログラム作ってましたから。 そうでなければ、GP8 の形式をデータ見ただけで解析ができるわけないですね、普通は。 GPX も見ただけで解析しましたが、はて、これはどうしてでしょう。 もしかして、私って普通じゃない?

4. 画像変換の結果と考察

  BMPファイルから各画像形式への変換には、前回使用したアプリケーションと同じものを 使用しました。 横長で非常に見づらいくて申し訳ないのですが、 以下に画像変換した後のファイルサイズを示します。

 

表3. 各画像形式のファイルサイズ
ファイル名PIBMP+LHaBMP+GZIPMAG+LHaMAG+GZIPGP8PICGIFTIFFMAGPMSBMP
CG0108.PMS50657558445585660726621386639771479746597539492693100592189238
CG0116.PMS581896204661314681346894973338801667686577758102261108553189238
CG0159.PMS58884652276488068852696037582678000833988407097587110933189238
CG0189.PMS5004956470559236089761792656126759074421750768922799267189238
CG0211.PMS577196613565504720707287875369731588544386088100933114345189238
CG0212.PMS757947923978952843918507291762967709814098652117277132419189238
CG0215.PMS70932801348018682333832049272493332100253100820109999125354189238
CG0270.PMS1161910714126701033910181354411256910343128562287916459257078
CG0271.PMS1335412236143961196812078356551435012601146882533918818257078
CG0272.PMS1345812243144541188411984356201438312864148942481718682257078
CG0298.PMS100371265513557142481466333122705317825200362541122805257078
CG1704.PMS1392191319657958193176514601502355897414096257078

  この表は全体的に見て、ファイルサイズが小さい画像形式を左に、 ファイルサイズが大きい画像形式を右側に配置しています。 PI と BMP+LHa, GP8, GIF, MAG, PMS だけを対象に考えれば、 基本的には前回同様の結果のように思われます。

 

4.1. LHa と Gzip と MAG

  今回の性能評価の趣旨とはことなりますが、 LHa と Gzip に関して面白い結果が表に表れているといえます。

 基本的に Gzip は LHa より圧縮率が高いといわれています。 それは、LHa は圧縮率よりあまり時間をかけずに圧縮を行なうようにしている (しかし、それは極端に圧縮率を下げる要因とはならず、逆に圧縮率を上げる要因となる。) のに対し、Gzip は時間をかけ、より圧縮率を高めようとしているからです。 だからといって、Gzip は常に LHa より圧縮時間がかかるかというとそうでもありません。 Gzip はオプションにより、あまり時間をかけず圧縮率もそこそこという設定から、 時間をかけて高圧縮率狙うという設定を行なうことができるからです。 今回はデフォルトの設定で圧縮を行なっています。 しかし実際、デフォルトの設定と高圧縮率を狙う設定では、 圧縮率は 1%変わるかどうか、ほとんど誤差の範囲に収まります。 高圧縮率を狙う設定で圧縮を行なったとしても BMP+GZIP が現在浮動の 1位を保っている PI の座を 脅かすということにはならないでしょう。

4.1.1. 単純なデータに強い LHa

  Gzip の方が圧縮率がいいとされますが、今回の BMP+LHa と BMP+GZIP に着目してみると 面白い結果がみられます。 シナリオシーン用の 最初の 7枚の CG では BMP+LHa と BMP+GZIP のどちかが常に 他方よりファイルサイズが小さいという結果は得られていないようです。 しかし、どちらかといえば BMP+LHa より、BMP+GZIP の方がファイルサイズが 小さくなっているように見えます。 ところが、単純な CG である後半の 5枚の CGに関しては常に BMP+LHa が BMP+GZIP より ファイルサイズが小さいという結果が得られています。 これだけで、LHa は単純なデータに強いと断言することはできないでしょう。 しかし、私の過去の経験上、LHa は同様のアルゴリズムをもつ圧縮ツールの 中でかなり単純なデータに関しては、圧縮率が優れていると思われます。 私の過去の経験というのは、私が昔圧縮プログラムを作った時の話になります。 この時、性能評価の対象として LHa を選んび、大抵のファイルに関しては私の作成したプログラムの方が LHa より高圧縮率を示しました。 しかし、こと単純なデータに関しては LHa にかなわなかったという経験があるのです。

 LHa が単純なデータに強いその理由は恐らく、前述したように

あまり時間をかけずに圧縮を行なう
そのコンセプトのためではないかと思います。 というのは、過去に単純なデータに対し、このコンセプトを用いると、圧縮率が上がるという結果を得た 経験があるからです。

4.1.2. MAG との相性の良い LHa

  MAG は LHa などの圧縮ツールで 2重圧縮されることを前提とし、 MAG が登場した当時のマシンである程度高速に画面表示を行なえるように 考えられて作成された画像形式です。 それゆえ、MAG 自身の圧縮率はたいして高くはなく、 今回の結果の表を見ても MAG の名前は表の右側の方に配置されています。(それでも、PMS よりは圧縮率が高い!) したがって、MAG の画像形式の性能を正しく評価するには、LHa や Gzip 等で 2重に圧縮し、その圧縮後のサイズで 評価する必要があります。

 もしかすると、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 との相性がいいのかというのには、

  1. MAG が LHa に特化するようにカスタマイズされている。
  2. MAG は単純なデータであり、単純なデータに強い LHa の方が圧縮率が高い。
の 2通りの理由が考えられます。 LHa に特化するというのは、データを単純にするということだと考えれば、 前者と後者はほぼ同じ理由になります。

 一般に MAG のデータが Gzip で圧縮されず、LHa で圧縮されるのは、 LHa がアーカイバであり、複数のファイルをまとめて圧縮できるのにたいし、 Gzip は単なる圧縮プログラムでありアーカイブ目的には使用しにくいという理由と 日本の DOS の世界ではあまりはやっていないという理由があると思います。 MAG は Gzip より LHa との方が相性がいいという理由により MAG は LHa で圧縮するべきだ と気がついていた人は上記の理由によりほとんどいなかったでしょう。 しかし、これからは確信をもって、MAG は LHa でアーカイブすべきであるということが言えそうです。

4.1.3. 単純なデータに弱い GP8

  (c)elf, (c)FandC, (c)Leaf そして、私。 多くの人が考え付く最も単純な画像圧縮形式である GP8, MCG, LF2 の圧縮性能は よく利用されている画像形式 PIC, GIF, TIFF, MAG よりも圧縮率が高いという結果になっています。 しかし、これはシナリオシーン用の 7枚の CG に関してのみであり、 単純な CG である残りの 5 枚の CG に関しては今回対象とした画像形式の中では最もサイズが大きいことに 気がつきます。 この結果からわかるように GP8 はあまりにも単純な CG に対してはあまり良い圧縮率を示しません。 なぜでしょう。 勘の良い方なら、もうすでに気がついているかもしれません。 GP8 は単純な CG に対して良い圧縮率を示さないと前述しました。 実際のところ、元のファイル CG0270.BMP では ファイルサイズが 257078 であるのに対し、 それを GP8 に変換したもののサイズは 35441 となっています。 この場合、およそ 1/8 の圧縮率ということになり、この圧縮率は決して低いということはありません。 むしろ、逆に高い圧縮率を示しているといえます。 したがって、これを正確に言うと
GP8 は単純なデータの場合は他の画像形式に比べ相対的に圧縮率が低い
ということになります。 その理由は、CG1704.BMP の CG に関するファイルサイズと他の単純な CGに関するファイルサイズを 見比べてみるとよくわかります。 例えば、 CG0298.BMP のファイルサイズは CG1704.BMP と同様 257078 です。 表より、CG0298.BMP を MAG に変換した時のファイルサイズは 25411 です。 それに対し、CG1704.BMP を MAG に変換した時のファイルサイズは 9741 となり、 このサイズは CG0298.BMP を MAG に変換した時と比べ、ファイルサイズが 1桁も異なってきます。 この傾向は GP8 以外の全ての画像形式についても同じことが言えます。 では、GP8 ではどうでしょうか。 CG0298.BMP を GP8 に変換した時のファイルサイズは 33122 であり、 また、CG1704.BMP を GP8 に変換した時のファイルサイズは 31765 となります。 これはサイズが 1桁ことなるどころか、ファイルサイズがほとんど変わりません。 圧縮率でいえば、どちらも 1/8 程度の圧縮率ということになります。

 もう、気がついたでしょうか? 単純な CG の場合の GP8 の圧縮率が他の画像形式の圧縮率に比べ相対的に低い理由に。 実は、 GP8 の理論上の最大圧縮率は 1/8 なのです。 それゆえ、どんなに CG が単純になろうとも GP8 のファイルサイズは元の画像の 1/8 以下の サイズになることはなく、他の理論上の最大圧縮率が 1/8 以下である画像形式に比べ 相対的に圧縮率が低くなるのです。

 以下に一部の画像形式の最大圧縮率を示します。

 

表4. 理論上の最大圧縮率
ソフトハウス画像形式最大圧縮率備考
elfGP81/8.
LeafLF21/8.
FandCMCG1/8.
elfABG1/512SS版YU-NO
AliceSoftPMS1/130.
FandCIPF1/340.

  ゲーム中で、圧縮率が軽く 1/8 を越えるような CG を使用するのは全体の CG から見れば、ごく小数です。 ですから、ゲーム用の画像形式として GP8 を用いることは通常問題になりません。 しかし、各ユーザが自由に描く CG は単純なものから複雑なものまでピンからキリまであります。 極端な話、真っ黒な絵を何枚も保存するのに、最大圧縮率が 1/8 では問題になるということです。 それゆえ、GP8と同様の画像形式は多くの人が考えつき、ゲームには使用されますが、 一般の CG としては使用されることはないのだと思います。

4.2. 今回のメイン PMS

  今回の画像形式の性能評価は PMS が (c)elf の傾向の CG では比較した中では最低の圧縮率を示したということから 始めました。 それでは、実際、(c)AliceSoft の傾向の CG ではどのような圧縮率を示すのかを見るために。 しかし、結果は前回同様、比較した中では最低の結果を示しました。 だた、例外として、単純な CG に関しては、最大圧縮率が 1/8 の GP8 が最低の圧縮率を 示したため、全てにおいて最低の圧縮率となるという結果にはならずに済んだようです。 また、単純な CG に関しては PMS はまた、MAG よりは圧縮率は良いようです。 これは、MAG も GP8 ほどではないにしろ、単純な CG に弱いという結論に達します。

5. 終りに

  今回の画像性能評価は PMS に名誉挽回のチャンスを与えようとして始めたのですが、 実際、蓋を空けてみればよりいっそう、顔に泥を塗るようなことをしてしまったのではないかと 思っています。 また、今回、昔とったきねづかとでもいうのか、こと圧縮のこととなると長々と書いてしまい、 メインである PMS のことについてはほんの少ししか書いていないという状態になり多少反省しております。

 なお、ここまで長々とこの文を読んで頂いた方々に感謝します。


Return