Sembunyikan data game dari pemain?

13

Saya sedang mengerjakan game (C ++) pertama saya, dan saya ingin menggunakan desain berbasis komponen. Saya sudah membaca banyak tentang ini akhir-akhir ini dan kemarin saya memutuskan untuk menyimpan data objek dalam file JSON eksternal, agar lebih fleksibel dan mudah diakses.

Kemudian saya sadar bahwa meninggalkan file-file ini di pohon direktori permainan akan memungkinkan para pemain untuk memodifikasi apa pun yang mereka inginkan dengan sangat mudah.

Saya tidak khawatir menunjukkan kode kepada pengembang, karena gim ini akan bersifat open source, tapi saya khawatir seorang gamer yang tidak berpengalaman akan merusak gamenya atau setidaknya merusak kesenangannya.

Apakah saya melewatkan sesuatu? Apa kebijakan tentang menyembunyikan data game (dalam game open source)? Apakah normal jika segala sesuatunya mudah diakses oleh siapa pun?

Jika tidak, apa cara yang baik untuk menyembunyikan data?

Marco Giancotti
sumber
3
Biasanya kemampuan untuk memodifikasi game adalah fitur, bukan bug, terutama untuk game pemain tunggal.
jprete
8
Aku tidak akan repot, sungguh. Waktu Anda lebih baik dihabiskan untuk membuat game yang bagus. =)
Jari Komppa
1
Saya cenderung berpikir bahwa (hampir) siapa pun yang mengunduh game sumber terbuka cukup tahu untuk benar-benar menikmati bermain-main dengan data game dan memecah game dalam proses. Jika ini permainan yang bagus, Anda akan melihat wiki yang menjelaskan format JSON Anda muncul dalam waktu singkat!
Nevermind

Jawaban:

33

Jika pemain bermain-main dan merusak kesenangan, saya akan mengatakan itu masalah mereka. Bagi sebagian orang, setengah bersenang-senang adalah melihat apa yang istirahat.

Ini seperti khawatir bahwa pemain akan menggunakan kode cheat mode dewa dan khawatir bahwa pemain tidak ditantang.

Saya tidak akan melakukan apa pun selain meletakkan file-file konfigurasi ke dalam file zip (yang mungkin harus Anda lakukan untuk memuat kali) dan memastikan kode Anda dapat menangani data yang rusak dengan anggun.

Tetrad
sumber
20

Saya khawatir seorang gamer yang tidak berpengalaman bisa merusak permainan atau setidaknya merusak kesenangan.

Jika mereka ikut campur dengan data gim, maka itulah yang mereka anggap 'menyenangkan'. Anda tidak perlu melindungi mereka dari ini. Data komponen entitas bukan spoiler. Mungkin jika Anda memiliki data dialog atau pencarian di sana, itu akan menjadi masalah, tetapi mungkin tidak. Kebanyakan gamer bahkan tidak tahu ke mana harus mencari hal semacam ini, apalagi mencari atau mengeditnya.

Saran saya adalah zipkan dan ganti ekstensi file. Ini akan membuat Anda terlihat biasa-biasa saja tetapi tidak akan sulit bagi Anda untuk bekerja dengannya. Anda dapat menggunakan sesuatu seperti PhysicsFS untuk bekerja dengan file.

Kylotan
sumber
5
Ya. Saya ingat bermain Kolonisasi di Amiga. Parameter unit disimpan dalam file teks sederhana dengan txtekstensi standar . Setelah bermain cukup banyak, saya memutuskan untuk membuat permainan lebih sulit dengan menyesuaikan parameter-parameter itu. Kemudian saya membagikan pengaturan itu dengan teman-teman. Itu menyenangkan ...
liori
3

Anda bisa menyimpan data dienkripsi , menggunakan skema enkripsi simetris (AES), tapi ini adalah sia-sia: perangkat lunak opensource , sehingga semua orang bisa membaca kunci dan karena itu mendekripsi data. Ini hanya akan "menghentikan" gamer kasual dari kecurangan.

Dan itu akan menjadi semacam gunanya bahkan dalam proyek sumber tertutup, karena cukup mudah untuk menemukan kunci ke dalam biner game.

Jadi, Anda memiliki dua kemungkinan:

  1. biarkan saja hal-hal itu tidak terenkripsi (tetapi setidaknya kumpulkan hash md5 dari setiap file, sehingga Anda dapat memeriksanya saat runtime terhadap kerusakan pada distribusi game Anda);
  2. pergi sumber tertutup , perebutan data (dengan rahasia algoritma multi-langkah reversibel seperti string reverse + byte swapping + xor dengan string konstan, dll ...) dan kemudian crypt semuanya dengan AES. Akan lebih sulit bagi siapa pun untuk memulihkan data. Jauh lebih sulit.
gd1
sumber
1
Bahkan metode sumber tertutup Anda tidak terlalu sulit. Orang yang sama yang secara rutin memutus skema yang digunakan untuk perlindungan terhadap penyalinan mungkin dapat mematahkannya juga. Perbedaan utamanya adalah mereka tidak akan repot.
jprete
@ jprete: pasti. Ini hanya masalah waktu, tetapi waktu sangat penting bagi orang-orang, sehingga menyulitkan dan tidak menguntungkan, kadang-kadang, cukup.
gd1
3

Saya akan meninggalkannya. Ada komunitas mod yang sangat besar dan para pemain menyukai permainan ubah / modding. Jika mereka merusak sesuatu, itu ada pada mereka. Mereka selalu dapat menginstal ulang.

Juga memudahkan pengembang lain untuk bekerja dengannya.

pengguna697111
sumber