Pull to refresh

Comments 12

Я когда-то для этих целей написал библиотеку и тулзу позволяющую конвертировать YAML в бинарный файл, а потом получать к этому доступ в рантайме. Хотя и появляется дополнительный этап конвертации данных, у такого подхода есть преимущества. Например, минимальная фрагментация памяти, т.к. все загружается одним блоком и больше никогда не меняется. Скорость загрузки тоже заметно возрастает — всего один read. В играх это все актуально. На большом количестве файлов yaml-cpp заметно тормозил. Ну и доступ был достаточно удобный:

rodb::Database db("config.rodb");
rodb::Value root = db.root();

float x = root["ball"]["start_position"]["x"];
float y = root["ball"]["start_position"]["y"];

Код лежит тут, если интересно: https://github.com/detunized/rodb
Спасибо, дома обязательно посмотрю (на работе нет доступа к GitHub).
на работе нет доступа к GitHub
o_O
Вы в microsoft работаете?
Нет. Я не знаю причин по которым доступ к GitHub закрыт, а спрашивать админа как-то не с руки, поскольку для моей работы доступ туда не нужен (пока во всяком случае).
И почему же вы не показываете нам лаконичность YAML, а вместо этого yaml-парсером парсите json? Я люблю yaml, и как-то грустно видеть такое его использование. Вот, например, лаконичная запись вашего уровня на валидном YAML.
Целиком поддерживаю, все эти скобки и непонятная вложенность в примере в статье на корню убивают «понятный человеку и легко редактируемый вид».
Согласен, критика вполне объективна. Дело в том, что мне не очень нравятся языки со значимыми отступами (но это просто мои тараканы). Что касается сравнения лаконичности YAML и JSON, тема вполне раскрыта на Wiki, каждый волен выбирать тот вариант, который ему больше нравится. Главное, что выбор этот есть.
Стоит добавить, что, в отличие от XML и JSON, YAML не поддерживается Android «из коробки», поэтому придётся подтягивать сторонние библиотеки в любом случае.
Статья больше про Marmalade чем чисто про Android. И вроде-бы я где-то в мармеладе видел JSON-парсер, но когда писал вчера статью, не нашел. Поэтому писать об этом не стал.
В целом, статья даже больше о том, как прикрутить стороннюю C++ библиотеку к Marmalade-проекту
DispFixRot=FixedPortrait не всегда работает правильно на Анроиде. Лучше в main.cpp пропишите
s3eSurfaceSetInt(S3E_SURFACE_DEVICE_ORIENTATION_LOCK, S3E_SURFACE_PORTRAIT_FIXED);
Спасибо, буду иметь в виду.
Sign up to leave a comment.

Articles

Change theme settings