TGViewer
SpellSinger - разработчик игр на Unity SpellSinger - разработчик игр на Unity @spellsingergames · 548 subscribers
Post #221 1.46K
Сломались сохранения на Huawei

Мы получили вот такую жалобу от игрока:
Периодически играю в бурить копать и столкнулся с тем, что в последнее время не сохраняется прогресс. То есть, я играю, покупаю улучшения. Все хорошо. Потом выхожу, и когда захожу снова через некоторое время(через час-2)снова появляется уведомление о том, что получены ящики за вход в игру и прогресс тот же который был в первый заход. Сейчас даже включил облачные сохранения, но и после этого прогресс не сохранился


Было непонятно, что с этим делать, поэтому решено было смотреть логи. Встал вопрос, как максимально дружелюбно для игрока собрать логи?

С помощью Unity события Application.logMessageReceived настроил сборку логов в файл, а с помощью плагина UnityNativeShare добавил кнопку "отправить логи", которая вызывает стандартное меню "поделиться" андроида. Сбилдил игру, выложил APK на наш сайт и попросил игрока обновить игру и отправить логи.

В логах были успешные записи о авторизации, чтении и записи сохранения в файл и в Google Play Services. Это насторожило, ведь игрок сказал, что у него Huawei без сервисов Google.

Предположил, что проблема в сервисах Google (получаем всегда старое сохранение, новое не записывается). Так как используется автоматическое разрешение конфликтов по времени сохранения, добавил в логи информацию о времени из метаданных сохранения.

Отправил новый билд игроку, получил от него новые логи.

В логах виду, что время загруженного сохранения 01.01.1970 0:00:00. Хотя такого не может быть по контракту самого API гугл сервисов.
/// <summary>
/// A timestamp corresponding to the last modification to the underlying saved game. If the
/// saved game is newly created, this value will correspond to the time the first Open
/// occurred. Otherwise, this corresponds to time the last successful write occurred (either by
/// CommitUpdate or Resolve methods).
/// </summary>
/// <value>The last modified timestamp.</value>
DateTime LastModifiedTimestamp { get; }


Уточняю у игрока, как такое может быть, что игра успешно соединяется с сервисами Google, хотя он пишет, что у него их нет. Получаю ответ
Да, у меня установлено приложение GBox для установки приложений, которых нет в Rustore и AppGallery, а так же MicroG который идут в комплекте к GBox


Понятно. На устройстве какая-то кривая заглушка для сервисов Google, которая некорректно работает. Добавляю проверку на валидность даты в метаданных сохранения, и, если дата кривая, игнорирую сохранения от сервисов Google и использую только локальные файлы (как если бы сервисы Google полностью отсутствовали).

Игрок подтвердил, что проблема решена.

#android
  • 🔥 29
  • 🤯 1
  • 👨‍💻 1
  • 👀 1
More from @spellsingergames
  1. Oct 1, 2026Автор
  2. Aug 31, 2026Post #235
  3. Aug 25, 2026Прошли модерацию на Crazy Games. Basic Launch продлится до 15 сентября или пока не наберет…
  4. Aug 24, 2026А мы, тем временем, идём покорять #crazy_games Вчера ночью отправили билд на модерацию. Мо…
  5. Aug 24, 20262 недели нужно рекоммендеру Яндекс игр, чтобы как-то отреагировать на изменения метрик. AR…
  6. Aug 14, 2026Шестой эпизод подкаста ГЕЙМДЕВ ПОД ПИВОМ уже во вторник, в 22:30МСК! Хорошенечко отоспитес…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →