Mi pregunta es si debo usar archivos de texto para guardar los datos de mi juego. Tengo algunas preocupaciones básicas sobre hacer esto:
Realmente no hay forma de proteger los datos y, por lo tanto, el usuario podría arruinar todo si lo toca y no quiero que eso suceda.
Probablemente no sea la forma más eficiente de almacenar mis datos (Habrá muchos)
Sin embargo, sé cómo analizar / escribir en archivos de texto de manera efectiva, por lo que para la creación de prototipos han sido fantásticos. Solo quiero mirar hacia el futuro por lo que debería pensar en cambiar para que no me golpee en la cara cerca del final del desarrollo.
Si no debo usar archivos de texto, ¿qué debo usar? Necesito algo compatible con C ++.
c++
serialization
Althezel
fuente
fuente
Respuestas:
Por ahora, ya que recién está comenzando, los archivos de texto probablemente estén bien. Hay un par de preocupaciones en su pregunta que abordaré.
Proteger los datos no es tan crucial como probablemente pienses. Si tu juego es multijugador, de todos modos tendrás los datos guardados del lado del servidor. Si su juego es para un jugador, ¿qué pasa si los jugadores modifican los datos? Si rompen algo, es realmente su culpa y pueden reinstalarlo.
El rendimiento también es otra cosa que a menudo fallamos en planificar adecuadamente. Realmente no debe optimizar hasta que realmente mida un problema de rendimiento. Mi conjetura es que es probable que tenga una cantidad de datos que no es que los archivos de texto grandes y que van a estar muy bien.
Dicho esto, su mejor opción es abstraer sus rutinas de almacenamiento y carga de datos lo mejor que pueda. Por ejemplo, puede tener una clase base, por ejemplo
DataWriter
, y luego proporcionar diferentes implementaciones de sus diferentes métodos. Un ejemplo muy básico se vería así:Cuando eventualmente perfiles tu juego y te des cuenta de que el cuello de botella en el rendimiento está en la rutina de escritura de archivos, puedes proporcionar otra implementación de esa clase (por ejemplo, para escribir en una base de datos) con cambios mínimos en el código de llamada.
fuente
La palabra Datos del juego puede significar muchas cosas, por ejemplo
Para cada categoría puede tomar otro enfoque.
Por ejemplo, podría usar SQLite para material de localización, binario para mapas, texturas, sonidos, etc.
Para cosas de configuración, debe usar archivos xml fáciles de cambiar.
Como siempre, la respuesta correcta es "depende".
Existen muchos analizadores xml con un enlace de c ++ y también existe un enlace de c ++ para SQLite.
fuente
Podría guardar sus datos como un blob binario y transmitirlos nuevamente cuando acceda a ese archivo. Esto resolvería ambos problemas. Solo asegúrese de que el código de serialización sea exactamente el mismo que la deserialización.
La transmisión en el blob binario es relativamente rápida y también evita que el usuario vea los datos y los cambie.
Puede lograr todo esto utilizando las secuencias de biblioteca estándar.
fuente
float
miembro a un solo objeto), los viejos juegos guardados se vuelven completamente inválidos. Esto es difícil de tratar durante el desarrollo, pero si estás preparado, entonces, por supuesto.