안전한 게임을 위해 P2P 아키텍처를 연구하고 있으며 문제를 5 가지 하위 문제로 나누었습니다.
- 전송 된 게임 상태의 불법 수정
- 사기꾼을 정확하게 떨어 뜨립니다.
- 게임 상태에 동의
- "미리보기"치트 피하기
- 상대방의 민감한 정보 숨기기
처음 4 개는 거의 모든 것이 해결되었지만 문제가있는 마지막 항목입니다.
세부 사항을 살펴보기 전에 "속임수"p2p 네트워크를 만드는 목록에서 놓친 것이 있는지 묻고 싶습니다. 나는 aimbots를 사용하는 것과 같은 치트에 관심이 없으며, 중앙 서버처럼 p2p 네트워크를 안전하게 만드는 데 관심이 있습니다.
그래서 지금까지 민감한 정보를 숨기려는 노력으로 상대방의 위치를 항상 알 수없는 게임에서 플레이어의 위치에 중점을 두었습니다. 그러면 문제는 상대방의 위치를 모르고 상대방에게 위치를 보내야하는지 결정하는 방법이됩니다.
상대가 허위 포지션 중 하나가 귀하의 포지션에서 "보이는"경우 상대방이 귀하의 포지션을 쉽게 얻을 수 있기 때문에 상대방이 귀하를 비교하기 위해 여러 허위 포지션을 보내는 등의 방법을 배제했습니다.
내가 당신에게 상대로부터 "시각 필드"를 받고 당신이 당신의 위치를 보낼지 여부를 결정할 수있는 방법에 초점을 맞추고있다. 그러나 리그 오브 레전드와 같은 게임에서는 상대방의 시야가 매우 민감한 정보 인 경우 문제가됩니다. 나는 단일 행렬을 사용하여 시야를 변환 하여이 문제를 해결하려고 시도했습니다. 즉, 변환 된 시야 버전에서 원래 버전으로 돌아갈 수는 없지만 선형 변환이므로 위치가 내부에 있는지 여전히 알 수 있습니다 시야 또는 아닙니다.
그러나 완벽하게 작동하지는 않지만 변환 후 정확한 시야를 복원 할 수는 없지만 시야의 "기울기"에 대한 정보 (시야는 여러 선으로 구성되며 각 선의 경사를 결정할 수 있음)는 다음과 같습니다. 이것은 원래의 시야를 비교적 저렴하게 재구성하는데 사용될 수있다.
본질적으로, 내가 필요한 것은 위치가 "가시적"인지 아닌지를 판단 할 수있는 함수이며,이 함수 / 시야를 재구성하는 것은 계산이 완료되면 시야를 재구성 한 후에는 더 이상 관련이 없어야한다는 계산 계산이 필요하다 실제 게임. 그런 방법을 알고있는 영리한 사람이 있습니까?
편집 사람들은 전체 "비전 필드"에 대해 혼란스러워서 여기에 더 자세한 설명을하고자합니다. 비전 필드는 일련의 선 그룹으로 구성되며, 해당 그룹의 모든 선에 대해 같은쪽에 있으면 위치의 선이 어느 쪽인지 확인하여 이러한 그룹 중 하나에 위치가 있는지 쉽게 확인할 수 있습니다. 그것은 그 그룹 안에 있고 따라서 비전 필드 안에 있습니다.
그러나 전송되는 정보는이 선이 아니라 선 변환 및 변환 (2 x 2 특이 행렬)이므로 수신 한 변환을 사용하여 선을 변환하여 선의 어느 쪽을 계속 확인할 수 있습니다. 그리고 그 값을 변환 된 라인과 비교하는 것. 여기서 핵심은 변환이 단수라는 것입니다. 즉, 원래 줄로 되돌아가는 역을 찾는 것은 불가능합니다. 그러나 변환 된 선의 어느 쪽에서 많은 점이 놓여 있는지 알면 계산보다 저렴하게 선의 원점을 계산할 때까지 선을 재구성하는 선의 기울기를 결정할 수 있습니다. 선의 기울기
내가 찾고있는 것은 포인트가 영역 내부에 있는지 여부를 결정하는 방법입니다. 메서드에서 영역을 재구성하는 것이 불가능하거나 (항상 무차별 강제 할 수 있기 때문에 의심됩니다) 매우 계산적으로 무겁습니다.