Я пытаюсь сериализовать / десериализовать игровую сцену для отправки / получения по сети и сохранения / загрузки с / на диск.
Мой игровой движок использует узлы и компоненты, и, таким образом, это единственные объекты, которыенужна сериализация.Сцена может выглядеть так:
Root Node
- Node
- SpecializedComponent
- SpecializedComponent
- Node
- Node
- Node
- Node
- Node
- Node
- Node
- SpecializedComponent
- Node
Узел в основном такой:
class Node {
map<String, Node> mChildren;
map<String, Component> mComponents;
uuid_t mId;
Node* mParent;
};
Специализированный компонент в основном такой:
class SpecializedComponent : public Component {
uuid_t mId;
Node* mNode;
};
Я бы хотеллибо использовать YAML или JSON для моего текстового представления этого.У меня есть Qt, Boost и любая другая библиотека, которая мне нужна, поэтому зависимости не являются проблемой.На самом деле, узлы уже Q_OBJECTS, поэтому у меня есть рефлексия.
Несмотря на рефлексию, десериализация этого корректно обратно в древовидную структуру C ++ кажется проблемой.
Оптимально, я бы хотел элегантныйи эффективное решение для сериализации / десериализации подобной структуры в двоичном или текстовом формате.