Зараз, оскільки ви тільки починаєте, текстові файли, ймовірно, добре. У вашому запитанні є кілька проблем, які я вирішу.
Захист даних не так важливий, як ви, напевно, думаєте. Якщо ваша гра багатокористувацька, у будь-якому випадку ви збережете дані на сервері. Якщо ваша гра одиночна, то що робити, якщо гравці змінюють дані? Якщо вони щось зламають, це справді їхня вина, і вони можуть знову встановити.
Продуктивність - це ще щось, що нам часто не вдається спланувати належним чином. Не варто насправді оптимізувати, поки ви фактично не виміряєте питання щодо ефективності. Я здогадуюсь, що у вас, ймовірно, буде кількість даних, яка не така велика, і текстові файли будуть просто чудовими.
Незважаючи на це, ваш найкращий варіант - абстрагувати свої збереження даних та завантажувати процедури якнайкраще. Наприклад, ви можете мати базовий клас, скажімо DataWriter
, а потім надавати різні реалізації різних його методів. Дуже базовий приклад виглядатиме так:
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
}
};
Коли ви в кінцевому підсумку профіліруєте свою гру та зрозумієте, що вузьке місце продуктивності знаходиться в рутинному режимі написання файлів, ви можете надати іншу реалізацію цього класу (наприклад, замість цього записати в базу даних) з мінімальними змінами коду виклику.