기본 디자인 결정은 악용을 억제하기 위한 "첫 번째 단계" 보안 조치로 작용할 수 있습니다. 핵심 원칙은 치팅이 불가능하거나 의미 있는 이점을 제공하지 않도록 시스템을 설계하는 것입니다. 이를 통해 치팅을 탐지하고 예방하려고 하기보다는 사전에 방지하려는 것입니다.
슈팅 게임을 고려해 보세요. 플레이어는 적을 처치하여 포인트를 획득합니다. 악용자는 쉽게 포인트를 얻기 위해 같은 위치로 텔레포트하는 봇을 생성할 수 있습니다. 이 시나리오는 반응적 접근 방식과 방어적 접근 방식의 차이를 보여줍니다:
| 접근 방식 | 예측 가능한 결과 |
|---|---|
| 봇을 감지하는 코드를 작성하여 쫓아내기 (반응적 접근). | |
| 새로 스폰된 플레이어의 처치에 대한 포인트 획득을 줄이거나 완전히 제거하기 (방어적 접근). |
추가적인 방어적 디자인 시나리오:
| 잠재적 악용 시나리오 | 반응적 접근 (효과적이지 않음) | 방어적 접근 (더 효과적임) |
|---|---|---|
| (오비) 악용자가 보상을 받기 위해 끝으로 텔레포트함 | 플레이어의 최종 위치를 확인하고 불가능한 완성 시간을 탐지하려고 시도함 | 필수적이고 순차적인 체크포인트로 디자인. 서버는 보상을 부여하기 전에 각 체크포인트가 순서대로 활성화되었는지 검증합니다. 인간이 할 수 없는 시간 내에 단계를 완료한 플레이어를 플래그로 지정하여 추가적인 레이어를 추가할 수 있습니다. 경험의 디자인(체크포인트 요구)은 효과적인 서버 측 검증을 가능하게 합니다. |
| (전투) 클라이언트가 불가능한 피해량을 보고함 | 불가능한 피해 값을 탐지하고 필터링하려고 시도함 | 서버가 서버 측 무기 통계에서 모든 피해를 계산하고 서버 측 레이캐스팅을 통해 히트를 검증함 |
| (경제) 악용자가 빠른 요청을 통해 아이템을 복제함 | 중복 요청이나 비정상적인 패턴을 탐지하려고 시도함 | 서버 측 쿨다운을 구현하고 모든 거래를 현재 플레이어 인벤토리 상태와 대조하여 검증함 |