У меня возникла идея использовать шифрование, чтобы пользователи не могли выяснить контент в моей программе за пределами самой программы. Подобно тому, как пользователи могут найти текстуры, которые никогда не использовались в игре, предназначенные для того, чтобы быть частью какого-то пасхального яйца при прохождении по данным игры. Это может, например, испортить его для всех, если вы разместите его в Интернете.
Представьте себе секретную комнату, в которой игрок должен нажимать правильные цифры на двери безопасности в игре, которая, если она правильная, должна сгенерировать правильный ключ дешифрования, а затем расшифровать эту часть уровня и открыть дверь. Таким образом, делая пасхальное яйцо иначе недоступным даже при просмотре игровых данных, так как ключ фактически не хранится, он генерируется на основе пользовательского ввода.
Вот еще один пример того, что я представлял. У меня есть игра-головоломка, скажем, с 20 уровнями, каждый из которых зашифрован с использованием другого ключа. Вместо того, чтобы хранить ключ дешифрования в программе, позволяющей кому-то декомпилировать программу и находить ее, я создаю ключ шифрования / дешифрования на основе решения предыдущей головоломки. Таким образом, игрок должен будет на самом деле разгадать головоломку, прежде чем получать какую-либо информацию о следующем уровне, даже при просмотре игровых данных.
Игрок, если он осведомлен, мог бы легко перебрать его, легко учитывая, что число решений головоломки, вероятно, меньше, чем количество ключей дешифрования. Это действительно сложная задача головоломки, и здесь она не очень важна. Хотя я опубликовал ответ по этому поводу здесь
Есть ли сегодня программы / игры, которые сделали что-то подобное? Хранить зашифрованный контент в своих играх? А если нет, то почему? Есть ли много правил и положений об этом, на уровне магазина или страны? Кто-нибудь видит какие-либо очевидные подводные камни, которые мне не хватает? Игнорируя такие вещи, как пользовательский опыт, эта идея кажется мне здравой и заставляет меня удивляться, почему я этого раньше не видел.
Редактировать : Может быть, не совсем понятно, что я говорю, поэтому вот более конкретный пример.
Допустим, у меня есть функция, которая принимает строку из 20 символов и генерирует симметричный ключ, который я могу использовать для шифрования / дешифрования некоторого содержимого в игре. Единственный способ, которым пользователь может получить доступ к этому контенту, - это узнать эти 20 символов и сгенерировать один и тот же ключ. Этот ключ никогда не сохраняется напрямую и генерируется на лету на основе пользовательского ввода. Эти персонажи будут скрыты в игре в том, что могут быть книги, диалоги с неигровыми персонажами, возможно, даже вне игры, даже на обратной стороне коробки.
Так что при 2 * 10 ^ 28 возможных комбинаций, которые можно попробовать, вероятно, люди с большей вероятностью найдут контент по назначению, а не по просмотру игровых данных.
Редактировать 2 : рассматриваемый контент будет зашифрован произвольным и секретным ключом перед отправкой потребителю. Этот ключ, очевидно, не будет поставляться с игрой. Ему или ей придется каким-то образом ломать голову над ключом, учитывая ряд подсказок, сделанных на основе ключа, которые скрыты в игре или где-то еще. Однако эта система была бы прозрачной для пользователя, поскольку вы не знали бы, что контент зашифрован, если вы на самом деле не просматриваете игровые данные.
Как уже упоминалось, у этого есть один очевидный недостаток в том, что его использование ограничено. Как только один человек понял это, он / она может поделиться этим со всеми, если не ключ / решение, то сам контент. Однако, если вы намерены сохранить что-то настолько секретное, что один человек не сможет решить его, а люди должны будут вместе решать его, или вы боитесь, что ваше пасхальное яйцо настолько хорошо спрятано (умышленно), что оно Скорее всего, кто-то найдет его в коде, а не через игру. Тогда я думаю, что это может работать отлично.
Я лично рекомендовал бы использовать его только один раз за игру и только для вещей, которые не влияют на основной игровой процесс, например, пасхальные яйца, секретное окончание. Любая головоломка должна быть настолько сложной или хорошо спрятанной, чтобы замедлить людей настолько, чтобы шифрование контента стоило того, и если эта загадка мешает прогрессирующим людям, то, вероятно, никто не будет развлекаться.