基本的なデザインの決定は、エクスプロイトを抑制するための「第一歩」のセキュリティ対策として役立ちます。コアの原則は、チートが不可能であるか、または意味のある利点を提供しないシステムをデザインすることであり、事後にチートを検出して防ぐことを試みるのではありません。
プレイヤーがキルでポイントを獲得するシューティングゲームを考えてみてください。エクスプロイターは、同じ場所にテレポートするボットを作成し、簡単にポイントを獲得するために繰り返しキルされるかもしれません。このシナリオは、反応的アプローチと防御的アプローチの違いを示しています。
| アプローチ | 予測可能な結果 |
|---|---|
| ボットを検出しようとするコードを書いてボットを追い詰める(反応的アプローチ)。 | |
| 新たに出現したプレイヤーのキルに対するポイント獲得を減少させるか、完全に除外する(防御的アプローチ)。 |
追加の防御的デザインシナリオ:
| 潜在的なエクスプロイトシナリオ | 反応的アプローチ(効果が薄い) | 防御的アプローチ(効果が高い) |
|---|---|---|
| (オビ) エクスプロイターが報酬を得るために終点にテレポートする | プレイヤーの最終位置を確認し、不可能な完了時間を検出しようとする | 必須の逐次的なチェックポイントで設計する。サーバーは報酬を提供する前に各チェックポイントが順番にアクティブになったことを検証する。人間には不可能な速さでステージを完了したプレイヤーにフラグを付けることで、さらにレイヤーを追加できます。体験のデザイン(チェックポイントを必要とすること)が効果的なサーバー側の検証を可能にします。 |
| ( combat) クライアントが不可能なダメージ量を報告する | 不可能なダメージ値を検出してフィルタリングしようとする | サーバーがサーバー側の武器ステータスからすべてのダメージを計算し、サーバー側のレイキャスティングを通じてヒットを検証します |
| (経済) エクスプロイターが迅速なリクエストでアイテムを複製する | 重複リクエストや異常なパターンを検出しようとする | サーバー側のクールダウンを実装し、すべてのトランザクションを現在のプレイヤーのインベントリ状態と検証する |