Hiện tại, vì bạn chỉ mới bắt đầu, các tệp văn bản có thể ổn. Có một vài mối quan tâm trong câu hỏi của bạn mà tôi sẽ giải quyết.
Bảo vệ dữ liệu không quan trọng như bạn nghĩ. Nếu trò chơi của bạn là nhiều người chơi, bạn sẽ có dữ liệu được lưu ở phía máy chủ. Nếu trò chơi của bạn là một người chơi, vậy nếu người chơi sửa đổi dữ liệu thì sao? Nếu họ phá vỡ thứ gì đó thì đó thực sự là lỗi của họ và họ có thể cài đặt lại.
Hiệu suất cũng là một cái gì đó khác mà chúng ta thường không lập kế hoạch đúng. Bạn không nên thực sự tối ưu hóa cho đến khi bạn thực sự đo lường một vấn đề hiệu suất. Tôi đoán là có thể bạn sẽ có một số lượng dữ liệu đó không phải là rằng tập tin văn bản lớn và điều đó sẽ được tốt.
Điều đó đang được nói, đặt cược tốt nhất của bạn là trừu tượng hóa việc lưu và tải dữ liệu của bạn một cách tốt nhất có thể. Ví dụ, bạn có thể có một lớp cơ sở, giả sử DataWriter
, và sau đó cung cấp các triển khai khác nhau của các phương thức khác nhau của nó. Một ví dụ rất cơ bản sẽ giống như:
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
}
};
Cuối cùng, khi bạn lập hồ sơ trò chơi của mình và nhận ra nút cổ chai hiệu năng đang trong thói quen viết tệp, bạn có thể cung cấp một triển khai khác của lớp đó (ví dụ để ghi vào cơ sở dữ liệu thay thế) với các thay đổi tối thiểu đối với mã gọi.