Ingress — немного статистики по порталам Москвы

С осени прошлого года подсел на игру с дополненной реальностью Ingress. И поскольку основной моей работой является программирование и автоматизация, то конечно мне захотелось что-нибудь автоматизировать в игре. А пока в игру не ввели фракцию программируемых боевых роботов, решил для интереса собрать статистику по порталам Москвы : )

Если захотите зарегистрироваться в игре после прочтения статьи, то, пожалуйста, не скачивайте игру в магазине. Вместо этого напишите мне вашу gmail-почту в комментариях и дайте мне день для отправки приглашения в игру. Если после всего этого вы к тому же выберете фракцию Enlightened, то гарантирую вам прокачку до 3 уровня в парке Сокольники : )

1. О сборе информации (можно пропустить)

Для получения данных о порталах разработчик не предоставляет никакого API. Единственный легальный способ получить информацию кроме как в самой игре - воспользоваться официальным сайтом https://www.ingress.com/intel .

Путем анализа траффика браузера стало понятно, что полезная информация об игровой обстановке пересылается в виде наборов данных, упакованных в формат JSON. Однако при просмотре карты на крупных масштабах пересылается только самая обзорная информация, а данные об абсолютно всех порталах доступны только на очень высоком зуме. Задумавшись и немного повозившись я решил запустить браузер в эмуляторе ПК с очень-очень большим "монитором". В принципе мне удалось запустить виртуальный ПК с виртуальным монитором 4800х6400 пикселей (портретная ориентация). Но как только я запускал браузер с игровой картой на таком разрешении, виртуальная машина практически подвешивалась. Данные в карту подгружались, но не могу сказать насколько они были полными, да и сдвинуть карту было нереально, хотя при таком разрешении мне потребовалось бы всего 4 полных загрузки карты на всю Москву. В итоге остановился на виртуальном мониторе 3840х2560. Карта кое-как загружалась, информация постепенно накапливалась.

Данные собирались 10 августа примерно с 18 до 20 часов вечера. Старательно просмотрев в браузере всю Москву я собрал ровно 1 Гб сырых данных об игровой обстановке. В них конечно же было полно избыточной информации, но благодаря текстовому формату данных и упаковке их в JSON, удалось быстро в них разобраться, а небольшой скрипт на PHP минут за 10 перекинул всю инфу о порталах в базу данных MySQL. Для каждого портала удалось получить принадлежность фракции, географическую широту и долготу, уровень портала, величину "здоровья" портала, количество установленных резонаторов, ссылку на фотографию портала и наименование портала. Размер базы данных всех порталов Москвы составил всего 6.5 Мб!

 

2. Можно ли получить в Москве оникса "уникэпчера"?  : )

Ну что же. ДА!!! В Москве можно получить оникс Pioneer, т.к. приблизительное количество порталов в городе порядка 30тыс.! Конечно, в зону охвата попало и ближайшее подмосковье, однако также скорее всего информация по каким-то порталам внутри МКАД могла не прогрузиться до конца. Итого, оценку общего числа порталов в городе можно считать достаточно точной. Я постарался визуализировать порталы, которые попали в базу данных на рисунке ниже. Серьезных пропусков с первого взляда не видно.

 

3. Основная статистика по собранным данным

Поехали! Почти 48% порталов во владении энлайтов, порядка 41% порталов за резистами, чуть больше 11% ничейные:

faction

Больше 25% порталов имеют 1-й уровень. В какой-то степени это связано и с тем, что ничейные порталы также имеют уровень 1. Сюда же попадают порталы начинающих игроков, которые не могут создать портал более высокого уровня. Если исключить П1, то больше всего порталов (22%) имеют уровень 5. Это порталы игроков высоких уровней, которые развернуты в одиночку. Однако не все так плохо, порядка 32% порталов (П6...П8 в сумме) все же "деплоились" как минимум несколькими игроками. Наконец, в Москве всего 451 портал уровня 8, а их доля всего 1.5%. В сумме порталов П1...П4 практически ровно столько же, сколько и порталов П5...П8 (14163 против 16512 соответственно):

level

Ровно 2/3 порталов (66%) "задеплоены" целиком. Если исключить эту категорию, то распределение остальных порталов по количеству резонаторов показывает идеальное убывание от порталов без резонаторов (11.5%) до порталов с 7-ю резонаторами (2%):

