Meskipun saya membuat komentar pertama yang mempertanyakan titik merendahkan pengalaman sebagian audiens Anda tanpa keuntungan yang jelas, saya masih menemukan itu pertanyaan yang menarik dari sudut pandang teknis.
Saya hanya punya ide ini: Apa yang dilakukan curang adalah menemukan nilai yang mengubah dan membekukannya. Pencarian kemudian akan terjadi hanya antara kematian atau peristiwa yang mengubah kesehatan pemain. Selain itu, penipu bisa menyempurnakan pencarian dengan menyaring apa yang berubah ketika dia "tidak sekarat".
Bagaimana jika penghitung "kesehatan" berubah sepanjang waktu? Jadikan sebagai pointer dan realokasi setiap frame atau setiap frame N jika hit kinerja terlalu besar. Atau XOR dengan nilai acak yang mengubah setiap frame (XOR lagi terhadap nilai yang sama untuk mendekripsi sebelum mengenkripsi dengan nilai acak baru).
Jika Anda memiliki data dalam game lainnya yang juga mengubah seluruh waktu (termasuk posisi x dan y dari karakter pemain, atau penghitung waktu), yang mungkin membuat lebih sulit untuk mengetahui dari mana semua data yang berubah adalah kesehatan. Dan membekukan seluruh kondisi permainan adalah hal yang tidak boleh dilakukan oleh penipu.
Untuk menyesatkan lebih lanjut, Anda sebenarnya dapat menyimpan kesehatan dalam variabel hanya-tulis yang berarti pot madu.
Edit :
Namun, penipu mungkin mencoba menemukan variabel mana yang berubah sepanjang waktu yang dibekukan melalui coba-coba. Solusi yang mungkin adalah menggabungkan pasangan variabel.
Sebuah contoh:
Alih-alih menyimpan kesehatan (h) dan posisi (x), Anda menyimpannya dalam dua variabel a dan b, dari mana Anda dapat mengambil nilai nanti:
a = x+h; b = x-h
x = (a+b)/2; h = (a-b)/2
Dengan cara ini, jika penipu hanya membekukan salah satu dari mereka dan kemudian memindahkan karakter, posisi terpengaruh dan, tergantung pada yang dibekukan, h menjadi negatif (kematian instan). Anda dapat beralih di antara rumus di atas dan:
a = x-h; b = x+h
x = (a+b)/2; h = (b-a)/2
Dalam frame yang berurutan, dan Anda menjamin bahwa paling banyak 2 frame setelah salah satu variabel dibekukan, kesehatan akan berubah 0 saat x berubah. Ingatlah bahwa Anda hanya menyimpan a dan b. Gabungkan ini dengan XOR kontinu seperti yang disebutkan di atas. Hasilnya adalah kumpulan variabel yang mengubah setiap frame ke nilai yang tampaknya acak, dan membekukan satu atau sebagian dari mereka hanya menghasilkan efek samping yang tidak diinginkan dalam permainan, kematian instan menjadi salah satunya.
Mengapa Anda mencegah pemain dari menipu diri mereka sendiri (yang curang dalam permainan pemain tunggal berarti)? Dalam lingkungan multipemain, itu adalah tugas server untuk mendeteksi perubahan yang tidak wajar dan melawannya (biasanya dengan mengabaikan input atau memblokir pelakunya sepenuhnya dari server), tetapi dalam lingkungan pemain tunggal tidak ada yang terjadi kecuali penipu melakukan sendiri tindakan merugikan.
TKI, kecuali Anda membuat game multi-pemain, itu hanya membuang-buang uang, dan jika Anda berpikir untuk memperkeras tempat yang salah.
sumber
Penelitian alat kecurangan yang dikenal - dan sering memeriksa apakah ada yang paling umum terdeteksi berjalan (periksa nama proses?)
Jika ada yang terdeteksi, biarkan pemain curang (jika offline, tidak berbahaya), tetapi pastikan tidak ada skor / pencapaian akan diposting ke sistem papan peringkat / pencapaian online - buat saja gagal secara diam-diam?
Tidak akan menghentikan lebih banyak peretas yang gigih, tetapi akan mengurangi kemungkinan lebih banyak cheat biasa mengacaukan papan peringkat Anda.
(Mungkin para pembuat kode yang menjengkelkan yang memiliki perangkat dev terbuka dan diminimalkan untuk tujuan yang sah dan sedang istirahat sejenak, ...)
sumber
Saya pikir solusi paling sederhana untuk ini adalah menerapkan opsi cheat. Nonaktifkan scoring saat dalam opsi cheat.
Ide bagus lainnya, yang saya tidak tahu bagaimana Anda akan menerapkan. Adalah mematikan game ketika ada variabel memori beku atau sesuatu seperti itu :)
Semoga berhasil (y)
sumber