La compression delta est une compression de valeurs codées delta. Le codage delta est une transformation qui produit une distribution statistique différente des nombres. Si la distribution est favorable à l'algorithme de compression choisi, elle diminue la quantité de données. Cela fonctionne très bien dans un système comme un jeu où les entités ne se déplacent que légèrement entre deux mises à jour.
Disons que vous avez 100 entités en 2D. Sur une grande grille, 512 x 512. En ne prenant en compte que des nombres entiers à titre d'exemple. C'est deux nombres entiers par entité ou 200 nombres.
Entre deux mises à jour, toutes nos positions changent de 0, 1, -1, 2 ou -2. Il y a eu 100 instances de 0, 33 instances de 1 et -1 et seulement 17 instances de 2 et -2. C'est assez courant. Nous choisissons le codage Huffman pour la compression.
L'arbre Huffman pour cela sera:
0 0
-1 100
1 101
2 110
-2 1110
Tous vos 0 seront codés en un seul bit. Ce n'est que 100 bits. 66 valeurs seront codées en 3 bits et seulement 34 valeurs en 4 bits. C'est 434 bits ou 55 octets. Plus quelques petits frais généraux pour enregistrer notre arbre de cartographie, car l'arbre est minuscule. Notez que pour encoder 5 nombres, vous avez besoin de 3 bits. Nous avons échangé ici la possibilité d'utiliser 1 bit pour «0» pour la nécessité d'utiliser 4 bits pour «-2».
Comparez maintenant cela à l'envoi de 200 nombres arbitraires. Si vos entités ne peuvent pas être sur la même tuile, vous êtes presque assuré d'obtenir une mauvaise distribution statistique. Le meilleur cas serait de 100 numéros uniques (tous sur le même X avec des Y différents). C'est au moins 7 bits par nombre (175 octets) et très difficile pour tout algorithme de compression.
La compression delta fonctionne dans le cas spécial où vos entités ne changent que peu. Si vous avez beaucoup de changements uniques, l'encodage delta ne vous aidera pas.
Notez que l'encodage et la compression delta sont également utilisés dans d'autres situations avec d'autres transformations.
MPEG divise l'image en petits carrés et si une partie de l'image se déplace, seuls le mouvement et un changement de luminosité sont enregistrés. Dans un film à 25 images par seconde, de nombreux changements entre les images sont très faibles. Encore une fois, encodage delta + compression. Fonctionne mieux pour les scènes statiques.