resonators

Ого, 35% порталов заряжены на все 100%!!! Больше половины (57%) порталов заряжено более чем на 85%. На графике отлично видны порталы, которые разряжаются естественным образом. Зубцы графика соответствует целому числу дней разрядки полностью заряженных порталов (от 1 до 7 дней справа налево). Все остальные порталы подвергались атакам и не были восстановлены после них, их суммарная доля 30%:

health

4. ГоркИ vs плАЩАТки!

Без лишних слов, безоговорочная победа ... с четырехкратным отрывом ... в гигантские 600 порталов от ближайшего преследователя ... присуждааааааааается ... Деееееееетским ......... площааааааааааааааааааадкааааааам!!! Congratulations!!! Ну а вся первая сотня лидеров хит-парада ниже:

название портала количество
Детская Площадка 797
Горка 198
Граффити 175
Фонтан 173
Детский Городок 172
Беседка 145
Площадка 98
Почта России 90
Playground 72
Graffiti 72
Детская Горка 66
Спортивная площадка 65
Графити 60
Мельница 58
Паровозик 53
Кораблик 52
Бабочка 48
Корабль 47
Клумба 46
Библиотека 43
Спортплощадка 41
Качели 39
Домик 38
Церковь 38
Почта 37
Ваза 32
Карусель 31
Детский Комплекс 30
Храм 30
Замок 29
Городок 29
Горки 28
Лев 28
Баскетбольная Площадка 28
Post Office 27
Цветок 26
Игровая Площадка 25
Тренажеры 25
Горы 25
Детская библиотека 25
Часовня 24
Памятник 24
Ленин 24
Паровоз 24
Песочница 24
Барельеф 23
Fountain 23
Фонтанчик 23
Аист 23
Футбольное поле 22
Крест 22
Паутинка 22
Кормушка 22
Машинка 21
Детский Замок 21
Башенка 21
Медведь 21
Арка 20
Табличка 20
Избушка 19
Сова 19
Вход В Парк 19
Children Playground 18
Спорт Площадка 18
Пушка 17
Слоник 17
Часы 17
Дельфин 17
Черепашка 17
Цветы 17
Цветочек 16
Лебеди 16
Лось 16
Детский домик 16
Башня 16
Статуя 16
Аисты 16
Мишка 16
Указатель 15
Колодец 15
Памятник Архитектуры 15
Телега 15
Жираф 14
Church 14
Ворота 14
Ежик 14
Качалка 14
Сцена 13
Ship 13
Олень 13
Карета 13
Корова 13
Памятная Табличка 13
Скульптура 13
Информационный Стенд 13
Якорь 13
фреска 13
Качельки 13
Памятный Камень 13
Лошадки 13

5. Где самые крутые телки фермы? У нас в клубе на районе!

По мере вхождения в роль аналитика стало интересно поискать, где именно в Москве самое большое число порталов для фарма из одной точки. База данных с координатами порталов была быстро экспортирована в файл с++, а среда программирования Qt позволила достаточно быстро набросать примитивную программу. Для каждого портала в базе анализировалось расстояние до всех других порталов, результаты ближе 40 метров подсчитывались. Алгоритм не умеет находить точки, расположенные МЕЖДУ порталами, из которых, возможно, доставалось бы большее число порталов. Тем не менее, результаты впечатляют!

Третье место достается группе порталов в районе Петровки, 25! Например, с портала "The Art Work" гарантировано достается 10 порталов!!!

10+ The Art Work (Петровка, 25)

Второе место у группы порталов в районе Староватутинского проезда, 12! С портала "Дама с собачкой" без проблем достается 11 порталов, а чуть сдвинувшись на север абсолютно точно достается 12 порталов!!!! Карта ниже:

11+ Дама с собачкой (Староватутинский проезд, 12)

Победитель в номинации крутейшая ферма Москвы у группы порталов по адресу Нежинская, 13к1! С портала Frogs гарантировано достаются 12 порталов и скорее всего чуть южнее получится достать сразу 13 штук!!! Жители этого дома стопудово наживаются на продаже стаффа и сдаче жилья шейперам!

