1

私は現在、レベルをランダムに作成するゲームを作成していますが、Spelunky のように、デイリー チャレンジ セクションで全員が同じレベルをプレイできるようにすることに興味があります。

最初は、クライアントが日付に基づいてシードを決定できるようにすることを考えましたが、日付はローカルで偽装される可能性があります。

parse.com の無料アカウントにアクセスできるので、クラウドでコードを実行し、結果が返されることを期待できます。そのため、現在の日付に基づいてクラウド コードにハッシュを要求することを検討しましたが、サーバーに毎日のスコアではなくそのレベルのスコアを送信している間に、別のレベルをプレイするように偽装される可能性があります。

次に、サーバーで日付を暗号化し、クライアントで復号化することを考えましたが、対称暗号化を使用すると問題が発生する可能性があります。それで...おそらく非対称暗号化を使用しますか?

ここでもっと簡単な解決策がありませんか?これは自分自身を複雑にしすぎているように感じますが、よくわかりません。この種の問題に対して一般的に受け入れられている解決策はありますか? しばらくグーグルで検索しても何も見つかりませんでした。

PS: 関連する場合に備えて、unity3d を使用しています。

4

2 に答える 2

0

さまざまな暗号化方法でデータを保護するよりも、プレイヤーがチャレンジを終了した後に送信されるリクエストを検証する方が簡単かもしれません.

  • プレーヤーが新しいチャレンジを開始するリクエストを送信します
  • サーバーは、このプレーヤーが今日すでにチャレンジを完了しているかどうかを確認し、有効なリクエストである場合は続行します
  • チャレンジ関連のデータはサーバー上でランダムに生成されます
  • 前述のデータはサーバーに保存されます
  • 生成されたデータをクライアントに送信する
  • 一定時間後、プレイヤーはサーバーにリクエストを送信し、チャレンジを完了したと主張します。
  • チャレンジIDを以前に保存したものと比較したり、チャレンジがまだ利用可能かどうかを確認したりするなど、受信したデータの検証を実行します。
  • リクエストが有効な場合はプレーヤー アカウントを更新し、そうでない場合は無視します

クライアント側で処理されているデータが常にハッキングされる可能性があると仮定すると、ゲームのパフォーマンスを向上させるために、サーバー側でデータを検証し、クライアント側でデータの暗号化/復号化プロセスを簡素化することを常にお勧めします。

于 2014-07-18T16:56:15.970 に答える