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

  • Чудеса в решете (или упрощение визового режима с ЕС)

    Внезапно оказалось, что теперь не надо подавать справку с работы (которая про зарплату и отпуск), справку из банка (с состоянием счёта) и копию трудовой, чтобы оформить краткосрочную визу. Достаточно анкеты с фото, паспорта (куда ж без него), бронировку жилья (или приглашение) и мед. страховку (тоже полезная вещь). Афигеть, так сказать. Вот ссылка на достоверный источник…

  • Hammerwars 2.0

    Ура, вот мы и добрались до полок, подходи, налетай, хаммерварс покупай 🙂 А пока ждём прохождения рейтинга чтобы в америку попасть. Чорт, кто бы мог подумать, что в наше время повсеместной цифры и интернетов некоторые службы работают по обычной почте?! Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on…

  • Автоквест

    Подозреваю, что существует мало людей, которые бы не слышали когда-нить о странном мероприятии, под названием автоквест. Ну это то, где странные люди гоняют ночью по городу и что-то там ищут. Так вот, в субботу я на такое мероприятие попал. Очень понравилось! Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share…

  • debugger watches you

    Сидел я на выходных и развлекался отладкой одного production софта, который отлично работал на линуксе, но после того, как предыдущий сервер сдох, а на новом решено было ставить FreeBSD, обнаружилось странное выпадание программы, вместо корректной работы. Начал я гуглить туториалы по gdb и заниматься отладкой. С горем пополам обнаружилось, что происходит банальный проезд по памяти….

  • После военки

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