Помогите, покемоны


Если вы ни разу не слышали об игре Pokemon Go, можно считать, что вам повезло. Новости о покемонах мелькают в новостных лентах, толпы людей бродят в ночи по кладбищам и воюют за сферы влияния. Только в Москве по данным МТС в Pokemon Go играет 180?000 человек, притом что в России официального запуска еще не было.


Мы в DaData.ru решили посмотреть, чем можем помочь любителям покемонов.


Pokemon Go — игра на основе дополненной реальности, способ размять ноги и весело провести время. Игрок ходит по улицам, телефон вибрирует — и на вывод камеры проецируется покемон. Очень примитивная реализация дополненной реальности, но весело. В покемона нужно кинуть покебол и поймать, и это не всегда просто — сильные покемоны не ловятся, прыгают и всячески сопротивляются.


Пикачу под прицелом


Покемоны появляются случайно в разных местах. Чтобы собрать их много и разных, приходится много ходить. Покемонов больше 150 видов, их можно тренировать, они различаются силой и редкостью. Слабые и популярные покемоны встречаются на каждом шагу, но шанс случайно встретить хотя бы одного редкого покемона стремится к нулю. Все игроки разделены на три фракции. Смысл игры — захватывать тренировочные залы (gyms), получать опыт и внутриигровое золото, повышать уровень, выращивать более крутых покемонов.


Игра еще далека от идеала. Периодически отваливаются сервера, приложение зависает. Но самое печальное, что поиск покемонов абсолютно случаен. В игре есть две иконки, которые должны облегчить поиск — «лапки» и «листики». «Лапки» показывают, какие покемоны находятся рядом с игроком, в радиусе 50–300 метров. А вот «листики», которые должны показывать точное местонахождение выбранного покемона, срабатывают далеко не всегда. В результате бесцельно блуждать можно очень долго, потому что покемоны появляются на 10–15 минут, а после исчезают.


Нашлись умельцы, которые разобрали API и сделали карту со всеми покемонами. Если хочется не просто погулять, а еще и найти крутого покемона — она сильно облегчает жизнь. Собственно, карта делает то, что должны были делать криво работающие «листики». А еще она показывает все покестопы (места, где можно бесплатно получить опыт и полезные вещи) и тренировочные залы (gyms). С картой удобно планировать маршрут и знать, какая фракция какой зал контролирует. Также можно посмотреть, на какие покестопы повесили «приманку» (lure) — игровой предмет, который в течение 30 минут притягивает крутых покемонов — и оказаться рядом, чтобы ловить их.
Все покемоны мира


У карты несколько проблем:


  • Приходится поднимать локальный сервер. Либо использовать публичный вариант, но на нем нет покемонов с окраин, а результат выглядит как «Страшный Суд» Босха.


  • Есть проблемы со вводом адресов. Гугл в целом неплохо справляется с российскими адресами, но иногда неприятно ошибается.


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

В итоге мы решили улучшить карту в преддверии выпуска игры в России. Попробовали учесть все проблемы с определением адресов и удобством использования.


Получился Покемон-радар:


Покемон-радар


  • Автоматически определяет местонахождение (браузерная геолокация).


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


  • Ввод адресов с автокомплитом (через Подсказки) — адаптирован для мобильников и десктопа, выдача релевантна городу пользователя.


  • Показывает покемонов в пешей доступности вокруг заданной точки. Если пользователь двигает экран — показывает покемонов для текущего участка экрана.


  • Показывает не все покестопы (их слишком много, замусоривают карту), а только приманки.


  • Яндекс.Карты вместо гугловых (Google Maps отличный продукт, но в России Яндекс работает немного лучше).

Мы сделали сервис исключительно для развлечения — с ним ловить покемонов интереснее. Надеемся, вам тоже пригодится.


Исходный код выложили на гитхаб.


UPD: Работоспособность радара зависит от доступности серверов покемонов. К сожалению, они часто лежат. Приглашаем всех, кто придумает более эффективный алгоритм работы с API покемонов — форкать и улучшать :–)

Поделиться с друзьями
-->

