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