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

  • Двойные стандарты

    Интересно, почему вокруг так часто наблюдается страсть к двойным стандартам? Начиная с политики, и заканчивая соседями. Вот сгорает лампочка в корридоре – я выйду её и поменяю на свою. Но когда она сгорит в следующий раз – надо очень долго ждать, что сосед(ка) возьмёт и вкрутит свою – оно вроде бы и мелочь, а неприятно….

  • Киевская горка

    Ходили сегодня с Андрюхой (экс-старостой) на Протасов Яр покататься. В будни как-то поприятней выходит – народу поменьше, не так всё счёсано и не боишься налететь на кого-то или чтобы на тебя кто-то налетел 🙂 Огорчает только длина – она настолько маленькая, что подъем выходит значительно дольше спуска. Надо ехать в нормальные горы, пора… Share this…

  • Открытие журнала

    Вот и я заразился новомодной болезнью блоггинга 🙂 Тоже завел себе ЖЖ, надеюсь проболею еще долго, тенденция к чему-то такому у меня начала проявляться раньше – я начал писать daily journal в палм 🙂 Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit

  • x3m

    Наконец-то пришла суббота 13, мы отыграли и вчера (а точнее уже сегодня) финишировали в экстремальном квесте x3m, проходившему по Киеву и области. Мероприятие отличается от других квестов тем, что содержит много спецэтапов экстремального характера, тут и дюльфер (вертикальный спуск по верёвке, а ля спецназ с вертолёта), преодоление препятствий в верёвочном городке (на высоте 10-15 метров…

  • Гурт Йогурт

    Ходили вчера нашим дружным рабочим коллективом + ddima, который находится у нас с дружеско-рабочим визитом, в ирландский паб “to dublin”. Подают там ирландское пиво, в том числе и “Гиннес”, но мы то туда пошли совсем не за этим 🙂 Вчера там выступал “Гурт Йогурт” (группа Йогурт) – ребята, старые друзья Квакса (майн директор), которые играют…

  • Muse

    Ацкие панки – группа muse в ближайшую субботу (13.10.07) будут выступать у нас во дворце спорта – прикольно, учитывая эпопею с их приездом/неприездом в Киев – за 2 недели до концерта ещё не было точно понятно – будут ли они. И хотя билеты оказались несколько дороже, чем на всякие другие приезжие концерты, но думаю, оно…