NDA
Транспортные услуги
Россия, Москва
Ноябрь 2024
В 2024 году программе лояльности российской авиакомпании (NDA) исполнилось 25 лет, и в честь этого авиакомпания запустила промоакцию. Её цель — привлечь внимание и громко вернуться в медиапространство.
Заказчик предоставил готовую концепцию и дизайн‑систему, а наша задача заключалась в реализации и запуске проекта — браузерной игры с общим количеством 500 000 игроков.
О клиенте: Российская авиакомпания и одна из крупнейших авиакомпаний мира, ведущая свою историю с прошлого века. Сегодня компания обслуживает рейсы в более чем 50 стран, активно развивает как международные, так и внутренние перевозки.
Кратко о результатах работы:
1. Разработана десктопная и мобильная версий игры с единым личным кабинетом.
2. Реализована система сохранения прогресса игрока независимо от количества игровых сессий.
3. Реализованы турниры с рейтингом участников.
4. Внедрена цензура для имен персонажей и аватаров согласно этическим нормам и законодательству.
5. Оптимизирована производительность игры под различные устройства.
6. Настроены механизмы защиты от мошенничества и читерства.
7. Обеспечена высокая отказоустойчивость системы с учётом пиковых нагрузок в утреннее и вечернее время суток.
В основе концепции игры — главный герой, которого зовут Андрей. Он спешит на самолёт, преодолевает препятствия и собирает подарки. Сложность игры постепенно растёт, а у героя всего 3 жизни. Игроки набирают очки и бонусы, которые сохраняются и не сгорают — даже если игру запускать заново несколько раз.
Длительность проведения игры рассчитана на один месяц, а по её завершению все очки конвертируются в бонусы. Их можно потратить на ценные призы — в том числе, на международные перелёты.
Мы разработали десктопную и мобильную версии игры с единым личным кабинетом — прогресс сохранялся на обоих устройствах, но переключиться между ними во время сессии было нельзя.
По правилам игры сессия длится до 10 минут: со временем скорость героя увеличивается, делая прохождение сложнее.
В турнирной таблице пользователь может увидеть своё положение в общем рейтинге и количество баллов, которые он заработал в общем. Здесь же показаны промокоды, которые он собрал за все время.
Игроки могли выбрать себе ник в игре. Чтобы соблюсти этические и законодательные нормы, мы ввели запрет на регистрацию ников с запрещёнными словами.
Подобный фильтр был установлен и для аватаров — на них не должно было быть чего‑то незаконного и неприличного.
Мы адаптировали игру для мобильных устройств и ПК — добавили динамическую регулировку скорости загрузки под мощность устройства. Это обеспечивает равные условия для всех игроков.
Без оптимизации владельцы слабых устройств столкнулись бы с низким FPS, задержками и невозможностью играть. Чтобы этого избежать, мы внедрили мониторинг FPS и автоматическую настройку графики, расчёта очков и появления объектов. Это гарантирует плавный геймплей на любом устройстве.
У игры большой призовой фонд и множество бонусов, поэтому мы ожидали столкнуться с мошенничеством. Некоторые игроки манипулировали кодом через браузер (например, телепортировали персонажа), что искажало честность игрового процесса.
Для выявления нечестных игроков мы настроили несколько критериев:
1. Отсутствие движения более 2 минут
2. Игровые сессии дольше 10 минут
3. Персонаж зависает в воздухе без столкновений
4. Аномальная скорость игры
5. Сбор бонусов сверх лимита (например, 50 вместо 10)
Все, кто попадал под эти критерии, были заблокированы.
Мы обнаружили, что пользователи наиболее активны утром и вечером. Чтобы система работала без сбоев в эти часы, мы заранее выделили серверные мощности, настроили кэширование (Redis) и оптимизировали Nginx, а также оптимизировали базу данных.
Например, вместо постоянных запросов данных 100 тыс. пользователей, мы кэшировали их на короткое время — это снизило нагрузку, при этом данные оставались актуальными.
Backend игры написан с использованием протокола сокета — он минимизирует переходы по страницам, что сильно увеличивает скорость работы.
В течение всего периода мы наблюдали за использованием игры и были готовы в любой момент подключиться к решению технических вопросов. Серьезных багов не было, а пользователи активно помогали Андрею успеть на самолет.