XML - хороший вибір, якщо ви не обмежені розміром, і він підтримується вбудовано (наприклад, у .NET і Flash), але якщо ви хочете тонкий формат, ви можете створити свій власний формат і аналізатор досить легко. Я зазвичай використовую 1 символ, наприклад. кома для відокремлення кожного об'єкта. Щоб розшифрувати рядок, зробіть розділення на коми. Тепер кожен об'єкт потребує різних властивостей, тому відокремте їх з різним символом, наприклад, двокрапкою, і використовуйте інший символ, щоб відокремити імена властивостей від домен властивостей, наприклад. Товста кишка. Все, таким чином, можна легко розшифрувати без регулярного вираження, лише використовуючи string.split. Ось приклад:
id:1;x:5;y:45.2;angle:45,id:28;x:56;y:89;angle:12;health:78
ви можете заощадити ще більше місця, зберігаючи імена властивостей до 1 символу, наприклад, h для здоров'я. Напр.
i:1;x:5;y:45.2;a:45,i:28;x:56;y:89;a:12;h:78
Порівняйте з альтернативою JSON:
{"o":[{"i":1, "x":5, "y":45.2, "a":45}, {"i":28, "x":56, "y":89, "a":12, "h":78}]}
Крім того, якщо ви хочете зменшити розмір своїх номерів, ви можете їх кодувати за допомогою повного набору символів для друку UTF16. Цей потік надихнув мене задати питання щодо переповнення стека, скільки даних ви можете упакувати в один екранний символ . Здається, у відповіді десь понад 40 000 значень для цілого числа, якщо ви не заперечуєте, щоб мати фігури з шарами, кандзі та шахи: ♔♕♖♗♘♙♚♛♜♝♞♟
Щоб отримати подальше зменшення розміру, ви можете використовувати порядок читання / запису, щоб визначити, яке значення є, тому перші два символи представляють ідентифікатор, наступні два - х, наступні два у, потім кут, потім здоров'я і т. д. Отже:
F5DGP@%&002DFTK#OP1F
може зберігати всю ту саму інформацію, що й інші приклади.
Сітки плитки можуть зберігатися лише як рядок із кожним символом, що представляє різний тип плитки, наприклад:
i789pog5h3kl
де я можу означати лаву, 9 означає траву тощо