Le decisioni di design di base possono servire come misure di sicurezza "primo passo" per scoraggiare gli exploit. Il principio fondamentale è progettare sistemi in cui il cheating sia impossibile o fornisca un vantaggio significativo, piuttosto che provare a rilevare e prevenire il cheating dopo il fatto.
Considera un gioco di sparatutto in cui i giocatori guadagnano punti per uccisioni. Un exploiter potrebbe creare bot che teletrasportano nella stessa posizione per essere ripetutamente uccisi per guadagnare punti facilmente. Questo scenario illustra la differenza tra approcci reattivi e difensivi:
| Approccio | Risultato prevedibile |
|---|---|
| Inseguire i bot scrivendo codice che prova a rilevarli (approccio reattivo). | |
| Ridurre o eliminare completamente i guadagni di punti per le uccisioni di giocatori appena spawnati (approccio difensivo). |
Altri scenari di design difensivo:
| Scenario di potenziale exploit | Approccio reattivo (meno efficace) | Approccio difensivo (più efficace) |
|---|---|---|
| (Obby) L'exploiter si teletrasporta alla fine per richiedere premi | Controlla solo la posizione finale del giocatore e prova a rilevare tempi di completamento impossibili | Progetta con checkpoint obbligatori e sequenziali. Il server convalida che ogni checkpoint è stato attivato in ordine prima di concedere premi. Puoi aggiungere un altro livello segnalando i giocatori che completano le fasi più velocemente di quanto umanamente possibile. Il design dell'esperienza (richiedente checkpoint) consente la convalida efficace sul lato server. |
| (Combattimento) Il client riporta danni impossibili | Prova a rilevare e filtrare valori di danno impossibili | Il server calcola tutti i danni dalle statistiche delle armi lato server e convalida i colpi tramite il raycasting lato server |
| (Economia) L'exploiter duplica gli oggetti tramite richieste rapide | Prova a rilevare richieste duplicate o schemi insoliti | Implementa cooldown lato server e convalida tutte le transazioni rispetto allo stato attuale dell'inventario del giocatore |