Комментарии (47)


  1. neyroneyro
    27.07.2016 15:45
    +1

    Было бы неплохо, если бы вы положили исходники на гитхаб)


    1. vasili111
      27.07.2016 16:03

      Поддерживаю. Было бы хорошо если бы разработчики выложили исходники.


    1. algenon
      27.07.2016 16:26
      +10

      Пожалуйста: https://github.com/hflabs/pokemon


  1. algenon
    27.07.2016 15:55

    Сервера покемонов прилегли, к сожалению: http://downdetector.com/status/pokemon-go
    Очень вовремя :–)


    1. Kirch
      27.07.2016 19:33

      Но публичный вариант со страшным судом босха, который вы указали внутри статьи, вполне работает


      1. rmpl
        28.07.2016 00:08

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


        1. sat2707
          28.07.2016 12:49

          Не угадали :)
          Даже в режиме «сервера прилегли», карта продолжает обновляться со скоростью примерно 20-25 покемонов в секунду.
          Собственно, можете сами убедиться, кликнув на покемона — все актуальные. Просто у нас с автором разные подходы — в их схеме показатель для конечного пользователя бинарен — «обновилось/не обновилось». В нашей — карта просто редеет, в то время там под капотом 100 «обновилось» на 900 фейлов
          Зато у ребят нет проблем с зоной покрытия, а у нас это боль :)


          1. rmpl
            28.07.2016 12:54

            а почему боль, можете рассказать подробнее?


            1. sat2707
              28.07.2016 13:19

              Всё просто — нам не хватает аккаунтов, а niantic-у очень не хватает серверов =)
              Мы сейчас покрываем зону 14x14 км. Один радарчик сканит ну пусть 100x100 метров для оптимистичного примера. Получается 78400 сканов на карту.
              В ситуации, когда хочешь realtime, а аккаунт банится при передвижении выше определенной скорости — это становится трудностью.
              А когда сервера niantic-а внезапно начинают уходить на maintenance или просто кормить нам 503 в 80/100 случаях — это становится болью :)


  1. vasili111
    27.07.2016 15:55
    +4

    У меня не работает. Выдает ошибку:

    Не получилось загрузить ?_?


  1. IchigoWalker
    27.07.2016 16:03
    +1

    Есть более удобная штука на Android, без использования сервера https://github.com/omkarmoghe/Pokemap


    1. algenon
      27.07.2016 16:05

      Без использования сервера никак :–) Она тянет покемонов с серверов Niantic (разработчик покемонов) — как и все остальные.


      1. IchigoWalker
        27.07.2016 16:16
        +1

        Само собой с сервером Niantic, но для поднятия упомянутых сервисов нужны свои сервера, тут же просто приложение, которое делает тоже самое, но в собственном телефоне. Удобно, когда колесишь по городу на влеосипеде, не нужно браузер рефрешить каждый раз, достаточно в Split Screen открыть второе приложение с радаром, у которой авторефреш


        1. algenon
          27.07.2016 16:26

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


          1. panaceya
            27.07.2016 20:37
            +2

            К сожалению Ваш радар ограничен областью сканирования.


        1. Tsimur_S
          27.07.2016 17:00

          зато тут преимущество что не нужно самому регить липовый аккаунт для запросов. Было бы интересно узнать у автора банят ли эти акки или нет?


  1. kogot
    27.07.2016 16:29
    +1

    Уже относительно давно есть ресурс https://pokevision.com/
    Но pokemonMap все же лучше.


    1. algenon
      27.07.2016 17:38
      +1

      Он неплох, но посредственно работает с российскими адресами. А мы в Дадате как раз на них специализируемся :–) Ну и плюс подключили Яндекс-карты.


  1. ruffnecktsk
    27.07.2016 16:36

    Кому интересно, вот моя нативная карта для iOS
    https://github.com/ruffnecktsk/pokemap_live_ios


  1. ruffnecktsk
    27.07.2016 16:54

    Кстати насчет листиков и лапок небольшое уточнение:
    Лапки сейчас вообще не работают в принципе, их всегда 3 штуки. Максимальный радиус — 200 метров.
    Листики — spawn-поинты покемонов. В каждом spawn-поинте раз в час появляется покемон.


  1. iROOT
    27.07.2016 18:32
    +2

    А сколько всяких ботов для прокачки написали?
    https://github.com/Spegeli/Pokemon-Go-Rocket-API
    https://github.com/Mila432/Pokemon_Go_API
    https://github.com/PokemonGoF/PokemonGo-Bot
    и т.д.

    Дают софт-бан на время если резко поменять местоположение со скоростью превышающее какое-то определенное значение. В остальном никак не мешают. Уже видно как гимы занимают те кто прокачался таким способом.
    Главное протокол открыт (Protocol Buffers от Google) и никаких препятствий для использования.
    Есть мысли почему так?


    1. nsklizard
      27.07.2016 18:47
      +3

      Потому что проще банить волнами, как это было в Ингрессе. А сейчас на волне хайпа никто не будет ботоводов кикать, они создают массовку.


    1. BalinTomsk
      28.07.2016 17:31

      http://www.ownedcore.com/forums/pokemon-go/pokemon-go-hacks-cheats/565188-pokesnipe-ccrts-pokemon-sniping-bot.html


  1. DartNyan
    27.07.2016 19:29

    Сервис не работает. Опять сервера или только для России?
    Ставлю на первое, но вдруг.


    1. algenon
      27.07.2016 19:58

      Серверам покемонов очень нехорошо: http://downdetector.com/status/pokemon-go
      Они то не отвечают, то врут, что покемонов нет.


  1. Denai
    27.07.2016 20:20
    +2

    Покемонов больше 150 видов

    Меньше. 151 в первом поколении, из них 4 региональных и 6 в игре нет (возможно временно), итого 141+ региональные


    1. kogot
      29.07.2016 10:46

      У меня сейчас открыт 147-й + 2 потенциальные за счет эволюции.


      1. Denai
        29.07.2016 19:56

        147-й по номеру это не 147 штук. в США 142 можно поймать, если подделать координаты, то ещё 3 доловить. Или у вас есть Ditto, Articuno, Zapdos, Moltres, Mewtwo и Mew, которые эволюционируют из мэджикарпов?


        1. kogot
          30.07.2016 01:33

          Очевидно, что меня нет этих редких покемонов, но в Pokedex они идут по порядку согласно номеру, и очевидно, что все 147 (а на самом деле уже добавленно 2-е поколение, т.е. 251) я могу словить. В том же твитере переодически появляются посты о том что кто-то видел Mewtwo. Или у вас есть достоверная информация от разработчиков сколько действительно доступно для ловли?


          1. Denai
            30.07.2016 02:22

            Второе поколение затизерили, но не добавляли. Пресс-релизов от разработчиков на тему доступности покемонов не встречал. В данном случае достаточно зайти на reddit и не обнаружить 6 указанных покемонов в числе пойманных. Пойманные с картинками встречаются повсеместно в виду большого интереса к игре. Да и игроки очень охотно меряются числом пойманных особей. Если бы кто-то поймал Mewtwo, стал бы он молчать?

            Вообще до вашего вопроса и не задумывался о том почему их нет, ведь всё логично. Отсутствие Ditto объясняется его механикой (он трансформируется в других покемонов, если он и будет в игре, то явно станет какой-то пасхалкой), Moltres, Articuno и Zapdos — маскоты трёх команд, легендарные покемоны. Mewtwo и Mew — вошли в первое поколение отдельно, в играх серии тоже появлялись не сразу. Нельзя с уверенностью без официальных данных сказать что их нет в игре, но определённо их никто ещё не поймал, иначе бы из каждого твиттера уже торчали фотографии их счастливых обладателей.


  1. inwardik
    27.07.2016 22:42
    +1

    Спасибо за радар, и картинка повеселила. В оригинальном api покемон на карте всегда ловится телефоном, но пока дохожу до него ловлю еще несколько из этой же зоны, которые не показаны на карте. Интересно, с чем это может быть связано?


  1. lonelysuch
    28.07.2016 01:17
    +1

    На экране мобильного телефона и на десктопе невозможно двигать карту или выбрать другое место на карте, когда вылезает сообщение «А здесь нет покемонов».


    1. algenon
      28.07.2016 12:17

      Спасибо, исправили.


      1. lonelysuch
        28.07.2016 12:20

        До сих пор еще невозможно выбрать другое место.
        В Chrome 51.0.2704.103 m (64-bit) не работает (Не получилось загрузить).
        В мобильном Chrome не работает (Не получилось загрузить).


        1. algenon
          28.07.2016 12:25

          Я писал про ситуацию «нет покемонов». Адрес можно указать через строчку ввода вверху («введите сюда адрес...»). Только сейчас толку все равно не будет, сервера покемонов снова легли.


          1. lonelysuch
            28.07.2016 12:27

            А я не про количество покемонов и их отображение. Я о том, что если выводится кнопка «Обновить» с любым текстом, то невозможно двигать карту.


            1. algenon
              28.07.2016 12:39

              Окей, теперь двигать можно.


              1. lonelysuch
                28.07.2016 12:42

                Спасибо, так намного лучше.


  1. Tekill
    28.07.2016 08:40

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


    1. Rad1calDreamer
      28.07.2016 11:56

      Спасибо, работает.

      у меня в Богохранимой категорически не отказывается работать… может хабраэффект конечно, а может тут все покемоны вымерли


      1. Rad1calDreamer
        28.07.2016 12:04

        отказывается конечно же


      1. algenon
        28.07.2016 12:16

        Покемоны не вымерли :–) Это разработчики так борются с несанкционированным использованием API: возвращают 0 покемонов. Ну а сейчас их сервера снова легли.


        1. sat2707
          28.07.2016 12:43
          +1

          Поддержу. У нас на pokeswag это тоже постоянная боль. Теперь и у вас, добро пожаловать в клуб :)


  1. MediaRise
    29.07.2016 09:43

    А как все таки отобразить всех покемонов? Или увеличить область радара? Подскажите пожалуйста.


  1. Jekins
    29.07.2016 23:31

    Я поставил PoGoMap, запустил сервер, всё работает. Но если несколько человек пытаются пользоваться картой, то карта перестает работать и в консоли переодически выводятся 2 ошибки:
    1) Skipping Pokemon Go login process since already logged in for another 1787.84 seconds
    2) Scan step 4 failed. Response dictionary key error.

    Уже перерыл много сайтов, но не могу найти нормальны ответ, везде говорят поменять радиус и частоту обновления. Я поменял, но ошибки никуда не делись. У меня возникло предположение, что это из-за того, что все пользователи получается используют только 1 мой аккаунт, на котором и запущена карта и так как они из разных стран, то игра банит аккаунт. Но я вижу, что у вас карта без регистрации, да и покевижион тоже. Помогите разобраться, как вы сделали карту для всех и без регистрации или ответьте пожалуйста, в чем могут быть у меня проблемы с картой?


    1. zartarn
      30.07.2016 10:50

      вы плохо сморели, на покевижине и тут, исопльзуется много аккаунтов разом. на гитхабе, Настройки -> Пункт 1


      1. Jekins
        30.07.2016 17:06

        Спасибо, посмотрю по внимательней