Câu trả lời ngắn gọn là bạn không thể làm điều đó. Bất cứ điều gì chạy phía khách hàng, đặc biệt là từ nguồn, có thể được sửa đổi để đánh bại chiến thuật của bạn một cách tầm thường. Nếu bạn đặt một trình kiểm tra phía máy khách để tìm kiếm những thay đổi đột ngột, người dùng chỉ có thể vô hiệu hóa trình kiểm tra.
Tin tốt là, nói chung, có rất ít gian lận trong các trò chơi một người chơi. Ngoại lệ chính duy nhất là các trò chơi có cộng đồng "điểm cao youtube" lớn như Line Rider, nơi người chơi cạnh tranh với nhau trên YouTube.
Nếu bạn đang nhắm đến điều đó, hoặc quá cứng đầu để chấp nhận rằng mọi người có thể gian lận trong trò chơi hoặc đang tự mình giữ điểm số cao (là một hình thức nhiều người chơi) thì những gì bạn phải làm là tất cả các phía máy chủ tính toán . Vâng, tất cả mọi thứ quan trọng. Bạn thậm chí không thể lặp lại phía máy khách tính toán để cố gắng cung cấp cho người dùng điểm số và sau đó 'xác minh' với máy chủ vì người dùng sau đó có thể vô hiệu hóa kiểm tra và vô hiệu hóa bất kỳ hệ thống nào đảm bảo có kiểm tra.
Tôi ước có một câu trả lời tốt hơn cho điều này, nhưng không có.
Điều đó nói rằng, có những điều bạn có thể làm để làm cho nó khó hơn một chút để gian lận. Họ sẽ không ngăn cản bất cứ ai nghiêm túc làm việc đó và phát hành bộ công cụ để gian lận, nhưng điều đó sẽ làm họ chậm lại:
- Giảm thiểu và Obfuscate JS của bạn, điều này hoàn toàn sẽ làm cho mã khó đọc hơn. Bạn có thể khử tối thiểu và sắp xếp khử nhiễu nhưng bạn không bao giờ có thể lấy lại đúng tên biến và tên hàm, cũng như nhận xét.
- Nướng trong các giá trị với một ngôn ngữ khác nhau. Trong trường hợp này, bạn có thể sử dụng PHP hoặc các ngôn ngữ phía máy chủ khác để xử lý các biến thiết lập tĩnh. Nếu khoảng cách nhảy luôn được coi là 2 khoảng trắng, thông thường bạn sẽ xác định khoảng cách nhảy cho đối tượng người chơi. Đừng, xử lý điều đó với PHP để nguồn JS kết thúc với 2 giây được dán trên toàn bộ mã ở một triệu địa điểm. Điều này có tác dụng phụ bổ sung rất vui khi có thể tăng tốc độ JS của bạn.
- Với một số thực hành, bạn sẽ thành thạo với bản phối và thậm chí bạn có thể tùy chỉnh bản dựng JS của mình cho mỗi người chơi. Đó là một cách khác để ngăn chặn gian lận. Nếu mã của mỗi người chơi khác nhau bằng cách nào đó, thì việc viết một mánh gian lận có thể là một phần của bộ công cụ sẽ khó hơn.
- Cuối cùng, bạn có thể kiểm tra nguồn dựa trên danh tính của người chơi. Nói địa chỉ IP và / hoặc tên người dùng của họ. Bạn biết phiên bản dành riêng cho người chơi của JS sẽ là gì, bạn có thể nướng trong tổng kiểm tra và yêu cầu nó phải giống nhau ở đầu bên kia. Dễ dàng vô hiệu hóa như bất kỳ JS phía máy khách nào, nhưng một lần nữa khiến việc tạo bộ công cụ trở nên khó khăn hơn một chút.
Vì thế. Như bạn thấy, có lẽ không đáng để đi theo con đường này. Thật khó Yêu cầu rất nhiều thực hành mã hóa thực sự ngớ ngẩn để làm, và cuối cùng vẫn tương đối dễ dàng để đánh bại. Bạn sẽ cần phải thực hiện tất cả các tính toán phía máy chủ để tránh gian lận. Hoặc buông tay, và chấp nhận rằng gian lận sẽ xảy ra.