12+ Frogs (Нежинская 13, к. 1)

 

6. На что рассчитывать, если захотеть обойти 100/1000/10000 порталов кратчайшим путем?

Последние силы были направлены на поиски самых коротких маршрутов между заданным числом порталов. Алгоритм случайным образом выбирает первый портал и далее прыгает на ближайший к нему, никогда не возвращаясь на уже посещенные. Расстояние между порталами считается по прямой, в реальности такие маршруты конечно же будут длиннее. Вычисления повторяются десятки / сотни раз, пока результат не станет нравиться.

6.1 Маршруты из 100 порталов

Самый короткий из найденных начинается из Музеона и продолжается до Новокузнецкой и чуть далее. Итоговая длина 4.52 км:

4.51958-95

Почти такой же по длине маршрут в восточной части Бульварного кольца, 4.54 км:

4.54001-20

Для разнообразия, маршрут по Сокольникам. 4.94 км:

4.94515-7

6.2 Маршруты по 1000 порталов

Подавляющее большинство маршрутов по 1000 порталов находятся внутри Садового кольца. Найти маршрут вне Садового прямо скажем проблематично. Самый короткий 54.6 км:

54.5556-1696

Почти точно такой же, 55.9 км:

55.8615-2934

Вариант с заходом на юг от Кремля, 57.5 км:

57.4541-2841

Из Пресненского района через весь центр к Новокузнецкой, 59.6 км:

59.53-1443

Через парк Горького и Музеон, 68км:

68.0472-480

Из Останкино в центр, 71.8 км:

71.7566-2224

Из Щукино(!) в центр, 79.3 км:

79.2893-2436

Ну и один из первых маршрутов вне центра города, Останкино - Сокольники - Измайлово, 82.8 км:

82.821-1676

6.3 Маршруты по 10000 порталов

Прямо скажем, компьютер был совершенно не рад обсчитывать такие маршруты. За несколько часов я получил пару десятков вариантов. Самый короткий 868км:

868.081-40

 

  1. Алекс Марртовский

    Отличная работа. Но очевидно, увы, что маршруты, где каждый следующий портал - ближайший к предыдущему - далеко не всегда оптимальны... Так что последнее исследование дает, увы, только достаточно грубую оценку.

    • Эльдар Аблаев

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

      • Viva la Shapers

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

        Тем не менее, Эльдар, не хотите ли оценить масштабы добавлений и пересчитать порталы тем же кодом спустя три года?

  2. Почему бы просто не отдавать запрос к нянтику на получение информации о карте на максимальном приближении вместо извращения с виртуальной машиной?

    Например, в IITC я переназначаю функцию, которая теперь всегда возвращает 17 - максимальное приближение, независимо от зума карты:

    window.getDataZoomForMapZoom = function() {
    return 17;
    }

    • Эльдар Аблаев

      Да, я не разобрался в javascript-коде, хотя и пытался просмотреть "total-conversion-build.user.js". Вот только он состоит из почти 18000 строк и в некоторых местах код идет сплошняком по 500 символов в строке. Функцию попробую, спасибо! Можете заодно написать, на каком уровне наглости забанят учетку? И добавить меня в чат программеров, связанных с Ingress? 🙂

  3. Аноним:)

    А сможете разработать програмку, которая показывает, какие порталы считаются униками,либо же какие ещё можно хакать/захватывать для медальки?)

    • Эльдар Аблаев

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

    • Аноним

      https://ingress-guard.tk/#/downloads - здесь есть плагин в бесплатном доступе, который показывает уникапы.

  4. Можно получить базу данных по порталам отдельного региона?

    • Эльдар Аблаев

      Уверен, что такая база уже есть. Есть сервера, которые отслеживают все события всех агентов на всех порталах (ну хотя бы с целью мониторинга ачивок). И есть программисты, которые занимаются поддержкой этих серверов. Попробуйте выйти на них. А тот способ, который выбрал я, во-первых не автоматизирован, во-вторых, скорее всего очень быстро забанят учетку.

      • Мишаня

        Подскажите пожалуйста можно узнать какие порталы заряжают другие агенты (конкретный агент)?

        • Эльдар Аблаев

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

Написать ответ


[ Ctrl + Enter ]