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í:
class DataWriter {
virtual void save(GameState state) = 0;
virtual ~DataWriter() { }
};
class TextFileDataWriter : public DataWriter {
virtual void save(GameState state) {
//write to text file
}
};
class DatabaseDataWriter : public DataWriter {
virtual void save(GameState state) {
//write to database
}
};
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.