The format PNG memiliki dukungan untuk lebih-atau-kurang sewenang-wenang metadata. Standar PNG mendefinisikan file PNG, pada dasarnya serangkaian potongan, beberapa di antaranya diperlukan (dan berisi data gambar). Namun, yang lain bersifat opsional. Misalnya, ada bongkahan untuk menyimpan informasi gamma atau data histogram.
Secara khusus, ada tEXt
potongan yang dapat digunakan untuk menyimpan pasangan teks kunci / nilai sewenang-wenang. Ini dapat digunakan untuk mengirim segala jenis data sewenang-wenang yang Anda inginkan, asalkan Anda dapat mewakili data tersebut sebagai teks (yang kemungkinan besar cukup).
Anda akan memerlukan pustaka PNG yang memungkinkan Anda mengakses dan memanipulasi potongan tambahan ini (seperti pustaka referensi ), atau Anda harus menulis sendiri. Maka itu hanya masalah memilih cara menyandikan data yang Anda inginkan sebagai pasangan kunci / nilai. Saya menyarankan yang berikut ini:
- pilih nama-nama kunci yang diawali dengan nama proyek Anda atau nama kode sebagai cara untuk menciptakan sistem "namespace" kasar dan menghindari potensi konflik dengan penggunaan data aplikasi lainnya oleh aplikasi.
- jangan mencoba menyimpan tekstur aktual dengan cara ini, simpan referensi ke tekstur yang mengarah ke dalam basis data aset gim Anda sendiri
- data seperti makhluk atau ukuran objek, berat, dan lain-lain - skalar sederhana, pada dasarnya - dapat disimpan secara sepele
Untuk kepentingan membuat jawaban yang lebih lengkap, saya juga akan menunjukkan bahwa ada pendekatan lain (sebelumnya didokumentasikan oleh jawaban @Vaughn dan @ Alexis): menyandikan data tambahan yang Anda inginkan langsung dalam piksel gambar Anda, mendistribusikan data Anda ke seluruh bit orde rendah dari saluran warna. Pendekatan ini tidak memerlukan penggunaan metadata tambahan, yang berarti Anda dapat menerapkannya sepenuhnya tanpa bergantung padanya atau khawatir tentang program eksternal yang salah menangani metadata itu. Itu juga punya faktor "keren" yang sangat tinggi, dan karena Anda hanya menggunakan bit orde rendah gambar akan tetap terlihat benar bagi mata manusia. Namun, itu berarti ukuran gambar Anda adalah faktor pengendali utama untuk jumlah data yang dapat Anda simpan; jika Anda membutuhkan lebih banyak penyimpanan, Anda harus mengalokasikan lebih banyak piksel ke gambar.
Seperti yang telah ditunjukkan orang lain, proses ini dikenal sebagai steganografi .