apa metode atau algoritma yang paling sering digunakan untuk menyimpan status permainan (profil), database file teks bagaimana enkripsi berjalan dan hal-hal terkait.
Saya telah melihat Caesar IV menggunakan mySQL.
ada saran.
apa metode atau algoritma yang paling sering digunakan untuk menyimpan status permainan (profil), database file teks bagaimana enkripsi berjalan dan hal-hal terkait.
Saya telah melihat Caesar IV menggunakan mySQL.
ada saran.
Jawaban:
Saya cukup yakin ini paling sering dilakukan dalam format (biner) berpemilik, hanya menulis setiap variabel dari status permainan apa pun yang Anda gunakan ke dalam file, atau membaca file itu kembali ke instance dari struct. Dalam C ++ misalnya, Anda dapat memperlakukan objek seperti array byte dan hanya fwrite () ke dalam file, atau fread () dari file dan melemparkannya kembali ke bentuk objeknya.
Jika Anda menggunakan Java atau bahasa lain, Anda dapat memilih untuk menggunakan serialisasi untuk membuat tugasnya sangat mudah. Penjelasan Java ada di bagian bawah jawaban ini; bahasa lain (level lebih tinggi dari C ++) pasti memiliki pustaka serialisasi sendiri atau fungsi bawaan, yang harus Anda pilih untuk digunakan. Tidak peduli seberapa tidak efisiennya rutinisasi serialisasi, ruang hard drive saat ini murah, terutama ketika keadaan gim seharusnya tidak terlalu besar sama sekali, dan itu mencegah Anda dari menulis dan mempertahankan rutinitas serialisasi Anda sendiri.
Anda benar-benar tidak boleh menggunakan MySQL (cukup baca kalimat pertama dari ulasan ini ). Jika Anda benar-benar membutuhkan database relasional untuk beberapa alasan, gunakan SQLite ; ini adalah sistem basis data yang ringan dan ada dalam satu file basis data. Tetapi untuk sebagian besar gim, basis data relasional bukanlah jalan yang harus ditempuh, dan perusahaan yang mencoba menggunakannya biasanya akhirnya menggunakannya sebagai tabel pencarian nilai-kunci daripada basis data relasional yang sebenarnya.
Setiap jenis enkripsi file disk lokal hanya kebingungan ; peretas apa pun hanya akan mengendus data setelah program Anda mendekripsi. Saya pribadi menentang hal semacam itu, TERUTAMA dengan satu pemain permainan. Pandangan saya adalah bahwa pemilik permainan (pelanggan yang membayar, ingatlah Anda) harus diizinkan untuk meretas permainan jika mereka mau. Dalam beberapa kasus ini dapat menciptakan rasa komunitas yang lebih besar, dan "mod" dapat dikembangkan untuk game Anda yang mendorong lebih banyak pelanggan kepada Anda. Contoh terbaru yang terlintas dalam pikiran adalah Portal in Minecraft mod yang baru-baru ini dirilis. Ini diterbitkan di situs berita gamer di seluruh internet, dan Anda dapat bertaruh itu meningkatkan penjualan Minecraft.
Jika karena alasan tertentu Anda sebenarnya cukup gila untuk menggunakan Java untuk pengembangan game seperti saya, berikut ini penjelasan singkat tentang serialisasi di Jawa:
Simpan semua data status permainan Anda dalam satu kelas, buat kelas menjadi serial dengan menerapkan
Serializable
, gunakantransient
kata kunci jika Anda mencampur variabel instantiated khusus ke dalam kelas (objek sementara tidak serial), dan cukup gunakanObjectOutputStream
untuk menulis ke file danObjectInputStream
membaca dari file . Itu dia.
[field: NonSerialized]
Jika Anda menulis kode sendiri, katakan dalam C ++, Anda dapat menggunakan file biner. File biner memberi Anda bentuk enkripsi melalui kebingungan. Tetapi seperti yang didokumentasikan di seluruh internet, itu adalah bentuk keamanan yang sangat lemah.
ATAU, Anda dapat menggunakan sesuatu seperti RapidXML jika Anda menginginkan solusi yang dapat dibaca manusia.
Jika Anda menggunakan semacam kerangka kerja, lihatlah fungsi dukungan file itu. HTH
Sebagian besar permainan yang saya lihat hanya menggunakan kode tulisan tangan untuk membaca / menulis dari file biner. Seringkali, format pada disk akan menjadi replika yang tepat dari tata letak memori suatu objek sehingga pemuatan hanya:
Ini cepat, tapi itu tugas untuk mempertahankan, spesifik platform, dan tidak fleksibel.
Akhir-akhir ini, saya telah melihat beberapa game menggunakan SQLite. Orang yang saya ajak bicara sepertinya menyukainya.
Serialisasi disebutkan dalam beberapa jawaban lain, dan saya setuju itu adalah solusi yang masuk akal. Salah satu cara gagal adalah dalam versi.
Katakanlah Anda merilis game dan orang-orang memainkannya dan membuat beberapa save game. Kemudian di tambalan nanti Anda ingin memperbaiki bug atau menambahkan beberapa fitur. Jika Anda menggunakan metode serialisasi biner sederhana dan Anda menambahkan anggota ke kelas Anda, serialisasi Anda mungkin tidak kompatibel dengan save game lama ketika pelanggan memasang patch Anda.
Jadi, apa pun pendekatan yang Anda gunakan, pastikan Anda memikirkan masalah ini sebelum Anda merilis game pertama kalinya! Pelanggan tidak akan senang jika mereka harus memulai dari awal setelah menerapkan tambalan.
Salah satu cara untuk menghindari ini adalah dengan meminta setiap tipe data dasar menerapkan metode Simpan (versi) dan Muat (versi) yang cukup pintar untuk mengetahui data apa yang akan disimpan dan dimuat untuk setiap versi gim. Dengan begitu Anda dapat mendukung kompatibilitas mundur game save Anda dan gagal dengan anggun jika pengguna mencoba memuat save game dari versi game yang lebih baru daripada yang mereka jalankan.
Jika Anda dapat menggunakan format yang sama dengan yang Anda gunakan untuk menyimpan level Anda, itu adalah bonus.
Misalnya, permainan seperti Peggle mungkin memiliki tata letak papan awal, jumlah bola, skor saat ini (0 untuk papan awal), dll. Kemudian permainan yang disimpan dapat menggunakan format yang persis sama.
Jika Anda menggunakan format yang sama maka save game dan level load dapat membagikan kode yang memudahkan pekerjaan Anda!
Untuk game dengan file peta yang sangat besar, save game dapat menyertakan file peta dengan referensi. File level awal mungkin melakukan hal yang sama, bahkan, yang membuat kembali ke peta itu lebih mudah juga jika karena alasan tertentu cerita memiliki karakter kembali ke tempat yang sama, kecuali beberapa NPC mati dan ada mayat tergeletak semua lebih.