私は、暗号化を使用して、ユーザーがプログラム自体の外にある私のプログラムのコンテンツを理解できないようにするという考えを持っています。ユーザーのように、ゲームのデータを調べながら、ゲームで決して使用されていないテクスチャが、ある種のイースターエッグの一部であることに気付くかもしれません。これは、たとえば、オンラインで投稿された場合、全員を台無しにする可能性があります。
プレイヤーがゲーム内のセキュリティドアの正しい番号を押す必要がある秘密の部屋を想像してください。正しい番号が正しい場合は正しい解読キーを生成し、レベルのその部分を解読してドアを開けます。したがって、キーは実際には保存されないため、ゲームデータを調べてもイースターエッグにアクセスできなくなります。これは、ユーザー入力に基づいて生成されます。
ここに私が想像していたものの別の例があります。20のレベルのパズルゲームがあり、それぞれが異なるキーを使用して暗号化されています。解読キーをプログラムに保存して、誰かがプログラムを逆コンパイルして見つけられるようにする代わりに、前のパズルの解に基づいて暗号化/解読キーを生成します。この方法では、ゲームデータを見ても、プレーヤーは次のレベルに関する情報を取得する前にパズルを実際に把握する必要があります。
プレーヤーは、知識があれば、パズルソリューションの数がおそらく復号化キーの数より少ないことを考えると、「簡単に」ブルートフォースすることができます。それは本当にパズルの問題の複雑さであり、ここではあまり重要ではありません。私はそれに関する答えをここに投稿しましたが
今日、このようなことをしたプログラム/ゲームはありますか?暗号化されたコンテンツをゲームに保存しますか?そして、もしそうでなければ、なぜですか?店舗または国レベルで、それに関する多くの規則と規制がありますか?誰かが私が見落としている明らかな落とし穴を見ていますか?ユーザーエクスペリエンスのようなものを無視すると、このアイデアは私には聞こえるかもしれませんが、なぜこれを見たことがないのか興味があります。
編集:私が言っていることは正確には明確ではないかもしれないので、ここでより具体的な例を示します。
20文字の文字列を受け取り、ゲーム内の一部のコンテンツを暗号化/復号化するために使用できる対称キーを生成する関数があるとします。ユーザーがそのコンテンツにアクセスできる唯一の方法は、これらの20文字を知って同じキーを生成することです。このキーは直接保存されることはなく、ユーザーの入力に基づいてその場で生成されます。これらのキャラクターは、本やNPCとの対話など、ゲームの外に隠されていたり、ゲームの外でも箱の後ろに隠れていることがあります。
そのため、2 * 10 ^ 28通りの組み合わせを試してみると、ゲームデータを調べるよりも、意図した方法でコンテンツを見つける可能性が高くなります。
編集2:問題のコンテンツは、消費者に出荷される前に、任意の秘密鍵で暗号化されます。このキーは明らかにゲームに同梱されません。キーに基づいて作成された一連の手がかりを考えると、彼または彼女は何らかの方法でキーを一緒に戻さなければならず、それはゲーム全体またはどこかで隠されています。ただし、実際にゲームデータを調べない限り、コンテンツが暗号化されていることがわからないため、このシステムはユーザーに対して透過的です。
多くの人が言及しているように、これにはユースケースが限られているという明らかな欠点があります。一人の人がそれを理解したら、彼/彼女はそれを他のすべての人と共有するかもしれません。しかし、あなたの意図が何かを秘密にして、一人で解決できないようにし、人々が協力して解決する必要がある場合、またはイースターエッグが非常によく隠れて(設計上)それが怖い場合誰かがゲームプレイを通してではなくコード内でそれを見つける可能性が高いです。その後、これはうまくいくと思います。
個人的には、ゲームごとに一度だけ、コアゲームプレイに影響を与えないもの、たとえばイースターエッグ、秘密の結末などにのみ使用することをお勧めします。コンテンツを暗号化するのに十分なほど人々を遅くするためには、パズルは非常に複雑であるか、十分に隠されている必要があります。