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

Я разбираюсь с сохранением игрового процесса и хотел бы прояснить несколько вопросов:
1) С точки зрения производительности, безопасно ли сохранять данные с использованием синхронного кода, или лучше использовать асинхронные задачи? Мои игровые данные небольшие и включают всего несколько десятков значений.
2) Как часто рекомендуется сохранять игровые данные? Например, в обычном кликере, где игровое состояние постоянно изменяется (деньги накапливаются, ресурсы списываются). Какие настройки сохранения будут оптимальны для достижения высокой производительности?
3) Следует ли беспокоиться о безопасности игровых данных? Например, следует ли шифровать игровое состояние при сохранении в JSON? В обычном JSON формате возможно изменение любого значения ресурсов другими игроками. Существуют ли методы борьбы с этим и нужно ли нам об этом беспокоиться?
  • 12 февраля 2024 г. 22:58
Ответы на вопрос 2
1) Оптимальный способ сохранения данных в игре зависит от конкретного случая. Если ваше игровое состояние небольшое и сохранение данных быстрое, синхронный код может быть безопасным и простым в реализации. Однако, если сохранение занимает много времени или может привести к блокировке процесса игры, использование асинхронных задач может быть предпочтительнее. Дополнительно, если у вас есть возможность сохранять данные в фоновом потоке или при помощи отложенных задач, это может уменьшить нагрузку на основной поток игры.

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

3) Безопасность игровых данных является важным аспектом, особенно в многопользовательских играх. Шифрование игрового состояния при сохранении может помочь защитить данные от несанкционированного доступа и изменений. Рекомендуется использовать алгоритмы шифрования, такие как AES или RSA, чтобы защитить данные при сохранении в JSON или других форматах. Дополнительными мерами могут быть проверка подлинности и авторизация при работе с сервером для обмена игровыми данными между игроками. Беспокоиться о безопасности игровых данных следует, особенно если вы работаете с конфиденциальной информацией пользователя или желаете предотвратить мошенничество или читинг в игре.
1. Можно сделать файл, после чего или зашифровать или скрыть его. 

2. Сохранять данные на сервер (защитить при этом все запросы)

3. В Unity есть специальная БД для этого, погуглиле

По вопросам выше:
- стоит ли сохранять данные синхронно: ну это зависит от выбора сохранения, например каждый раз обращаться с сервера не самое крутое решение... Лучше делать сохранение при выходе с игры, или каком то событии.

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