ฉันต้องการบันทึกข้อมูลเกมที่กำหนดเอง แผนที่ผู้เล่น ฯลฯ
พวกเขาทั้งหมดจะมี "วัตถุย่อย" ตัวอย่างเช่นแผนที่และแผนที่จะมี "อาร์เรย์" ของไทล์ เช่นข้อมูลลำดับชั้น หวังว่าไม่มีอะไรไบนารี
อะไรคือรูปแบบที่ดีสำหรับสิ่งเหล่านี้
จนถึงตอนนี้ฉันก็ถือว่า:
Serailization:นี่คือเร็วและง่าย แต่มีแนวโน้มที่จะแตกเมื่อฉันเปลี่ยนคลาสพื้นฐาน :(
XML:ฉันเกลียดการแยกวิเคราะห์สิ่งนี้จริงๆ กรณีทดสอบของฉันมีโค้ดมากกว่า 100 บรรทัดและดูเหมือนว่า "งานที่ยุ่ง" มากมายสำหรับรูปแบบที่เรียบง่ายมาก
INI:จะค่อนข้างซุ่มซ่ามสำหรับข้อมูลลำดับชั้น
Protobuf:ไม่เคยใช้ แต่อ่านว่าคุณต้องทำเยอะแยะไปหมดและทำลายถ้าคุณเปลี่ยนชั้นเรียน
ตัวเลือกอื่น? นั่นคือเหตุผลที่ฉันมาที่นี่!
แก้ไข: นี่คือ Java btw
แก้ไข 2:
ฉันตัดสินที่ "การทำให้เป็นอันดับไบนารีควบคุม" (ดูด้านล่าง)
ข้อดี:
มันรวดเร็ว
มันมีขนาดเล็ก (บนดิสก์) และสามารถบีบอัด / คลายการบีบอัดได้อย่างง่ายดายระหว่างอ่าน / เขียน
มันง่ายมากที่จะอ่าน / เขียนจากเกมและชุดเครื่องมือ
ฉันสามารถตัดสินใจว่าจะรวม / ไม่รวมวัตถุ
วัตถุ / ข้อมูลสามารถซ้อนกันได้
จุดด้อย:
ไม่สามารถแก้ไขด้วยมือ (เช่น XML, YAML, ฯลฯ )
ไม่สามารถอ่าน / แก้ไขได้อย่างง่ายดายด้วยสคริปต์
Java Serialization เป็นค่าเริ่มต้นค่อนข้างช้า / บวมเมื่อเทียบกับ implentations อื่น ๆ แต่มีเสถียรภาพและใช้งานได้