Delta-Komprimierung ist eine Komprimierung von Delta-codierten Werten. Delta-Codierung ist eine Transformation, die eine unterschiedliche statistische Verteilung von Zahlen erzeugt. Wenn die Verteilung für den gewählten Komprimierungsalgorithmus günstig ist, wird die Datenmenge verringert. Es funktioniert sehr gut in einem System wie einem Spiel, in dem sich Entitäten zwischen zwei Aktualisierungen nur geringfügig bewegen.
Angenommen, Sie haben 100 Objekte in 2D. In einem großen Raster 512 x 512. Betrachtet man zum Beispiel nur ganze Zahlen. Das sind zwei ganze Zahlen pro Entität oder 200 Zahlen.
Zwischen zwei Aktualisierungen ändern sich alle unsere Positionen entweder um 0, 1, -1, 2 oder -2. Es gab 100 Instanzen von 0, 33 Instanzen von 1 und -1 und nur 17 Instanzen von 2 und -2. Das ist ziemlich häufig. Wir wählen Huffman-Codierung für die Komprimierung.
Der Huffman-Baum dafür wird sein:
0 0
-1 100
1 101
2 110
-2 1110
Alle Ihre Nullen werden als ein einziges Bit codiert. Das sind nur 100 Bits. 66 Werte werden als 3 Bit und nur 34 Werte als 4 Bit codiert. Das sind 434 Bits oder 55 Bytes. Hinzu kommt ein kleiner Aufwand, um unseren Mapping-Baum zu retten, da der Baum winzig ist. Beachten Sie, dass Sie zum Codieren von 5 Zahlen 3 Bits benötigen. Wir haben hier die Fähigkeit getauscht, 1 Bit für '0' zu verwenden, um 4 Bits für '-2' zu verwenden.
Vergleichen Sie dies nun mit dem Senden von 200 beliebigen Zahlen. Wenn sich Ihre Entitäten nicht auf derselben Kachel befinden, ist fast garantiert, dass Sie eine schlechte statistische Verteilung erhalten. Der beste Fall wären 100 eindeutige Zahlen (alle auf demselben X mit unterschiedlichem Y). Das sind mindestens 7 Bits pro Zahl (175 Bytes) und sehr schwer für jeden Komprimierungsalgorithmus.
Die Delta-Komprimierung funktioniert im Sonderfall, wenn sich Ihre Entitäten nur geringfügig ändern. Wenn Sie viele eindeutige Änderungen vorgenommen haben, hilft die Delta-Codierung nicht.
Beachten Sie, dass Delta-Codierung und Komprimierung auch in anderen Situationen mit anderen Transformationen verwendet werden.
MPEG teilt das Bild in kleine Quadrate und wenn sich ein Teil des Bildes bewegt, werden nur die Bewegung und eine Änderung der Helligkeit gespeichert. In einem 25-fps-Film sind viele Änderungen zwischen Bildern sehr gering. Wieder Delta-Codierung + Komprimierung. Funktioniert am besten für statische Szenen.