Tôi đã làm việc trên một kiến trúc P2P để chơi game an toàn và tôi đã chia vấn đề thành năm vấn đề phụ:
- Sửa đổi bất hợp pháp trạng thái trò chơi đã gửi
- Chính xác thả gian lận
- Đồng ý về trạng thái trò chơi
- Tránh gian lận "nhìn về phía trước"
- Ẩn thông tin nhạy cảm từ đối thủ
Bốn cái đầu tiên tôi đã giải quyết được khá nhiều nhưng đó là cái cuối cùng mà tôi gặp rắc rối.
Trước khi đi vào chi tiết, tôi chỉ muốn hỏi liệu có bất cứ điều gì tôi đã bỏ lỡ trong danh sách tạo mạng p2p "bằng chứng gian lận" không. Tôi không quan tâm đến các mánh gian lận như sử dụng aimbots, tôi chỉ quan tâm đến việc làm cho mạng p2p an toàn như một máy chủ tập trung.
Vì vậy, trong nỗ lực của tôi cho đến nay về việc che giấu thông tin nhạy cảm, tôi đã tập trung vào vị trí của người chơi trong một trò chơi mà vị trí của đối thủ của bạn không phải lúc nào cũng được biết đến. Vấn đề sau đó trở thành làm thế nào để xác định xem bạn có nên gửi vị trí của bạn cho đối thủ mà không biết vị trí của đối thủ hay không.
Tôi đã loại trừ các phương pháp như đối thủ gửi nhiều vị trí sai để bạn so sánh với bạn vì đối thủ của bạn có thể dễ dàng lạm dụng hệ thống như vậy vì anh ta sẽ nhận được vị trí của bạn nếu một trong những vị trí sai xảy ra là "hiển thị" từ vị trí của bạn.
Phương pháp tôi đã tập trung vào một phương pháp mà bạn nhận được "trường thị giác" từ đối thủ của mình và từ đó có thể xác định xem bạn có nên gửi vị trí của mình hay không. Tuy nhiên, đây là một vấn đề trong các trò chơi như Liên minh huyền thoại nơi lĩnh vực hình ảnh của đối thủ của bạn cũng là thông tin rất nhạy cảm. Tôi đã cố gắng giải quyết điều này bằng cách chuyển đổi trường thị giác bằng ma trận số ít có nghĩa là bạn không thể chuyển từ phiên bản biến đổi của trường hình ảnh trở lại phiên bản gốc, nhưng vì nó là một phép biến đổi tuyến tính, bạn vẫn có thể biết liệu vị trí của mình có ở bên trong không lĩnh vực thị giác hay không.
Tuy nhiên, điều này không hoạt động hoàn hảo, trường hình ảnh chính xác không thể được khôi phục sau khi chuyển đổi, nhưng thông tin về "độ dốc" trong trường thị giác (trường thị giác được xây dựng bằng nhiều đường và có thể xác định độ dốc của từng đường) khôi phục và điều này có thể được sử dụng để tái cấu trúc tương đối rẻ tiền trường hình ảnh ban đầu.
Về bản chất, cái tôi cần là một hàm có thể xác định xem một vị trí có "hiển thị" hay không, và việc xây dựng lại chức năng / trường thị giác này phải được yêu cầu tính toán đến mức khi bạn hoàn thành việc tái tạo trường thị giác thì nó không còn phù hợp với trò chơi trong hành động. Có người siêu thông minh nào ngoài kia tình cờ biết phương pháp như vậy không?
Chỉnh sửa mọi người loại nhầm lẫn về toàn bộ "trường tầm nhìn" vì vậy tôi nhằm mục đích đưa ra một lời giải thích chi tiết hơn ở đây. Trường tầm nhìn bao gồm các nhóm của một tập hợp các dòng, bạn có thể dễ dàng kiểm tra xem một vị trí có nằm trong một trong các nhóm này hay không bằng cách kiểm tra xem bên nào của vị trí của bạn, nếu nó ở cùng một phía cho tất cả các dòng trong nhóm đó bạn biết nó ở trong nhóm đó và do đó bên trong trường tầm nhìn.
Tuy nhiên, thông tin được gửi không phải là dòng này, mà là một phép biến đổi của dòng và phép biến đổi (2 by 2 số ít một ma trận), bạn vẫn có thể kiểm tra phía nào của vị trí của bạn bằng cách chuyển đổi nó bằng cách sử dụng biến đổi bạn nhận được và so sánh giá trị đó với dòng biến đổi. Chìa khóa ở đây là sự biến đổi là số ít, có nghĩa là không thể tìm thấy một nghịch đảo để quay trở lại dòng ban đầu. Tuy nhiên, có thể xác định độ dốc của đường tạo lại đường thẳng bằng cách kiểm tra phía bên nào của đường biến đổi có rất nhiều điểm nằm cho đến khi bạn xác định được nguồn gốc của đường rẻ hơn rất nhiều so với khi bạn không biết độ dốc của đường.
Điều tôi đang tìm kiếm là một phương pháp để xác định xem một điểm có nằm trong một khu vực hay không, trong đó việc tái tạo lại khu vực từ phương thức đó là không thể (điều mà tôi nghi ngờ tồn tại vì bạn luôn có thể ép buộc nó) hoặc rất nặng tính toán.