Serialization

Сегодня, наконец-то, закончил делать сериализацию для всяких игровых объектов – в том виде, как я ее вижу. Идеи были вытащены из буста, но так, как в тех шаблонах сам черт ногу сломит, то пришлось делать “по пониманию”.

Делалось это потому что реально существует проблема того, что когда геймдизайнер просит вынести ему новые параметры для настройки в конфиг, то это вызывает некоторые проблемы. Надо добавить аж три-четыре строчки 🙂
На самом деле реально проблема в том, что неясно бывает куда в иерархии игровых объектов впихнуть новый параметр и куда в хмл.

Фактически был реализован класс Archive, который содержит в себе несколько перегруженных операторов для записи POD-типов и перегруженный шаблонный оператор для сохранения всего остального.

template
Archive& operator>>(T& t)
{
t.DeSerialize(*this);
}

Вот такая незамысловатая реализация.

Реализация сериализации не-POD типов оставлена на “пользователя” и выглядит так же как и в бусте
void Square::DeSerialize(Archive& ar)
{
ar >> m_Rectangle;
ar >> m_Color;
//…..
}

Стоит добавить, что на самом деле реализация немножко не такая, из-за того, что в хмл надо хранить пары имя-значение, поэтому еще есть структурка, которая хранит имя переменной и ее значение, т.е.
ar >> MAKE_NVP(m_Rectangle); // NVP – Name-Value-Pair

Плюсом сериализации, имхо, является то, что мы автоматом получаем вычитывание целой иерархии объектов при том, что код становится проще и лучше структурированным.
Еще большим позитивом оказалось то, что глядя в сериализованный хмл начинаешь видеть огрехи в реализации архитектуры.

Similar Posts

  • Турция ч.2

    Румыния-2 Фагараш – Питешти – Бухарест (о. Снагов) – Констанца – Эфорие Норд Трансфагарашская дорога – горная трасса национального значения, с множеством поворотов на 180 градусов и проходящая через отметку 2044 метра над уровнем моря. Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit

  • PSP Video

    Как бы я не любил эту приставку, но иногда она своей “юзабилити” ставит в тупик. Что может объяснить удобство просмотра видео на ней? Для того, чтобы глянуть ролик, его надо положить в папку MP_ROOT, внутри которой будет ещё одна дружелюбная – 100MNV01. И в неё вы кладёте заботливо созданный video.mp4 файл. Вот только он называться…

  • Переезд

    Сегодня наконец-то наступил тот знаменательный день, когда мы начали паковать своё хозяйство и готовить к перевозке в новый офис. Новый офис – это прикольно, там будет своя парковка, больше простора и вроде даже более широкий тырнет. Последнее, правда, заботит не сильно, т.к. у меня дома и так полоса шире некуда 🙂 Добирание до офиса особо,…

  • “Отпуск”

    Сегодня у меня начался отпуск аж до понедельника (4 дня). В общем-то не очень плохо 🙂 Завтра попробую зайти в кассы и купить билет в Крым, если повезет, то завтра и уеду 🙂 Хоть посмотрю немного на море в этом году, поскольку что-то я не уверен в том, что к осени получится взять нормальный отпуск….

  • Снова карпаты

    На выходных я опять побывал в карпатах, на этот раз уже целых 2 дня в Пилипце. Впечатления сугубо позитивны 🙂 Теперь попробую подробнее 🙂 Приехали группой из 11 человек в Воловец в половине девятого утра, где нас встретил дядька на микроавтобусе, которому мы предусмотрительно позвонили заранее. Доехали до села, поселились в хате (тоже договорились заранее)…