Pertanyaan saya adalah apakah saya harus menggunakan file teks atau tidak untuk menyimpan data permainan saya. Saya memiliki beberapa keprihatinan mendasar untuk melakukan ini:
Benar-benar tidak ada cara untuk melindungi data, dan dengan demikian, pengguna dapat mengacaukan semuanya jika mereka menyentuhnya dan saya tidak ingin itu terjadi.
Ini mungkin bukan cara paling efisien untuk menyimpan data saya (Akan ada banyak hal)
Saya tahu bagaimana mem-parsing / menulis ke file teks secara efektif, jadi untuk membuat prototip mereka sangat luar biasa. Saya hanya ingin melihat ke masa depan untuk apa yang saya harus pikirkan tentang beralih ke sehingga tidak meninju wajah saya di dekat akhir pengembangan.
Jika saya tidak boleh menggunakan file teks, apa yang harus saya gunakan? Saya membutuhkan sesuatu yang kompatibel dengan C ++.
sumber
Jawaban:
Untuk saat ini, karena Anda baru memulai, file teks mungkin baik-baik saja. Ada beberapa masalah dalam pertanyaan Anda yang akan saya bahas.
Melindungi data tidak sepenting yang mungkin Anda pikirkan. Jika game Anda multipemain, Anda akan menyimpan data di sisi server. Jika game Anda adalah pemain tunggal, lalu bagaimana jika para pemain memodifikasi data? Jika mereka memecahkan sesuatu itu benar-benar kesalahan mereka dan mereka dapat menginstal ulang.
Kinerja juga merupakan hal lain yang sering gagal kami rencanakan dengan baik. Anda seharusnya tidak benar-benar mengoptimalkan sampai Anda benar-benar mengukur masalah kinerja. Dugaan saya adalah bahwa Anda mungkin akan memiliki jumlah data yang tidak terlalu besar dan file teks akan baik-baik saja.
Yang sedang berkata, taruhan terbaik Anda adalah abstrak penyimpanan dan pemuatan data Anda sebaik mungkin. Misalnya, Anda dapat memiliki kelas dasar, katakanlah
DataWriter
, dan kemudian berikan implementasi yang berbeda dari metode yang berbeda. Contoh yang sangat mendasar akan terlihat seperti:Ketika Anda akhirnya membuat profil game Anda dan menyadari bahwa bottleneck kinerja ada dalam rutinitas penulisan file, Anda dapat memberikan implementasi lain dari kelas itu (misalnya untuk menulis ke database) dengan sedikit perubahan pada kode panggilan.
sumber
Kata Data Game dapat berarti banyak hal, misalnya
Untuk setiap kategori Anda dapat mengambil pendekatan lain.
Misalnya Anda bisa menggunakan SQLite untuk pelokalan, biner untuk Maps, tekstur, suara, dan sebagainya.
Untuk hal konfigurasi, Anda harus menggunakan file xml yang mudah diubah.
Seperti biasa, jawaban yang benar adalah "itu tergantung".
Ada banyak parser xml dengan c ++ binding dan c ++ binding untuk SQLite juga ada.
sumber
Anda bisa menyimpan data Anda sebagai gumpalan biner dan mengalirkan kembali data saat Anda mengakses file itu. Ini akan menyelesaikan kedua masalah Anda. Pastikan saja bahwa kode serialisasi sama persis dengan de-serialisasi.
Streaming di gumpalan biner relatif cepat dan juga mencegah pengguna melihat data dan mengubahnya.
Anda dapat mencapai semua ini dengan menggunakan aliran perpustakaan standar.
sumber
float
anggota ke satu objek), savegames lama menjadi benar-benar tidak valid. Ini sulit dihadapi selama pengembangan, tetapi jika Anda sanggup melakukannya, maka tentu saja.