Estou curioso para saber quais soluções os desenvolvedores de jogos criaram para serializar os diferentes tipos de dados com os quais lidam em seus jogos. Vocês usam alguma hierarquia monolítica do GameObject que abriga uma interface de serialização para tipos derivados, usam uma solução personalizada baseada em RTTI, realizam a serialização explícita de fluxo para determinadas classes ou usam algumas das soluções de código aberto (boost :: serialization, s11n, etc).
c++
serialization
Mark
fonte
fonte
Respostas:
Os buffers de protocolo do Google podem ser uma boa abordagem para serializar objetos c ++. Pode ser necessário criar alguns objetos intermediários como parte do processo de serialização, mas também funciona em várias plataformas e idiomas.
fonte
Em nosso jogo, simplesmente usamos o boost.serilization , é fácil de usar e muito rápido, mas, na minha opinião, é útil apenas para jogos de salvamento . Se você tentar criar caracteres, eu recomendo que você use algo baseado em XML'ish ou JSON, porque eles são fáceis de ler e editáveis, mesmo que você não tenha o editor.
fonte
Eu gosto bastante de JSON para serialização. É bem simples de analisar e existem bibliotecas gratuitas disponíveis, como http://jsoncpp.sourceforge.net/ . Nunca fui fã de boost ou RTTI em C ++. O Tinyxml também funciona bem para serialização e desserialização de xml. http://www.grinninglizard.com/tinyxml/ Por fim, não quero gastar mais tempo do que preciso para serialização.
fonte
fonte
O pacote de mensagens também é uma ótima alternativa! (http://msgpack.org)
fonte
O XDS foi projetado apenas para esse fim, oferece os benefícios do XML durante o desenvolvimento e os benefícios de uma representação binária compacta no momento da distribuição.
fonte
Se você estiver em uma plataforma Linux, poderá usar diretamente a
json.h
biblioteca para serialização. Aqui está o código de exemplo que me deparei. Fonte: Json Serializerfonte
Os buffers jsonCpp e Protocol são boas opções. Que eu saiba, ambos apenas permitirão estruturas de árvore em série prontas para uso (corrija-me se estiver errado). boost :: serialization pode lidar com gráficos arbitrários, mas não possui um bom formato de texto como o json (acho que existe um formato xml)
Pessoalmente, acho que a abordagem para serialização json adotada pelo Dojo é a melhor
http://docs.dojocampus.org/dojox/json/ref
Eu fiz minha própria versão em c ++ usando jsoncpp, que também desserializa objetos digitados (eu tenho uma grande fábrica para todos os meus tipos). Ele me permite fazer uma cena a partir de uma coleção de arquivos json que podem ser referenciados de qualquer maneira que eu quiser.
fonte