Verilerini XML olarak kaydeden bir seviye düzenleme aracı üzerinde çalışıyorum.
Bu, veri biçiminde küçük değişiklikler yapmak acısız olduğu ve ağaç benzeri verilerle güzel çalıştığı için geliştirme sırasında idealdir.
Olumsuz tarafı, XML dosyalarının çoğunlukla etiket ve özellik adlarının çoğaltılması nedeniyle oldukça şişkin olmasıdır. Ayrıca sayısal verilerin yerel veri türlerini kullanmaktan çok daha fazla yer kaplaması nedeniyle. Küçük bir seviye kolayca 1Mb + olarak sonuçlanabilir. Özellikle sistem iPhone'da veya nispeten sınırlı belleği olan diğer cihazlarda bir oyun için kullanılacaksa, bu boyutları önemli ölçüde azaltmak istiyorum.
Bellek ve performans için en uygun çözüm, XML'i ikili düzey biçimine dönüştürmek olacaktır. Ama bunu yapmak istemiyorum. Biçimi oldukça esnek tutmak istiyorum. XML, nesnelere yeni özellikler eklemeyi ve verilerin eski bir sürümü yüklüyse onlara varsayılan bir değer vermeyi çok kolaylaştırır. Bu nedenle, ad-değer çiftleri olarak özniteliklerle düğüm hiyerarşisine bağlı kalmak istiyorum.
Ancak bunu daha kompakt bir formatta saklamam gerekiyor - etiket / özellik adlarının büyük kopyalarını kaldırmak için. Özniteliklere yerel türler de vermek için, örneğin, kayan nokta verileri bir metin dizesi olarak değil, kayan nokta başına 4 bayt olarak depolanır.
Google / Wikipedia, 'ikili XML'in neredeyse yeni bir sorun olduğunu ortaya koyuyor - zaten birkaç kez çözüldü. Buradaki herhangi biri mevcut sistem / standartlardan herhangi biri ile deneyime sahip mi? - Ücretsiz, hafif ve platformlar arası ayrıştırıcı / yükleyici kitaplığı (C / C ++) ile oyun kullanımı için herhangi bir ideal var mı?
Yoksa bu tekerleği kendim mi yeniden keşfetmeliyim?
Ya da ideali unutmaktan ve sadece ham .xml verilerimi sıkıştırmaktan (zip benzeri sıkıştırma ile iyi bir şekilde paketlenmelidir) ve sadece bellek / performans yükü üzerine yüklüyorum?