Скрыть данные игры от игрока?

13

Я работаю над своей первой (C ++) игрой и хочу использовать дизайн на основе компонентов. В последнее время я много читал об этом, и вчера я решил, что хочу сохранить объектные данные во внешних файлах JSON, чтобы обеспечить большую гибкость и удобство доступа.

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

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

Я что-то пропустил? Какова политика скрытия игровых данных (в играх с открытым исходным кодом)? Это нормально, чтобы все было доступно каждому?

Если нет, то как можно спрятать данные?

Марко Джанкотти
источник
3
Обычно возможность изменять игру - это особенность, а не ошибка, особенно для одиночной игры.
jprete
8
Я бы не стал беспокоиться. Ваше время лучше потратить на создание хорошей игры. =)
Яри ​​Комппа
1
Я склонен думать, что (почти) любой, кто скачивает игру с открытым исходным кодом, знает достаточно, чтобы на самом деле получать удовольствие от работы с игровыми данными и разрушения игры в процессе. Если это хорошая игра, вы увидите, что вики, объясняющая ваш формат JSON, всплывет в кратчайшие сроки!
важно

Ответы:

33

Если игроки возятся и портят веселье, я бы сказал, что это их проблема. Для тинкеров половина удовольствия - видеть, что ломается.

Это все равно, что беспокоиться о том, что игроки будут использовать чит-код в режиме бога, и беспокоиться о том, что игрок не подвергается сомнению.

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

тетрада
источник
20

Боюсь, неопытный геймер может сломать игру или хотя бы испортить удовольствие.

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

Мой совет - сжать его и переименовать расширение файла. Это защитит случайного зрителя, но вам не составит труда работать с ним. Вы можете использовать что-то вроде PhysicsFS для работы с файлами.

Kylotan
источник
5
Ага. Я помню, как играл в Colonization на Amiga. Параметры единиц были сохранены в простом текстовом файле со стандартным txtрасширением. Поиграв довольно много, я решил, что сделаю игру сложнее, настроив эти параметры. Позже я поделился этими настройками с друзьями. Это было весело ...
Liori
3

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

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

Итак, у вас есть две возможности:

  1. просто оставьте материал в незашифрованном виде (но, по крайней мере, соберите хэш md5 каждого файла, чтобы вы могли проверить его во время выполнения на предмет любого повреждения в дистрибутиве вашей игры);
  2. перейдите с закрытым исходным кодом , зашифруйте данные (с помощью секретного обратимого многошагового алгоритма, такого как перестановка строк + перестановка байтов + xor с постоянной строкой и т. д.), а затем зашифруйте все с помощью AES. Всем будет сложнее восстановить данные. Намного сложнее
gd1
источник
1
Даже ваш метод с закрытым исходным кодом не так уж и сложен. Те же люди, которые регулярно нарушают схемы, используемые для защиты от копирования, могут, вероятно, сломать это тоже. Основное отличие состоит в том, что они не будут беспокоить.
jprete
@jprete: точно. Это всего лишь вопрос времени, но время очень важно для людей, поэтому сделать его трудным и не выгодным иногда бывает достаточно.
gd1
3

Я бы оставил это. Существует огромное сообщество модов, и игрокам нравится менять / моддинг игры. Если они что-то сломают, это на них. Они всегда могут переустановить.

Также облегчает работу с другими разработчиками.

user697111
источник