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

  • Отчёт. День второй: драгобрат.

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

  • iAge of Hammer Wars

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

  • Google Traffic

    Гугль теперь и у нас показывает пробки, это почти прекрасно! Почти, потому что тянут информацию они с видео-пробок, а у тех с покрытием пока что не очень, но всё равно, здорово, что появляется хорошая альтернатива яндексу – конкуренция! Глядишь, когда-то у нас и TMC заработает – служба, которой умеют пользоваться многие обычные GPS приборы, рассылает…

  • природа экспромптом

    Вчера в 8 вечера внезапно выбрались на природу на шашлыки. Было холодно, ветрено, но тёплая одежда спасала, а когда разожгли костёр, то вообще отлично стало всё. Оказалось, что даже если на улице холодно, то на природу всё равно можно выбираться, ближе к занавесу даже хотелось остаться с ночёвкой. Выехали недалеко под Киев, можно сказать даже…

  • Генератор облаков

    Я написал эту шнягу, я даже заставил ее работать, но блин, она не хочет создавать прикольные облака, получаются только какие-то пасмурные небеса и усе… Еще я задолбался переделывать этот генератор, но я все-таки заставлю его делать то, что надо 🙂 Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on…

  • Ночной Киев

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