2010-08-25 16 views
8

Quiero almacenar un gráfico de diferentes objetos para un juego, sus clases pueden o no estar relacionadas, pueden o no contener vectores de estructuras simples.Analizador binario o serialización?

  • Quiero que la operación de análisis sea rápida, los datos pueden ser bastante grandes.
  • Agregar cosas nuevas no debería ser difícil, y no debería romper la compatibilidad con versiones anteriores.
  • archivo de menor tamaño es bastante importante
  • legibilidad cuenta

Por serialización quiero decir, objetos que hacen serializar a sí mismos, que es eficaz, pero tendrán que escribir diferentes métodos de serialización para diferentes objetos para eso.

Por análisis/composición binaria Quiero decir, crear un nuevo árbol de analizadores/compositores que guarde y lea datos para estos objetos, y pasar esto para que mis objetos empujen/extraigan sus datos.

También puedo usar json, pero puede ser bastante lento para leer, y no es muy efectivo cuando se trata de juegos de matrices y números bastante grandes.

+0

Terminé escribiendo un analizador binario simple, construyo el árbol de estructura y envío de datos simples u otros conjuntos de datos, aunque también puedo generar texto json si lo necesito, necesito definir métodos toJson, pero al menos mi estructura está bien definida, económico y fácil de analizar sin la biblioteca del analizador. –

Respuesta

3

Punto por punto:

  • de análisis rápido: binario (ya que no necesariamente tiene que "analizar", que sólo puede deserializar)
  • Añadir nuevas cosas: Texto
  • Más pequeño: texto (incluso si el texto comprimido es más grande que el binario, no será mucho más grande).
  • Legibilidad: Texto

modo que sea de tres votos para el texto, un punto por binaria. Personalmente, me gustaría ir con texto para todo menos para las imágenes (y otros datos que son "naturales" binarios). Luego, almacene todo en un archivo comprimido grande (puedo pensar en varios juegos que hacen esto o algo parecido).

Buenas lecturas: The Importance of Being Textual y Power Of Plain Text.

1

Revisa los buffers de protocolo de Google o de segunda mano de Apache. Aunque se ha anunciado como una forma de escribir protocolos de cable fácilmente, es básicamente un mecanismo de serialización de objetos que puede crear enlaces en una docena de idiomas, tiene una representación binaria eficiente, versiones sencillas, un rendimiento rápido y está bien soportado.

+0

parece bastante agradable, voy a verificarlo. –

+0

bien, no se recomienda para mensajes de más de 1 mb, los datos de una sola malla pueden excederlo fácilmente, los datos de buceo requieren una estructura de árbol diferente para los mensajes que pueden complicar las cosas. –

0

Estamos usando Boost.Serialization. No sé cómo funciona junto a los ofrecidos por samkass.

Cuestiones relacionadas