Сделать ресурсы недоступными для пользователя

Я написал игру на C/C++, которая скоро будет готова к выпуску.

Мой вопрос: что было бы хорошим способом сделать ресурсы (изображения/звук и т. д.) недоступными для пользователя?

Это не должно быть сильное шифрование, я просто не хочу, чтобы средний игрок просматривал папки с ресурсами.

На данный момент ресурсы не связаны в проекте Visual Studio, они загружаются из пути.


person Orujimaru    schedule 17.09.2012    source источник
comment
Вы можете сжать ресурсы как большую постоянную строку и распаковать их во время инициализации. Кроме того, вы можете сделать свою игру бесплатным программным обеспечением fsf.org и воспользоваться результатами работы сообщества. .   -  person Basile Starynkevitch    schedule 17.09.2012
comment
Раньше мы разделяли вкус и данные изображения и создавали изображение во время выполнения.   -  person MarsRover    schedule 17.09.2012
comment
На GDSE вы можете получить более подходящие ответы на вопросы, связанные с игрой.   -  person ErikEsTT    schedule 17.09.2012
comment
Как бы вы предложили мне сжимать ресурсы в виде строки? Будет ли строка значительно больше, чем объединенные несжатые ресурсы?   -  person Orujimaru    schedule 17.09.2012


Ответы (2)


Простым способом справиться с этим было бы сжать все файлы в ZIP-файл, защищенный паролем, который вы распаковываете в память (в файловую систему на основе памяти, если вы хотите быть причудливым).

Очевидным недостатком является то, что вам нужно либо хранить все в памяти, либо делать несколько вызовов, чтобы получить нужные файлы в данный момент.

РЕДАКТИРОВАТЬ: быстрый поиск дал мне эту ссылку на вопросы и ответы, касающиеся этого: Простой способ разархивировать ZIP-файл с помощью zlib

Предупреждение

Хакер по-прежнему может получить доступ к этим строкам, отключив процесс приложения с помощью отладчика во время работы приложения.

person HonkyTonk    schedule 17.09.2012
comment
Это звучит как разумное решение, я загружаю ресурсы только между уровнями, поэтому многократные вызовы, требующие времени, не будут проблемой. Не могли бы вы указать мне направление, как этого добиться? Как поток или учебник. - person Orujimaru; 17.09.2012
comment
@Orujimaru Я добавил ссылку. - person HonkyTonk; 17.09.2012

Это зависит от того, насколько сильно вы хотите что-то скрыть от пользователей; сколько вы готовы инвестировать по сравнению с вознаграждением. Вот несколько идей:

  1. Просто измените/удалите расширения файлов ваших файлов ресурсов. Большинство обычных пользователей уже будут остановлены.
  2. Слегка измените файлы, чтобы повредить их, добавив в начале несколько дополнительных байтов, которые ваше приложение знает, что их нужно пропустить. Дополнительные байты могут быть вводящим в заблуждение заголовком или мусором.
  3. Храните ресурсы в контейнере / формате архива, таком как ZIP или Blizzard MPQ. Опционально с паролем.
  4. Сохраните их как ресурсы в вашем исполняемом двоичном файле. Пользователям нужно будет использовать редактор/просмотрщик ресурсов, чтобы увидеть их; большинство пользователей даже не узнают, что они там.
person tenfour    schedule 17.09.2012
comment
Мне нравится идея немного изменить файлы, я собираюсь попробовать. Спасибо! - person Orujimaru; 17.09.2012