Примечание: Это относится к Android специально, но лучший ответ может быть не специфичным для платформы, поэтому другие теги.Как я могу заставить игроков взломать данные уровня игры?
Рассмотрите игру, похожую на сердитых птиц: у вас есть куча уровней. Каждый раз, когда вы заканчиваете уровень, следующий уровень доступен для игры, но не раньше. Как я могу заставить игроков взломать мои игровые файлы и разблокировать уровни, которые не должны быть доступны? Предположим, что данные прогрессии хранятся локально.
Мои мысли:
на андроид, все файлы приложения хранятся в папке, которую пользователь может только доступ, если они имеют корневой доступ (по умолчанию, они никогда не делают, но это, как правило, очень легко получить до тех пор, пока вы google немного). Сейчас я использую SQLite базу данных, которая выглядит примерно так:
LevelId = pk | UnlockStatus = int, 0 = locked, 1 = unlocked, 2 = completed with 1 star, ...
Это хорошо до тех пор, пока пользователь не имеет корня или вообще не знакомы с тем, где файлы приложения хранятся. Однако, если у них есть root, этот файл очень легко редактировать.
Насколько я могу судить, сердитые птицы хранят данные своего уровня в файле .lua
, по крайней мере, согласно его названию. Я не могу найти текстовый файл или файл db, содержащий информацию об уровне. Открытие этого .lua
в текстовом редакторе не отображает ничего, кроме тарабарщины. Я не пробовал hex-редактор.
Использование таблицы sql очень удобно. Есть ли простой способ сохранить данные о прогрессии в таблице sql, так что пользователю будет сложнее понять это? В идеале, это также не должно быть слишком трудоемким для реализации. Будучи автономной игрой, мне все равно, если игрок взломает ее или нет, поэтому я ищу лучшее качество - компромисс времени реализации. Тем не менее, теоретические ответы, которые дают намного больше времени реализации для получения более высокого качества.
как насчет шифрования данных, а затем их хранения ... не пробовал себя .. Я думаю, что это возможно ... – ngesh
Как вы уже упоминали: если игрок хочет погубить его для себя, зачем идти в проблемы с попыткой остановить их? – shambulator
Это уже довольно сложно сделать, и определенно вне досягаемости для большинства ваших игроков. Зачем беспокоиться о том, чтобы сделать это сложнее? –