deflate
http://www.zlib.net/
这是ZIP默认采用的压缩算法。ZIP格式使用非常广泛,不仅有开源的C实现-zlib,还有众多的商业解决方案。因此在游戏中采用deflate,可以大大降低编程的成本。很多国外游戏的档案都采用这种压缩算法,或者直接使用ZIP文件格式存储资源。目前不少国内厂商也开始采用deflate。
默认ZIP使用的deflate,传入的WindowBits是-0xF。而zlib中默认使用的WindowBits是0xF。
采用0xF作为WindowBits时,压缩后的数据的第一个字节往往是0x78,这可以用于识别deflate算法。
另外deflate算法通常都使用了zlib中的实现,在exe中会保留有版权信息:“ deflate 1.2.3 Copyright 1995-2005 Jean-loup Gailly ”,或者会带有zlib.dll。
bzip2
http://www.bzip.org/
在游戏中很少见,不过确实有游戏公司采用。
它压缩之后的数据是以BZ开头的。
lzo
http://www.oberhumer.com/opensource/lzo/
lzo是一种解压非常快速的压缩算法,通常开头若干字节不会被压缩。国内有几家公司使用了这种算法。
lzo的版权信息是:
“LZO data compression library.
$Copyright: LZO (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Markus Franz Xaver Johannes Oberhumer
<[email protected]>
http://www.oberhumer.com $”
rle
http://www.datacompression.info/RLE.shtml
RLE是一个非常简单的算法,变种非常多。通常用于图像数据的压缩。
较早的游戏一般用RLE算法压缩透明色。
标准的rle算法通常用字节的高2位做标记,因此比较容易识别。
lzss
http://www.datacompression.info/LZSS.shtml
日本人Haruhiko Okumura发明的压缩格式。
这个算法有非常多的变种,在较早的游戏中比较常见。
仙剑1就采用了这种压缩算法的变种,它对压缩之后的数据做了huffman编码。
标准的LZSS算法采用单独的字节存储标记,所以通常数据的开头若干字节也是不会被压缩的。
lzhuf
日本人Haruyasu Yoshizaki发明的压缩格式,使用了huffman编码。
相比lzss更复杂一些,在早期的游戏中也比较常见。
最后贴一篇压缩算法的历史回顾
http://oku.edu.mie-u.ac.jp/~okumura/compression/history.html
RPGViewer - 游戏常用压缩算法的介绍和识别
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
游戏资源提取软件介绍
vbvan
2018-08-23 17:30:18
汉之云的“免CD”,盗版商的胜利?
vbvan
2018-08-23 17:30:16
程序分析实例 - 无双大蛇(Orochi)
vbvan
2018-08-23 17:30:16
解密QQ消息文件格式
vbvan
2018-08-23 17:30:14
WIndows Basic IO
mingbowang
2018-08-27 14:41:34
Windows进程启动过程
mingbowang
2018-08-27 14:41:34
关于windowsx.h的介绍
dcye2008
2018-08-26 12:32:02
COM 组件设计与应用
lazing
2018-08-26 06:51:28
谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词 ZZ
lazing
2018-08-26 06:51:28
[转]C/C++ HOOK API(原理深入剖析之-LoadLibraryA)
nickscofield
2018-08-24 20:41:24
Thread Local Storage
alunlee
2018-08-24 17:01:58
SEO简介
mirrorming
2018-08-26 22:03:09
X86-64 CPU架构以及64 位GCC对程序编译处理的一些变化
JochenZou
2018-08-24 22:15:21
C++ Internals: 序言
vbvan
2018-08-23 17:30:16