데이터를 XML로 저장하는 레벨 편집 도구를 개발 중입니다.
이는 데이터 형식을 약간 변경하는 것이 번거롭지 않고 개발 과정에서 이상적이며 트리와 같은 데이터와 잘 작동합니다.
그러나 단점은 XML 파일이 태그와 속성 이름이 중복되어 다소 부풀어 있다는 것입니다. 또한 숫자 데이터가 기본 데이터 유형을 사용하는 것보다 훨씬 더 많은 공간을 차지하기 때문입니다. 작은 레벨은 1Mb +로 쉽게 끝날 수 있습니다. 특히 시스템이 메모리가 상대적으로 제한된 iPhone 또는 기타 장치의 게임에 사용되는 경우이 크기를 크게 줄이려고합니다.
메모리와 성능을위한 최적의 솔루션은 XML을 이진 수준 형식으로 변환하는 것입니다. 그러나 나는 이것을하고 싶지 않습니다. 형식을 상당히 유연하게 유지하고 싶습니다. XML을 사용하면 객체에 새 속성을 매우 쉽게 추가 할 수 있으며 이전 버전의 데이터가로드되는 경우 기본값을 제공합니다. 따라서 속성을 이름 값 쌍으로 사용하여 노드 계층 구조를 유지하려고합니다.
그러나 태그 / 속성 이름의 대규모 중복을 제거하기 위해 이것을보다 컴팩트 한 형식으로 저장해야합니다. 예를 들어 부동 소수점 데이터는 텍스트 문자열이 아닌 부동 소수점 당 4 바이트로 저장됩니다.
구글 / 위키피디아는 '이진 XML'이 새로운 문제가 아니라는 사실을 밝혀 냈습니다. 이미 여러 차례 해결되었습니다. 여기에 기존 시스템 / 표준에 대한 경험이있는 사람이 있습니까? -무료, 경량 및 크로스 플랫폼 파서 / 로더 라이브러리 (C / C ++)를 사용할 수있는 게임에 이상적입니까?
아니면이 바퀴를 다시 발명해야합니까?
아니면 이상적인 것을 잊어 버리고 원시 .xml 데이터를 압축하고 (zip과 같은 압축으로 압축해야 함)로드시 메모리 / 성능 히트를 취하는 것이 더 좋습니까?