คำตอบสั้น ๆ คือคุณไม่สามารถทำได้ สิ่งใดก็ตามที่ดูแลฝั่งไคลเอ็นต์โดยเฉพาะจากแหล่งที่มาสามารถแก้ไขได้เพื่อเอาชนะยุทธวิธีของคุณเล็กน้อย หากคุณวางตัวตรวจสอบฝั่งไคลเอ็นต์เพื่อค้นหาการเปลี่ยนแปลงที่ฉับพลันผู้ใช้สามารถปิดการใช้งานตัวตรวจสอบได้
ข่าวดีก็คือว่าโดยทั่วไปมีการโกงน้อยมากในเกมผู้เล่นคนเดียว ข้อยกเว้นที่สำคัญเพียงอย่างเดียวสำหรับเกมที่มีชุมชน "youtube highscore" ขนาดใหญ่เช่น Line Rider ที่ผู้เล่นแข่งขันกันผ่าน YouTube
หากคุณกำลังเล็งไปที่สิ่งนั้นหรือดื้อรั้นเกินไปที่จะยอมรับว่าผู้คนอาจโกงในเกมหรือทำคะแนนสูงด้วยตัวคุณเอง (ซึ่งเป็นรูปแบบของผู้เล่นหลายคน) สิ่งที่คุณต้องทำคือการคำนวณฝั่งเซิร์ฟเวอร์ทั้งหมด . ใช่ทุกอย่างที่สำคัญ คุณไม่สามารถทำซ้ำฝั่งไคลเอ็นต์การคำนวณเพื่อลองให้คะแนนกับผู้ใช้และจากนั้น 'ยืนยัน' กับเซิร์ฟเวอร์เพราะผู้ใช้สามารถปิดการใช้งานการตรวจสอบและปิดการใช้งานระบบใด ๆ ที่รับรองว่ามีการตรวจสอบ
ฉันหวังว่าจะมีคำตอบที่ดีกว่านี้ แต่ไม่มี
ที่กล่าวว่ามีหลายสิ่งที่คุณสามารถทำได้เพื่อทำให้การโกงยากขึ้นเล็กน้อย พวกเขาจะไม่หยุดไม่ให้ใครทำอะไรอย่างจริงจังและปล่อยชุดเครื่องมือเพื่อโกง แต่มันจะทำให้ช้าลง:
- ลดขนาดและทำให้งง JS ของคุณซึ่งจะทำให้รหัสอ่านยากขึ้น คุณสามารถลดขนาดและเรียงลำดับของ de-obfuscate แต่คุณไม่สามารถเรียกชื่อตัวแปรและฟังก์ชันที่ถูกต้องหรือข้อคิดเห็นได้
- อบค่าด้วยภาษาอื่น ในกรณีนี้คุณสามารถใช้ PHP หรือภาษาฝั่งเซิร์ฟเวอร์อื่น ๆ เพื่อจัดการตัวแปรการตั้งค่าแบบคงที่ หากระยะทางกระโดดนั้นควรจะเป็น 2 ช่องว่างโดยปกติคุณจะต้องกำหนดระยะทางกระโดดสำหรับวัตถุผู้เล่น อย่าจัดการมันด้วย PHP เพื่อที่ว่าซอร์สโค้ดของ JS จะจบลงด้วย 2s ที่ฉาบไปทั่วโค้ดในสถานที่หลายล้านแห่ง นี่เป็นผลข้างเคียงที่มีความสุขเพิ่มเติมจากการที่สามารถเพิ่มความเร็วให้กับ JS ของคุณได้เช่นกัน
- ด้วยการฝึกฝนคุณจะมีความเชี่ยวชาญในการผสมผสานและคุณยังสามารถสร้าง JS ของคุณเองสำหรับผู้เล่นแต่ละคนได้อีกด้วย ซึ่งเป็นอีกวิธีในการป้องกันการโกง หากรหัสของผู้เล่นแต่ละคนแตกต่างกันอย่างใดอย่างหนึ่งก็เป็นเรื่องยากที่จะเขียนสูตรโกงที่สามารถเป็นส่วนหนึ่งของชุดเครื่องมือ
- ในที่สุดคุณสามารถตรวจสอบแหล่งที่มาตามตัวตนของผู้เล่น พูดที่อยู่ IP และ / หรือชื่อผู้ใช้ คุณรู้ว่า JS เวอร์ชั่นเฉพาะของผู้เล่นคืออะไรคุณสามารถอบในการตรวจสอบและต้องการให้มันเหมือนกันในส่วนอื่น ๆ ง่ายต่อการปิดการใช้งานเช่นเดียวกับ JS ฝั่งไคลเอ็นต์ แต่อีกครั้งทำให้ยากขึ้นเล็กน้อยในการสร้างชุดเครื่องมือ
ดังนั้น. อย่างที่คุณเห็นมันอาจไม่คุ้มค่าที่จะไปเส้นทางนี้ มันยาก. ต้องใช้วิธีการเข้ารหัสที่โง่มาก ๆ และในที่สุดก็ค่อนข้างง่ายที่จะเอาชนะ คุณจะต้องทำการคำนวณฝั่งเซิร์ฟเวอร์ทั้งหมดเพื่อป้องกันการโกง หรือปล่อยให้ไปและยอมรับว่าการโกงจะเกิดขึ้น