Ich bin gespannt, welche Lösungen Spieleentwickler für die Serialisierung der verschiedenen Arten von Daten gefunden haben, mit denen sie sich für ihre Spiele befassen. Verwenden Sie eine monolithische GameObject-Hierarchie mit einer Serialisierungsschnittstelle für abgeleitete Typen, verwenden Sie eine Art benutzerdefinierte RTTI-basierte Lösung, führen Sie eine explizite Stream-Serialisierung für bestimmte Klassen durch, oder verwenden Sie einige Open-Source-Lösungen (boost :: serialization, s11n, etc).
c++
serialization
Mark
quelle
quelle
Antworten:
Protokollpuffer von Google können ein guter Ansatz für die Serialisierung von C ++ - Objekten sein. Möglicherweise müssen Sie im Rahmen des Serialisierungsprozesses einige zwischengeschaltete Objekte erstellen, aber es funktioniert auch auf vielen Plattformen und in vielen Sprachen.
quelle
Wir in unserem Spiel benutzen einfach boost.serilization , es ist einfach zu benutzen und sehr schnell, aber meiner Meinung nach ist es nur nützlich für Savegames. Wenn Sie versuchen, Zeichen zu erstellen, empfehle ich Ihnen XML'ish- oder JSON-basierte Dinge, da diese leicht zu lesen und zu bearbeiten sind, auch wenn Sie nicht über den Editor verfügen.
quelle
Ich mag JSON eher für die Serialisierung. Das Parsen ist ziemlich einfach und es gibt kostenlose Bibliotheken wie http://jsoncpp.sourceforge.net/. Ich war noch nie ein Fan von Boost oder RTTI in C ++. Tinyxml eignet sich auch gut für die XML-Serialisierung und -Deserialisierung. http://www.grinninglizard.com/tinyxml/ Letztendlich möchte ich nicht mehr Zeit als für die Serialisierung aufwenden müssen.
quelle
quelle
Message Pack ist auch eine großartige Alternative! (http://msgpack.org)
quelle
XDS wurde speziell für diesen Zweck entwickelt und bietet Ihnen die Vorteile von XML während der Entwicklung und die Vorteile einer kompakten Binärdarstellung zum Zeitpunkt der Verteilung.
quelle
Wenn Sie auf einer Linux-Plattform arbeiten, können Sie die
json.h
Bibliothek direkt für die Serialisierung verwenden. Hier ist ein Beispielcode, auf den ich gestoßen bin. Quelle: Json Serializerquelle
Sowohl der jsonCpp- als auch der Protokollpuffer sind gute Optionen. Meines Wissens nach können Sie in beiden Fällen nur standardmäßige Serienbaumstrukturen erstellen (bitte korrigieren Sie mich, wenn ich mich irre). boost :: serialization kann mit beliebigen Grafiken umgehen, hat aber kein nettes Textformat wie json (ich denke, es gibt ein xml-Format)
Persönlich denke ich, dass der Ansatz für die Json-Serialisierung, den Dojo gewählt hat, der beste ist
http://docs.dojocampus.org/dojox/json/ref
Ich habe meine eigene Version davon in c ++ mit jsoncpp erstellt, die auch typisierte Objekte deserialisiert (ich habe eine Art große Fabrik für alle meine Typen). Es ermöglicht mir, eine Szene aus einer Sammlung von JSON-Dateien zu erstellen, auf die ich trotzdem verweisen kann.
quelle