이 섹션에서는 이미 입력과 맥락을 검증하고 있다고 가정합니다(이전 섹션 참조). 이 기사는 요청이 기술적으로 유효하지만 행동이 남용적으로 보일 때 어떻게 대응해야 하는지, 그리고 합법적인 플레이어를 해치지 않고 어떻게 대응할 수 있는지를 다룹니다.
철학
- 서버가 결정합니다. 감지 및 결과는 서버에서 발생합니다. 클라이언트 측 감지에 따라 금지하는 것은 피하는 것이 좋습니다. 악용자는 이를 쉽게 우회할 수 있습니다.
- 먼저 해를 방지하세요. 악용의 영향을 조용히 중화하세요. 예를 들어, 플레이어가 속도를 해킹하는 경우 즉시 퇴출하는 대신 마지막 유효한 위치로 되돌리는 것이 좋습니다. 경험이나 다른 플레이어를 보호하는 것이 필요할 때만 처벌하세요.
- 비례적이고 되돌릴 수 있어야 합니다. 잘못된 긍정 결과가 발생할 수 있다고 가정하세요. 영구 금지보다 일시적 정지나 자원 제거와 같은 되돌릴 수 있는 조치를 선호하세요.
- 디자인이 감지보다 중요합니다. 귀하의 기본 보안은 강력한 검증과 비율 제한에서 옵니다(이는 클라이언트-서버 경계 보호와 다른 섹션에서 다룰 것입니다). 아래의 감지 방법은 이러한 방어를 보완하는 것이며, 대체하기 위한 것이 아닙니다.
휴리스틱
휴리스틱은 기술적으로 가능하지만 합법적인 플레이어에게 매우 불가능한 행동을 플래그하는 행동 검사입니다. 이들은 기본 검증을 통과하는 의심스러운 활동을 포착하기 위한 "상식의 규칙"입니다. 효과적인 휴리스틱은 플레이어의 행동을 이론적인 최대치나 합리적인 기준선과 비교합니다.
예를 들어, 플레이어가 시뮬레이터 게임에서 갑자기 10억 동전을 얻었다고 주장하는 경우, 귀하의 원격 검증은 요청이 구조상 정확하다는 것을 확인할 수 있습니다. 그러나 서버의 휴리스틱 검사는 그렇게 많은 것을 얻으려면 몇 주가 걸려야 한다는 것을 알고 이 거래를 의심스럽게 표시할 것입니다.
다음은 서버 측 휴리스틱의 세 가지 고전적인 예입니다. 각 예는 플레이어 행동을 경험의 규칙 및 물리적 제한과 비교하여 일반적인 악용에 대한 강력한 방어를 만듭니다.
| 서버 측 휴리스틱 | 설명 | 예시 |
|---|---|---|
| 가장 빠른 완료 시간 | 장애물 코스를 완료하는 데 가능한 이론상 가장 빠른 시간을 계산합니다. 여기에는 최적의 경로를 찾고 최대 플레이어 속도를 가정하는 것이 포함됩니다. | 오비에서 세계 기록이 30초인 경우, 5초의 완료 시간은 텔레포트나 속도 악용의 강력한 신호입니다. |
| 이득 비율 | 플레이어가 자원(통화, 경험, 아이템)을 얻을 수 있는 최대 합법적 비율을 추적합니다. | 플레이어가 합법적으로 분당 100동전을 얻을 수 있는 경우, 1초 안에 10,000동전을 갑자기 얻는 것은 플래그가 표시되어야 합니다. |
| 행동 주기 | 서버는 플레이어의 반복된 행동 간의 시간 간격을 분석합니다. 인간 입력에는 자연스럽고 미세한 시간 변동이 있는 반면, 간단한 자동화 스크립트(예: 자동 클릭기)는 종종 로봇과 같은 일관성으로 행동을 수행합니다. | 낚시 미니게임에서, 플레이어가 낚싯대를 던지기 위해 클릭합니다. 서버는 각 캐스트의 타임스탬프를 기록합니다. 플레이어가 동일한 간격(예: 정확히 2.500초)으로 100번 캐스트를 하면, 이는 매크로나 봇의 강력한 지표입니다. 인간의 타이밍은 자연스럽게 변동할 것입니다. |
이러한 예 중 하나만으로는 치트를 단죄하기에 충분하지 않을 수 있습니다. 각 예는 신호로 취급되어야 하며, 확정적인 증거로 간주되어서는 안 됩니다. 좋은 관행은 의심 점수를 구현하는 것입니다. 플레이어가 휴리스틱 검사를 실패하면 점수를 증가시킵니다. 퇴출이나 금지와 같은 심각한 조치는 다양한 여러 감지가 플레이어의 점수를 높은 임계값 이상으로 초과한 후에만 발생해야 합니다.
예를 들어, 숙련된 플레이어가 귀하의 오비를 기록을 깨는 시간으로 완료했다고 가정해 보겠습니다. "가장 빠른 완료 시간" 휴리스틱이 트리거되었습니다. 이들은 금지되어야 할까요? 악용하고 있을 가능성이 있겠지만, 그들은 또한 합법적이지만 의도치 않은 지름길을 발견했을 수 있습니다. 이 단일 신호에 따라 그들을 금지하는 것은 위험할 수 있으며, 가장 헌신적인 플레이어 중 한 명에게 불이익을 줄 수 있습니다.
하지만, 그 같은 플레이어가 "행동 주기" 휴리스틱도 플래그하고, 한 시간 후 로비에서 "이득 비율" 휴리스틱이 트리거된다면, 사건은 훨씬 강해집니다. 이러한 다양한 신호의 조합은 치팅에 대한 훨씬 더 신뢰할 수 있는 그림을 그립니다. 이 시스템의 강점은 여러 데이터 포인트를 상관시켜 조치를 취하기 전에 확신 있는 사건을 구축하는 데 있습니다.
허니팟
당신의 경험에서 RemoteEvents를 조사하려는 치터를 감지하는 한 가지 방법은 허니팟이라는 미끼를 사용하는 것입니다. 허니팟은 악용자에게 합법적으로 보이지만 귀하의 합법적인 클라이언트 스크립트에서는 절대 사용되지 않는 RemoteEvent 또는 RemoteFunction입니다. 정상 플레이어는 이 원격 호출을 발사할 수 없어야 하므로, 수신하는 모든 트래픽은 악용자로부터 오는 것입니다. 서버가 이 원격 호출이 발생하는 것을 감지하면, 클라이언트가 간섭하고 있다는 매우 높은 신뢰도의 신호가 됩니다. 가장 즉각적인 조치는 사건을 기록하고 플레이어를 세션에서 퇴출하는 것입니다.
또 다른 변형은 RemoteEvents를 특정 방향적 목적에 맞게 설계하는 것입니다. 일부는 전적으로 클라이언트 → 서버 통신을 위해, 다른 일부는 전적으로 서버 → 클라이언트 통신을 위해 사용됩니다. 이벤트 이름은 그 의도된 방향을 드러내지 않지만, 서버는 각 원격이 사용되어야 하는 방향을 추적합니다. 악용자가 클라이언트에서 서버 → 클라이언트 원격을 발사하려고 시도하면, 이는 신뢰할 수 있는 감지 방법으로 작용합니다. 왜냐하면 정상적인 게임 플레이는 잘못된 방향으로의 통신을 트리거하지 않기 때문입니다.
결과 적용
감지 시스템이 의심스러운 행동을 플래그하면, 대응 전략을 신중하게 고려하세요. 다른 경험은 커뮤니티, 경쟁적인 위험, 혼란에 대한 허용 범위에 따라 다른 접근이 필요합니다.
결과 사다리 - 대부분의 경험은 영구 금지로 바로 점프하는 것보다 단계적으로 대응하는 것이 유익합니다:
- 조용한 기록 - 플레이어 영향 없이 증거를 구축합니다.
- 조용한 완화 - 악용의 영향을 차단합니다(요청 드롭, 값 제한, 올바른 상태 동기화).
- 일시적 제한 - 특정 기능(거래, 리더보드, 매칭)에 제한을 둡니다.
- 가시적 집행 - 퇴출, 일시적 정지 또는 영구 금지.
전략을 위한 고려사항
- 가시적 결과 지연 - 치터에게 정확히 무엇이 감지를 유도했는지 가르치지 않도록 하세요.
- 심각도와 대응 일치 - 경미한 경제 악용은 게임의 물리적 치트를 다룰 때와 다르게 다루어야 합니다.
- 커뮤니티 고려 - 경쟁적인 경험은 캐주얼 경험보다 엄격한 집행이 필요할 수 있습니다.
- 실수 계획 - 감지 신뢰도가 낮을 때는 되돌릴 수 있는 조치를 선호하세요.
상습 위반자에 대해서는 퇴출에만 의존하지 말고 Ban API를 사용하는 것을 고려하세요. 금지 API는 금지된 플레이어가 재가입하지 못하도록 막고, 귀하의 우주 전반에서 더 나은 추적을 제공합니다. 감지 규칙의 버전을 지정하고 결과 요율을 추적하여 문제가 있는 시스템을 식별하세요. 플레이어 피드백을 모니터링하여 집행이 커뮤니티에 공정하게 느껴지는지 평가하세요. 올바른 균형은 귀하의 경험의 필요와 플레이어의 기대에 전적으로 달려 있습니다.