Kompresi delta adalah kompresi nilai-nilai yang dikodekan delta. Pengkodean Delta adalah transformasi yang menghasilkan distribusi angka statistik yang berbeda. Jika distribusi menguntungkan untuk algoritma kompresi yang dipilih, itu menurunkan jumlah data. Ini bekerja sangat baik dalam sistem seperti game di mana entitas hanya bergerak sedikit antara dua pembaruan.
Katakanlah Anda memiliki 100 entitas dalam 2D. Pada kisi besar, 512 x 512. Mempertimbangkan hanya bilangan bulat demi contoh. Itu dua angka integer per entitas atau 200 angka.
Di antara dua pembaruan, semua posisi kami berubah dengan 0, 1, -1, 2 atau -2. Ada 100 contoh 0, 33 contoh 1 dan -1 dan hanya 17 contoh 2 dan -2. Ini sangat umum. Kami memilih pengkodean Huffman untuk kompresi.
Pohon Huffman untuk ini adalah:
0 0
-1 100
1 101
2 110
-2 1110
Semua 0 Anda akan dikodekan sebagai bit tunggal. Itu hanya 100 bit. Nilai 66 akan dikodekan sebagai 3 bit dan hanya 34 nilai sebagai 4 bit. Itu 434 bit atau 55 byte. Ditambah beberapa overhead kecil untuk menyelamatkan pohon pemetaan kami, karena pohon itu kecil. Perhatikan bahwa untuk menyandikan 5 angka, Anda membutuhkan 3 bit. Kami telah diperdagangkan di sini kemampuan untuk menggunakan 1 bit untuk '0' untuk kebutuhan menggunakan 4 bit untuk '-2'.
Sekarang bandingkan ini dengan mengirim 200 nomor acak. Jika entitas Anda tidak dapat berada di ubin yang sama, Anda hampir dijamin bahwa Anda mendapatkan distribusi statistik yang buruk. Kasing terbaik adalah 100 nomor unik (semua pada X yang sama dengan Y yang berbeda). Itu setidaknya 7 bit per angka (175 byte) dan sangat sulit untuk semua algoritma kompresi.
Kompresi delta bekerja dalam kasus khusus ketika entitas Anda hanya berubah sedikit. Jika Anda memiliki banyak perubahan unik, pengkodean delta tidak akan membantu.
Perhatikan bahwa pengkodean dan kompresi delta digunakan dalam situasi lain dengan transformasi lain juga.
MPEG membagi gambar dalam kotak kecil dan jika bagian gambar bergerak, hanya gerakan dan perubahan kecerahan yang disimpan. Dalam film 25fps, banyak perubahan di antara frame sangat kecil. Sekali lagi, delta encoding + kompresi. Berfungsi paling baik untuk adegan statis.