设为首页收藏本站官方微博

汉化资料 游戏常用压缩算法的介绍和识别

[复制链接]
查看: 2799|回复: 1
打印 上一主题 下一主题

[汉化资料] 游戏常用压缩算法的介绍和识别

跳转到指定楼层
楼主
发表于 2009-12-22 17:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

游戏常用压缩算法的介绍和识别

原文
: x, \- h: I6 ]- ^- }http://blog.csdn.net/vbvan/archive/2008/02/25/2118668.aspx
, k! C. g! v( h' R: n# u% J$ Y+ O( \" M
deflate# X4 H3 H; H0 |4 d+ ]
http://www.zlib.net/& d2 d* [9 g8 P  X5 N& o. \) I
这是ZIP默认采用的压缩算法。ZIP格式使用非常广泛,不仅有开源的C实现-zlib,还有众多的商业解决方案。因此在游戏中采用deflate,可以大大降低编程的成本。很多国外游戏的档案都采用这种压缩算法,或者直接使用ZIP文件格式存储资源。目前不少国内厂商也开始采用deflate。' i; C; C, [0 j$ ]0 ?) V
默认ZIP使用的deflate,传入的WindowBits是-0xF。而zlib中默认使用的WindowBits是0xF。) K- n2 _. t% F- y* A
采用0xF作为WindowBits时,压缩后的数据的第一个字节往往是0x78,这可以用于识别deflate算法。7 `8 i* x8 H( \
另外deflate算法通常都使用了zlib中的实现,在exe中会保留有版权信息:“ deflate 1.2.3 Copyright 1995-2005 Jean-loup Gailly ”,或者会带有zlib.dll。
5 L/ k9 V8 }1 D) b" X- p* o% O( n: W) M1 z
bzip2
5 R% s8 q# E  h+ ?2 Zhttp://www.bzip.org/" q0 ~  z  w* n; J' o
在游戏中很少见,不过确实有游戏公司采用。
7 p/ u3 P0 A2 ]' b2 T% L9 V它压缩之后的数据是以BZ开头的。: j  D' r3 ~8 W6 q) g. V
+ m1 y/ J) ~- u3 d: ]! h
lzo
1 |8 m1 @: t* L; ghttp://www.oberhumer.com/opensource/lzo/
" g9 D! B* t7 r+ Alzo是一种解压非常快速的压缩算法,通常开头若干字节不会被压缩。国内有几家公司使用了这种算法。
6 i6 ]* p, p9 [5 O1 _! |5 M4 {lzo的版权信息是:
( L  U& a+ T/ k/ ~“LZO data compression library.6 h+ o0 b% m5 _+ [, Z4 b8 y
$Copyright: LZO (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Markus Franz Xaver Johannes Oberhumer
2 ~0 V; @5 s" H7 H* X1 U<[email protected]>6 R1 o* k4 W+ ^  S0 w& J0 _# h; c3 y
http://www.oberhumer.com $”
3 }% Y, f# V# ?  g( a4 c( i) N% k/ ^' E
rle
5 [. a0 z* s% Q( thttp://www.datacompression.info/RLE.shtml, l( L4 ]1 z' f" C
RLE是一个非常简单的算法,变种非常多。通常用于图像数据的压缩。7 M& @. S+ K, Q# L9 @
较早的游戏一般用RLE算法压缩透明色。/ x, V4 ^: v/ ]9 \. t+ O, {
标准的rle算法通常用字节的高2位做标记,因此比较容易识别。
1 m0 W$ t8 P# [# B; P
/ @! I; v/ D1 ^) [0 E2 Ylzss) @* \  j' E0 G- i0 J3 _7 t
http://www.datacompression.info/LZSS.shtml& r: ?0 N+ _( h- h5 i# p, k
日本人Haruhiko Okumura发明的压缩格式。( D; |* g$ @- X' v0 f0 J$ K) z
这个算法有非常多的变种,在较早的游戏中比较常见。
, K  G# D6 a* x8 V, O仙剑1就采用了这种压缩算法的变种,它对压缩之后的数据做了huffman编码。# k" [) G/ U% }# |5 M& _  |
标准的LZSS算法采用单独的字节存储标记,所以通常数据的开头若干字节也是不会被压缩的。
, i3 R1 z0 J, J1 G8 T2 F/ ^$ f- u3 z( d4 D5 r: f$ c
lzhuf5 @6 O5 u% M5 @8 t+ C
日本人Haruyasu Yoshizaki发明的压缩格式,使用了huffman编码。
% N9 K9 M* G6 e/ j) k相比lzss更复杂一些,在早期的游戏中也比较常见。
/ O% Q, H3 v1 @( t# W* l9 z' {# G3 \0 P" z9 j
最后贴一篇压缩算法的历史回顾1 p" [5 N- A( v9 r
http://oku.edu.mie-u.ac.jp/~okumura/compression/history.html
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-12-22 19:16 | 只看该作者
我是进来膜拜霍夫曼大神的 [s:39]. D* d: z/ Z. Q9 q- a
! c" L( O' M. H/ [5 I- ~' b- E; H
Huffman编码. \% x% L; r( l. @7 y' w+ K! Z( d
Huffman编码是第一个真正实用的编码方法,由D.A.Huffman在1952年提出。当时Huffman是麻省理工学院的一名学生,据说为了向老 师证明自己可以不参加某门功课的期末考试,他设计了这个看似简单却影响深远的编码方法。Huffman编码效率高,运算速度快,实现方式灵活,从20世纪 60年代直到现在,在数据压缩领域得到了广泛的应用。而20世纪80年代初,Huffman编码又出现在CP/M和DOS系统中,即使在今天,在许多知名 的压缩工具和压缩算法里(如WinZip、gzip和JPEG),也都有Huffman编码的身影。不过,Huffman编码所得的编码长度只是对信息熵 计算结果的一种近似,并不能真正逼近信息熵的极限。Huffman编码影响力很深远,至今还在计算机大专学生必修课程《数据结构》中被提及。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表