Saya telah mengerjakan RPG sekarang untuk sementara dan saya menggunakan dua teknik serialisasi yang berbeda.
- Musuh, Senjata, item disimpan seperti XML.
- Peta dan acara disimpan sebagai "biner terkontrol" (setiap kelas mendapatkan metode simpan / muat dan mereka memutuskan apa yang ingin disimpan / dimuat).
Tapi saya sudah mulai mempertanyakan pilihan saya untuk peta dan acara. Kekhawatiran saya:
- Saya telah membuat editor peta tetapi saya masih rindu untuk dapat mengubah hal-hal kecil dengan hanya membuka file.
- Perubahan sangat kacau. Katakan bahwa saya ingin menambahkan variabel ke kelas, jika saya tidak memuat / menyimpan setiap peta lagi, ia akan rusak nanti.
Kekhawatiran pertama adalah sulit untuk berkeliling tanpa mengubah teknik saya. Saya berpikir untuk berganti ke JSON, tapi ini banyak pekerjaan. Saya juga berpikir itu terlihat sangat jelek dengan atribut [DataContract] dan [DataMember] di mana-mana.
Itu meninggalkan saya dengan keprihatinan kedua saya dan saya bertanya-tanya bagaimana saya bisa menghadapinya? Apakah Anda membuat program kecil yang mengulang semua peta dan menyimpannya kembali dengan variabel baru? Karena saya mulai mendapatkan beberapa peta sekarang dan saya masih melakukannya secara manual. Itu membuat saya berpikir dua kali setiap kali saya ingin melakukan beberapa perubahan karena itu membuat banyak pekerjaan tambahan.
sumber
Gunakan bahasa markup dengan pasangan nilai atribut seperti XML atau JSON.
Parser dapat mengabaikan atribut apa pun yang tidak dimengerti atau menggunakan default untuk yang tidak ditemukannya, yang membuat kompatibilitas mundur dan maju cukup mudah. Juga, formatnya dapat dibaca oleh manusia sehingga Anda dapat dengan mudah mengeditnya dengan editor teks.
Saat Anda menggunakan bahasa mapan seperti XML atau JSON, Anda juga akan melihat bahwa banyak bahasa skrip mendukungnya, jadi ketika Anda masih perlu menulis skrip untuk mengedit sejumlah besar file, Anda akan merasa jauh lebih mudah untuk melakukannya.
Kelemahan dari sebagian besar bahasa ini adalah bahwa mereka cukup bertele-tele. Itu berarti file yang dihasilkan jauh lebih besar daripada yang diperlukan dengan format biner yang dioptimalkan. Saat ini, ukuran file tidak terlalu penting di sebagian besar situasi. Tetapi pada mereka yang penting, ukuran file sering dapat dikurangi secara signifikan dengan mengompresi file dengan algoritma stok seperti zip.
Bahasa markup sering tidak memungkinkan akses acak kecuali seluruh dokumen dibaca dari hard drive dan diuraikan. Namun dalam praktiknya ini tidak terlalu menjadi masalah, karena hard drive paling cepat dengan pembacaan berurutan. Secara acak mencari beberapa kali ke berbagai bagian file yang sama seringkali jauh lebih lambat daripada hanya membaca file dalam sekali jalan, bahkan ketika itu berarti Anda membaca lebih banyak data daripada yang Anda perlukan.
sumber
Anda dapat menggunakan protobuf. https://code.google.com/p/protobuf/ Ini memberi Anda keuntungan dari json / xml, bahwa Anda dapat dengan mudah memperpanjangnya sambil menjadi kompatibel ke belakang, ditambah keuntungan menjadi biner. Alur kerjanya adalah, bahwa Anda membuat deskripsi format data dalam bahasa protobuf dan kemudian menghasilkan kode sumber untuk serialisasi dan deserialisasi. Sumber dapat dihasilkan untuk beberapa bahasa. Juga merupakan keuntungan besar bahwa Anda memiliki spesifikasi yang jelas dari data serial Anda, berbeda dengan json di mana spesifikasi dilakukan secara implisit dalam membaca / menulis.
sumber