Saya mencoba mencari cara untuk menulis sistem save / load untuk game saya di C ++. Sampai sekarang, saya melakukan semuanya menggunakan bendera biner. Adakah yang tahu cara melakukannya dengan cara lain? Saya tidak keberatan menggunakan biner, tetapi saya ingin tahu opsi saya. Saya juga menginginkan sesuatu di mana akan mudah untuk memeriksa status hanya satu peristiwa yang lengkap atau tidak lengkap untuk memutuskan hal-hal tertentu (banyak sistem item dalam permainan ini tergantung pada apa yang pemain miliki atau belum lakukan sepanjang permainan).
17
Jawaban:
Serialisasi akan menjadi cara untuk pergi, dan untuk pengecekan status, Anda bisa menggunakan logika dalam metode deserializtion untuk melakukannya.
sumber
Saya telah mempelajari sedikit kode sumber DOOM. Saya akan memberitahu Anda bagaimana hal itu dilakukan di sana.
D_DoomMain berisi semua fungsi buka / simpan / muat, serta banyak hal lainnya. Seperti yang tertulis di awal file,
Pada dasarnya, seluruh file penuh
M_CheckParm
s dari awal hingga selesai. Terdiri dari apa itu D_DoomLoop. Ini satu lingkaran besar (panjang sekitar 1000-2000 baris).Karena pertanyaan Anda adalah 'Bagaimana saya bisa menulis?' Saya hanya akan menempelkan beberapa bit kode yang merujuk ke gamesave, dari D_DoomMain:
di sini adalah pernyataan di mana barang-barang itu digunakan, pada akhir dari loop.
Inilah fungsi yang mengakses string, yang Anda temukan tersebar di seluruh kode:
Anda juga punya file bernama p_savegame.c dengan hal-hal yang akan menyimpan semua data terkait pengguna (senjata apa yang Anda punya, di mana Anda berada di level mana, dll).
Dan akhirnya Anda punya file yang memuat data savegame ke dalam skenario gim, bisa dibilang yang paling kompleks dari semuanya, karena itu juga memuat semua yang lain. Yang itu disebut p_setup.c, dan terletak di direktori yang sama.
Ini bekerja dengan baik bagi saya untuk
cat
semua ini menjadi buffer teks danpipe
teks kesendmail
alamat email saya sendiri. Dengan begitu saya bisa membacanya pada saat-saat aneh pada hari itu, dan menggunakan 'temukan' ketika saya ingin mencari hal-hal seperti 'bagaimana DOOM memuat permainan'. Kode ini dikomentari dengan baik.sumber
Anda bisa membuat cerita bersambung kelas atau data ke file datar dan kemudian membacanya kembali saat Anda memuat.
sumber
I +1: mengedit saran untuk menggunakan XML / JSON untuk menyusun struktur save game. Dengan cara ini Anda sangat siap untuk membuat penghematan berdasarkan "cloud". Atau setidaknya, Anda akan memiliki struktur yang dapat Anda gunakan untuk proyek masa depan yang mungkin melibatkan web. Selama file tidak disimpan dengan cara yang terlalu mudah dibaca, mereka akan memberi Anda banyak manfaat. Suka metrik! Hore
sumber