Decisões básicas de design podem servir como medidas de segurança "de primeiro passo" para desencorajar explorações. O princípio fundamental é projetar sistemas onde a trapaça é impossível ou não oferece vantagem significativa, em vez de tentar detectar e prevenir a trapaça depois que ela ocorre.
Considere um jogo de tiro onde os jogadores ganham pontos por derrubadas. Um explorador pode criar bots que teleportam para o mesmo local para serem mortos repetidamente e ganhar pontos facilmente. Este cenário ilustra a diferença entre abordagens reativas e defensivas:
| Abordagem | Resultado previsível |
|---|---|
| Perseguir bots escrevendo código que tenta detectá-los (abordagem reativa). | |
| Reduzir ou remover completamente os ganhos de pontos por derrubadas em jogadores recém-spawnados (abordagem defensiva). |
Cenários adicionais de design defensivo:
| Cenário de exploração potencial | Abordagem reativa (menos eficaz) | Abordagem defensiva (mais eficaz) |
|---|---|---|
| (Obby) Explorador se teleporta para o final para reivindicar recompensas | Verifique apenas a posição final do jogador e tente detectar tempos de conclusão impossíveis | Projete com pontos de verificação obrigatórios e sequenciais. O servidor valida se cada ponto de verificação foi ativado na ordem antes de conceder recompensas. Você pode adicionar outra camada sinalizando jogadores que completam fases mais rápido do que humanamente possível. O design da experiência (que requer pontos de checagem) é o que possibilita a validação eficaz do lado do servidor. |
| (Combate) Cliente reporta valores de dano impossíveis | Tente detectar e filtrar valores de dano impossíveis | O servidor calcula todo dano com base nas estatísticas de armas do lado do servidor e valida os acertos através de raycasting do lado do servidor |
| (Economia) Explorador duplica itens através de solicitações rápidas | Tente detectar solicitações duplicadas ou padrões incomuns | Implemente cooldowns do lado do servidor e valide todas as transações em relação ao estado atual do inventário do jogador |