Как упаковать ресурсы игры и дать возможность читать только движку? - PullRequest
0 голосов
/ 15 января 2019

Я разрабатываю движок для 2D-игры на C ++, и в течение нескольких дней я искал способ защиты изображений и звука моей будущей игры. Я знаю, что нет 100% защиты, и что кто-то сможет открыть эти файлы, но я имею в виду обычного пользователя, который только что установил игру, не дает ей изменять спрайты, менять звук, перезаписывать xml-файлы данными карты игры. ,

Я скачал некоторые игры, сделанные в Unity, и заметил, что используется расширение .assets, в Diablo 2 оно используется .ma0, .mpq, .data, в FEZ .pak, в Super Meat Boy только файл .tp. Другими словами, вы не можете открывать и редактировать любые из этих файлов в текстовом редакторе или разархивировать с помощью winrar, они предлагают минимальный уровень защиты. Как это сделать? Нужно ли создавать собственный двоичный формат файла или есть какая-нибудь программа, облегчающая работу?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Вы не можете.

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

Вы можете зашифровать данные, но так как ключ должен храниться в вашем приложении, а у пользователя есть копия вашего приложения, которую также можно извлечь и / или изменить.

Вы можете добавить цифровую подпись, чтобы люди не могли изменять ресурсы, а затем использовать их («моддинг»), но, опять же, это может быть изменено в вашем приложении.

Вы можете запутать активы, отправив их в проприетарном формате, но обычно это делается исключительно по функциональным причинам, потому что, опять же, кто-то обратный инжиниринг их.

Как только вещь находится на чужом компьютере, вы теряете контроль над ней.

0 голосов
/ 15 января 2019

Здесь на самом деле несколько вопросов, iirc:

  • Как запретить пользователям читать игровые ресурсы?
  • Как запретить пользователям манипулировать игровыми активами?
  • Какой формат файла можно использовать для хранения игровых активов?

Если вы используете существующий движок, он, вероятно, имеет некоторую поддержку для этого, и если этого достаточно для ваших целей, вам нужно только научиться его использовать.

Если вам нужно накатить свои собственные, вам нужно четко определить свои требования и выбрать решение, которое их удовлетворяет. Что касается хранения ресурсов, вероятно, проще всего работать с форматом на основе ZIP, все языки имеют некоторую поддержку для этого. Чтобы защитить целостность, вы должны использовать криптографические алгоритмы: цифровые подписи для обнаружения взлома и шифрование для предотвращения чтения. Это, вероятно, немного замедлит открытие активов, но в большинстве случаев это должно быть приемлемым.

...