デルタ圧縮は、デルタでエンコードされた値の圧縮です。デルタエンコーディングは、数値の異なる統計分布を生成する変換です。分布が選択した圧縮アルゴリズムに適している場合、データ量が低下します。これは、2つの更新間でエンティティがわずかしか移動しないゲームのようなシステムで非常にうまく機能します。
2Dに100個のエンティティがあるとします。512 x 512の大きなグリッド上。例のために整数のみを考慮しています。これは、エンティティごとに2つの整数値または200の数値です。
2回の更新の間に、すべての位置が0、1、-1、2、または-2のいずれかで変化します。0の100インスタンス、1および-1の33インスタンス、2および-2の17インスタンスのみがありました。これはかなり一般的です。圧縮にはハフマンコーディングを選択します。
このためのハフマンツリーは次のようになります。
0 0
-1 100
1 101
2 110
-2 1110
すべての0は単一ビットとしてエンコードされます。それはわずか100ビットです。66個の値は3ビットとしてエンコードされ、34個の値は4ビットとしてエンコードされます。それは434ビットまたは55バイトです。さらに、ツリーが小さいため、マッピングツリーを保存するための小さなオーバーヘッドがあります。5つの数値をエンコードするには、3ビットが必要であることに注意してください。ここでは、「-2」に4ビットを使用する必要があるため、「0」に1ビットを使用する機能を交換しました。
次に、これを200個の任意の番号の送信と比較します。エンティティを同じタイル上に配置できない場合、悪い統計分布が得られることがほぼ保証されます。最良のケースは、100個の一意の番号です(すべて同じXに異なるYを使用)。これは、数字あたり少なくとも7ビット(175バイト)であり、圧縮アルゴリズムにとっては非常に困難です。
エンティティが少ししか変更されない特別な場合に、デルタ圧縮が機能します。多くの独自の変更がある場合、デルタエンコーディングは役に立ちません。
デルタエンコーディングと圧縮は、他の変換を伴う他の状況でも使用されることに注意してください。
MPEGは画像を小さな正方形に分割し、画像の一部が動く場合、動きと変化だけが明るさで保存されます。25fpsムービーでは、フレーム間の多くの変更は非常にわずかです。繰り返しますが、デルタエンコーディング+圧縮。静的なシーンに最適です。