增量压缩是增量编码值的压缩。增量编码是一种转换,会产生不同的数字统计分布。如果分布有利于选择的压缩算法,则它将减少数据量。它在像游戏这样的系统中效果很好,在该系统中,实体在两次更新之间仅略微移动。
假设您有100个2D实体。在大型网格上,为512 x512。为示例起见,仅考虑整数。这是每个实体两个整数或200个数字。
在两次更新之间,我们的所有位置都会改变0、1,-1、2或-2。有100个实例为0,33个实例为1和-1,只有17个实例为2和-2。这很普遍。我们选择霍夫曼编码进行压缩。
为此的霍夫曼树将是:
0 0
-1 100
1 101
2 110
-2 1110
您所有的0将被编码为单个位。只有100位。66个值将被编码为3位,而只有34个值将被编码为4位。那是434位或55个字节。再加上一些小的开销来保存我们的映射树,因为它很小。请注意,要编码5个数字,您需要3位。我们这里已经交换了使用1位表示“ 0”的能力,因为需要使用4位表示“ -2”。
现在比较一下,发送200个任意数字。如果您的实体不能在同一图块上,则几乎可以保证您得到的统计分布不正确。最好的情况是100个唯一数字(全部在同一X上,不同Y上)。每个数字至少7位(175字节),对于任何压缩算法来说都很难。
在特殊情况下,当您的实体变化很小时,增量压缩将起作用。如果您进行了许多独特的更改,则增量编码将无济于事。
请注意,增量编码和压缩还可以在其他情况下与其他转换一起使用。
MPEG将图片分割为小方块,如果图片的一部分移动,则仅保存移动和亮度变化。在25fps的电影中,帧之间的许多变化很小。同样,增量编码+压缩。最适合静态场景。