Радар для покемонов

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


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


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


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


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


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


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


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


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


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


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


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

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


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


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


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


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


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


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


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


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

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


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


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

    HFLabs

    44,00

    Качество и интеграция клиентских данных

    Поделиться публикацией

    Похожие публикации

    Комментарии 47
      +1
      Было бы неплохо, если бы вы положили исходники на гитхаб)
      0
      Сервера покемонов прилегли, к сожалению: http://downdetector.com/status/pokemon-go
      Очень вовремя :–)
        0
        Но публичный вариант со страшным судом босха, который вы указали внутри статьи, вполне работает
          0
          рискну предположить, что страшный суд босха просто очень редко обновляется
            0
            Не угадали :)
            Даже в режиме «сервера прилегли», карта продолжает обновляться со скоростью примерно 20-25 покемонов в секунду.
            Собственно, можете сами убедиться, кликнув на покемона — все актуальные. Просто у нас с автором разные подходы — в их схеме показатель для конечного пользователя бинарен — «обновилось/не обновилось». В нашей — карта просто редеет, в то время там под капотом 100 «обновилось» на 900 фейлов
            Зато у ребят нет проблем с зоной покрытия, а у нас это боль :)
              0
              а почему боль, можете рассказать подробнее?
                0
                Всё просто — нам не хватает аккаунтов, а niantic-у очень не хватает серверов =)
                Мы сейчас покрываем зону 14x14 км. Один радарчик сканит ну пусть 100x100 метров для оптимистичного примера. Получается 78400 сканов на карту.
                В ситуации, когда хочешь realtime, а аккаунт банится при передвижении выше определенной скорости — это становится трудностью.
                А когда сервера niantic-а внезапно начинают уходить на maintenance или просто кормить нам 503 в 80/100 случаях — это становится болью :)
        +4
        У меня не работает. Выдает ошибку:

        Не получилось загрузить ಠ_ಠ
          +1
          Есть более удобная штука на Android, без использования сервера https://github.com/omkarmoghe/Pokemap
            0
            Без использования сервера никак :–) Она тянет покемонов с серверов Niantic (разработчик покемонов) — как и все остальные.
              +1
              Само собой с сервером Niantic, но для поднятия упомянутых сервисов нужны свои сервера, тут же просто приложение, которое делает тоже самое, но в собственном телефоне. Удобно, когда колесишь по городу на влеосипеде, не нужно браузер рефрешить каждый раз, достаточно в Split Screen открыть второе приложение с радаром, у которой авторефреш
                0
                Точно так же работает наш радар: ничего поднимать не надо, открыл браузер и вуаля. Авторефреш есть.
                  +2
                  К сожалению Ваш радар ограничен областью сканирования.
                  0
                  зато тут преимущество что не нужно самому регить липовый аккаунт для запросов. Было бы интересно узнать у автора банят ли эти акки или нет?
              +1
              Уже относительно давно есть ресурс https://pokevision.com/
              Но pokemonMap все же лучше.
                +1

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

                0
                Кому интересно, вот моя нативная карта для iOS
                https://github.com/ruffnecktsk/pokemap_live_ios
                  0
                  Кстати насчет листиков и лапок небольшое уточнение:
                  Лапки сейчас вообще не работают в принципе, их всегда 3 штуки. Максимальный радиус — 200 метров.
                  Листики — spawn-поинты покемонов. В каждом spawn-поинте раз в час появляется покемон.
                    +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) и никаких препятствий для использования.
                    Есть мысли почему так?
                      +3
                      Потому что проще банить волнами, как это было в Ингрессе. А сейчас на волне хайпа никто не будет ботоводов кикать, они создают массовку.
                        0
                        http://www.ownedcore.com/forums/pokemon-go/pokemon-go-hacks-cheats/565188-pokesnipe-ccrts-pokemon-sniping-bot.html
                        0
                        Сервис не работает. Опять сервера или только для России?
                        Ставлю на первое, но вдруг.
                        +2
                        Покемонов больше 150 видов

                        Меньше. 151 в первом поколении, из них 4 региональных и 6 в игре нет (возможно временно), итого 141+ региональные
                          0
                          У меня сейчас открыт 147-й + 2 потенциальные за счет эволюции.
                            0
                            147-й по номеру это не 147 штук. в США 142 можно поймать, если подделать координаты, то ещё 3 доловить. Или у вас есть Ditto, Articuno, Zapdos, Moltres, Mewtwo и Mew, которые эволюционируют из мэджикарпов?
                              0
                              Очевидно, что меня нет этих редких покемонов, но в Pokedex они идут по порядку согласно номеру, и очевидно, что все 147 (а на самом деле уже добавленно 2-е поколение, т.е. 251) я могу словить. В том же твитере переодически появляются посты о том что кто-то видел Mewtwo. Или у вас есть достоверная информация от разработчиков сколько действительно доступно для ловли?
                                0
                                Второе поколение затизерили, но не добавляли. Пресс-релизов от разработчиков на тему доступности покемонов не встречал. В данном случае достаточно зайти на reddit и не обнаружить 6 указанных покемонов в числе пойманных. Пойманные с картинками встречаются повсеместно в виду большого интереса к игре. Да и игроки очень охотно меряются числом пойманных особей. Если бы кто-то поймал Mewtwo, стал бы он молчать?

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

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

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

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

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

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

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

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

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

                                      +1
                                      Поддержу. У нас на pokeswag это тоже постоянная боль. Теперь и у вас, добро пожаловать в клуб :)
                                  0
                                  А как все таки отобразить всех покемонов? Или увеличить область радара? Подскажите пожалуйста.
                                    0
                                    Я поставил 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 мой аккаунт, на котором и запущена карта и так как они из разных стран, то игра банит аккаунт. Но я вижу, что у вас карта без регистрации, да и покевижион тоже. Помогите разобраться, как вы сделали карту для всех и без регистрации или ответьте пожалуйста, в чем могут быть у меня проблемы с картой?
                                      0
                                      вы плохо сморели, на покевижине и тут, исопльзуется много аккаунтов разом. на гитхабе, Настройки -> Пункт 1
                                        0
                                        Спасибо, посмотрю по внимательней

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

                                    Самое читаемое