Saya ingin tahu solusi apa yang muncul dari pengembang game untuk membuat serial berbagai jenis data yang mereka tangani untuk game mereka. Apakah Anda menggunakan hierarki GameObject monolitik yang menampung antarmuka serialisasi untuk tipe turunan, menggunakan semacam solusi RTTI khusus, melakukan serialisasi stream eksplisit untuk kelas tertentu, atau menggunakan beberapa solusi open source (boost :: serialization, s11n, dll).
c++
serialization
Tandai
sumber
sumber
Jawaban:
Protokol buffer dari Google dapat menjadi pendekatan yang cukup bagus untuk membuat serialisasi objek c ++. Anda mungkin harus membuat beberapa objek perantara sebagai bagian dari proses serialisasi, tetapi juga berfungsi di banyak platform dan bahasa.
sumber
Kami dalam game kami cukup menggunakan boost.serilization , mudah digunakan dan sangat cepat, tapi menurut saya hanya berguna untuk savegames. Jika Anda mencoba membuat karakter, saya sarankan Anda sesuatu yang berbasis XML'ish atau JSON, karena mudah dibaca dan diedit walaupun Anda tidak memiliki editor.
sumber
Saya lebih suka JSON untuk serialisasi. Sangat mudah untuk menguraikan dan ada perpustakaan gratis yang tersedia seperti http://jsoncpp.sourceforge.net/ Saya tidak pernah menjadi penggemar dorongan atau RTTI di C ++. Tinyxml juga berfungsi dengan baik untuk serialisasi dan deserialisasi xml. http://www.grinninglizard.com/tinyxml/ Pada akhirnya saya tidak ingin harus menghabiskan lebih banyak waktu daripada saya harus serialisasi.
sumber
sumber
Paket pesan juga merupakan alternatif yang bagus! (http://msgpack.org)
sumber
XDS dirancang hanya untuk tujuan ini, ini memberi Anda manfaat XML selama pengembangan dan manfaat representasi biner kompak pada waktu distribusi.
sumber
Jika Anda menggunakan platform Linux, Anda dapat langsung menggunakan
json.h
perpustakaan untuk serialisasi. Berikut adalah contoh kode yang saya temui. Sumber: Json Serializersumber
Buffer jsonCpp dan Protokol adalah opsi yang baik. Setahu saya keduanya hanya akan memungkinkan Anda untuk struktur pohon serial di luar kotak (tolong perbaiki saya jika saya salah). boost :: serialisasi dapat menangani grafik yang berubah-ubah, tetapi tidak memiliki format teks yang bagus seperti json (saya pikir ada format xml)
Secara pribadi saya pikir pendekatan untuk serialisasi json yang telah diambil Dojo adalah yang terbaik
http://docs.dojocampus.org/dojox/json/ref
Saya membuat versi saya sendiri di c + + menggunakan jsoncpp, yang juga akan deserialize objek yang diketik (saya punya semacam pabrik besar untuk semua tipe saya). Ini memungkinkan saya untuk membuat heboh dari kumpulan file json yang bisa direferensikan, saya mohon.
sumber