Мне любопытно, какие решения разработчики игр придумали для сериализации различных типов данных, с которыми они имеют дело для своих игр. Ребята, вы используете какую-то монолитную иерархию GameObject, которая содержит интерфейс сериализации для производных типов, используете своего рода решение на основе RTTI, выполняете явную сериализацию потока для определенных классов или используете некоторые решения с открытым исходным кодом (boost :: serialization, s11n, и т.д).
c++
serialization
отметка
источник
источник
Ответы:
Буферы протокола от Google могут быть очень хорошим подходом для сериализации объектов c ++. Возможно, вам придется создать некоторые промежуточные объекты как часть процесса сериализации, но он также работает на многих платформах и языках.
источник
Мы в нашей игре просто используем boost.serilization , она проста в использовании и очень быстра, но, на мой взгляд, просто полезна для сохранения игр. Если вы пытаетесь создавать символы, я рекомендую вам что-нибудь на XML'е или на основе JSON, потому что они легко читаются и редактируются, даже если у вас нет редактора.
источник
Мне скорее нравится JSON для сериализации. Это довольно просто разобрать, и есть бесплатные библиотеки, такие как http://jsoncpp.sourceforge.net/ Я никогда не был фанатом boost или RTTI в C ++. Tinyxml также хорошо работает для сериализации и десериализации xml. http://www.grinninglizard.com/tinyxml/ В конечном счете, я не хочу тратить больше времени, чем на сериализацию.
источник
источник
Пакет сообщений также является отличной альтернативой! (http://msgpack.org)
источник
XDS был разработан специально для этой цели, он дает вам преимущества XML во время разработки и преимущества компактного двоичного представления во время распространения.
источник
Если вы работаете на платформе Linux, вы можете напрямую использовать
json.h
библиотеку для сериализации. Вот пример кода, с которым я столкнулся. Источник: Json Serializerисточник
И jsonCpp, и буфер протокола являются хорошими вариантами. Насколько мне известно, оба позволят вам создавать последовательные древовидные структуры из коробки (пожалуйста, исправьте меня, если я ошибаюсь). boost :: serialization может обрабатывать произвольные графы, но не имеет хорошего текстового формата, такого как json (я думаю, что существует формат xml)
Лично я думаю, что подход для сериализации json, который использовал Dojo, является лучшим
http://docs.dojocampus.org/dojox/json/ref
Я сделал свою собственную версию на c ++ с использованием jsoncpp, которая также будет десериализовать типизированные объекты (у меня есть своего рода большая фабрика для всех моих типов). Это позволяет мне сделать сцену из коллекции json-файлов, на которые можно ссылаться в любом случае, пожалуйста.
источник