[T.E.R.M.I.N.A.L.] Как я ослеп в собственной игре, новые языки и параноидальная аналитика
После релиза португальской локализации я приготовился с удовольствием наблюдать за графиками: очень хотелось узнать, как игроки из Бразилии страдают в моих мрачных бункерах. Но геймдев не прощает расслабленности.
Слепой полёт.
Примерно сразу после выкатки патча у меня... легла аналитика. Дата-центр Яндекса (а у меня стояла классическая AppMetrica) ушел в офлайн, и я ослеп.
Я как будто сам оказался в терминале: игроки где-то там скачивают игру, умирают от монстра, решают головоломки, а я сижу в полной, беспросветной тьме и не вижу ни одного ивента. Что там с бразильцами? Где они застревают? Неизвестно.
Пока сервера лежали, я вошел во вкус локализаций и вслепую пилил новый масштабный апдейт. В нем T.E.R.M.I.N.A.L. заговорил сразу на трех новых языках: испанском, турецком и (внезапно) индонезийском. Но выпускать такое масштабное обновление без рабочих метрик не хотелось.
Паранойя как двигатель прогресса.
Поняв, что доверять одной системе сбора метрик - это как хранить все сохранения игры на дискете, я решил продублировать аналитику. Выбор пал на MyTracker от VK. Гулять так гулять, теперь за каждым шагом игрока будут следить сразу две мегакорпорации!
Трудности перевода (теперь уже в коде).
Натягивать одни и те же ивенты на две разные системы - отдельный вид искусства. Если AppMetrica радостно жрет любые JSON-словари (с числами, булевыми значениями и прочей радостью), то MyTracker оказался куда более привередливым гурманом. Ему подавай только словари формата . Пришлось писать эдакого Франкенштейна: метод-конвертер, который аккуратно собирает JSON для Яндекса, а для VK судорожно переводит каждую цифру в строковый вид.
Архитектурный дзен.
Заодно под этот блэкаут пришлось окончательно переписать логику определения языка. Раньше аналитика пыталась угадать язык по системе девайса, из-за чего новые турецкие и индонезийские игроки в старых логах помечались бы как англичане. Теперь же скрипт просто культурно стучится в новенькую базу LanguageDatabase и забирает нужный код напрямую из профиля. Добавление любого нового языка теперь занимает ровно ноль строк кода в самой аналитике.
В итоге я получил бесценный опыт, расширил аудиторию еще на три страны и построил параноидально-надежную систему, которая выживет даже при падении серверов.
Заценить, как это выглядит в альтернативном сторе, можно здесь: https://appgallery.huawei.com/app/C119051223
Следить за моими "шедеврами" можно тут: https://vk.ru/bezdna13_ru
Скачать последнюю актуальную версию можно и с Рустора: https://www.rustore.ru/catalog/app/com.bezdna13.terminal