Если вы ни разу не слышали об игре 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)
algenon
27.07.2016 15:55Сервера покемонов прилегли, к сожалению: http://downdetector.com/status/pokemon-go
Очень вовремя :–)Kirch
27.07.2016 19:33Но публичный вариант со страшным судом босха, который вы указали внутри статьи, вполне работает
rmpl
28.07.2016 00:08рискну предположить, что страшный суд босха просто очень редко обновляется
sat2707
28.07.2016 12:49Не угадали :)
Даже в режиме «сервера прилегли», карта продолжает обновляться со скоростью примерно 20-25 покемонов в секунду.
Собственно, можете сами убедиться, кликнув на покемона — все актуальные. Просто у нас с автором разные подходы — в их схеме показатель для конечного пользователя бинарен — «обновилось/не обновилось». В нашей — карта просто редеет, в то время там под капотом 100 «обновилось» на 900 фейлов
Зато у ребят нет проблем с зоной покрытия, а у нас это боль :)rmpl
28.07.2016 12:54а почему боль, можете рассказать подробнее?
sat2707
28.07.2016 13:19Всё просто — нам не хватает аккаунтов, а niantic-у очень не хватает серверов =)
Мы сейчас покрываем зону 14x14 км. Один радарчик сканит ну пусть 100x100 метров для оптимистичного примера. Получается 78400 сканов на карту.
В ситуации, когда хочешь realtime, а аккаунт банится при передвижении выше определенной скорости — это становится трудностью.
А когда сервера niantic-а внезапно начинают уходить на maintenance или просто кормить нам 503 в 80/100 случаях — это становится болью :)
IchigoWalker
27.07.2016 16:03+1Есть более удобная штука на Android, без использования сервера https://github.com/omkarmoghe/Pokemap
algenon
27.07.2016 16:05Без использования сервера никак :–) Она тянет покемонов с серверов Niantic (разработчик покемонов) — как и все остальные.
IchigoWalker
27.07.2016 16:16+1Само собой с сервером Niantic, но для поднятия упомянутых сервисов нужны свои сервера, тут же просто приложение, которое делает тоже самое, но в собственном телефоне. Удобно, когда колесишь по городу на влеосипеде, не нужно браузер рефрешить каждый раз, достаточно в Split Screen открыть второе приложение с радаром, у которой авторефреш
Tsimur_S
27.07.2016 17:00зато тут преимущество что не нужно самому регить липовый аккаунт для запросов. Было бы интересно узнать у автора банят ли эти акки или нет?
ruffnecktsk
27.07.2016 16:36Кому интересно, вот моя нативная карта для iOS
https://github.com/ruffnecktsk/pokemap_live_ios
ruffnecktsk
27.07.2016 16:54Кстати насчет листиков и лапок небольшое уточнение:
Лапки сейчас вообще не работают в принципе, их всегда 3 штуки. Максимальный радиус — 200 метров.
Листики — spawn-поинты покемонов. В каждом spawn-поинте раз в час появляется покемон.
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) и никаких препятствий для использования.
Есть мысли почему так?nsklizard
27.07.2016 18:47+3Потому что проще банить волнами, как это было в Ингрессе. А сейчас на волне хайпа никто не будет ботоводов кикать, они создают массовку.
BalinTomsk
28.07.2016 17:31http://www.ownedcore.com/forums/pokemon-go/pokemon-go-hacks-cheats/565188-pokesnipe-ccrts-pokemon-sniping-bot.html
DartNyan
27.07.2016 19:29Сервис не работает. Опять сервера или только для России?
Ставлю на первое, но вдруг.algenon
27.07.2016 19:58Серверам покемонов очень нехорошо: http://downdetector.com/status/pokemon-go
Они то не отвечают, то врут, что покемонов нет.
Denai
27.07.2016 20:20+2Покемонов больше 150 видов
Меньше. 151 в первом поколении, из них 4 региональных и 6 в игре нет (возможно временно), итого 141+ региональныеkogot
29.07.2016 10:46У меня сейчас открыт 147-й + 2 потенциальные за счет эволюции.
Denai
29.07.2016 19:56147-й по номеру это не 147 штук. в США 142 можно поймать, если подделать координаты, то ещё 3 доловить. Или у вас есть Ditto, Articuno, Zapdos, Moltres, Mewtwo и Mew, которые эволюционируют из мэджикарпов?
kogot
30.07.2016 01:33Очевидно, что меня нет этих редких покемонов, но в Pokedex они идут по порядку согласно номеру, и очевидно, что все 147 (а на самом деле уже добавленно 2-е поколение, т.е. 251) я могу словить. В том же твитере переодически появляются посты о том что кто-то видел Mewtwo. Или у вас есть достоверная информация от разработчиков сколько действительно доступно для ловли?
Denai
30.07.2016 02:22Второе поколение затизерили, но не добавляли. Пресс-релизов от разработчиков на тему доступности покемонов не встречал. В данном случае достаточно зайти на reddit и не обнаружить 6 указанных покемонов в числе пойманных. Пойманные с картинками встречаются повсеместно в виду большого интереса к игре. Да и игроки очень охотно меряются числом пойманных особей. Если бы кто-то поймал Mewtwo, стал бы он молчать?
Вообще до вашего вопроса и не задумывался о том почему их нет, ведь всё логично. Отсутствие Ditto объясняется его механикой (он трансформируется в других покемонов, если он и будет в игре, то явно станет какой-то пасхалкой), Moltres, Articuno и Zapdos — маскоты трёх команд, легендарные покемоны. Mewtwo и Mew — вошли в первое поколение отдельно, в играх серии тоже появлялись не сразу. Нельзя с уверенностью без официальных данных сказать что их нет в игре, но определённо их никто ещё не поймал, иначе бы из каждого твиттера уже торчали фотографии их счастливых обладателей.
inwardik
27.07.2016 22:42+1Спасибо за радар, и картинка повеселила. В оригинальном api покемон на карте всегда ловится телефоном, но пока дохожу до него ловлю еще несколько из этой же зоны, которые не показаны на карте. Интересно, с чем это может быть связано?
lonelysuch
28.07.2016 01:17+1На экране мобильного телефона и на десктопе невозможно двигать карту или выбрать другое место на карте, когда вылезает сообщение «А здесь нет покемонов».
algenon
28.07.2016 12:17Спасибо, исправили.
lonelysuch
28.07.2016 12:20До сих пор еще невозможно выбрать другое место.
В Chrome 51.0.2704.103 m (64-bit) не работает (Не получилось загрузить).
В мобильном Chrome не работает (Не получилось загрузить).algenon
28.07.2016 12:25Я писал про ситуацию «нет покемонов». Адрес можно указать через строчку ввода вверху («введите сюда адрес...»). Только сейчас толку все равно не будет, сервера покемонов снова легли.
lonelysuch
28.07.2016 12:27А я не про количество покемонов и их отображение. Я о том, что если выводится кнопка «Обновить» с любым текстом, то невозможно двигать карту.
Tekill
28.07.2016 08:40Спасибо, работает.
Интересно, слоупоки в числе достаточно редких покемонов, а рядом с местом по-умолчанию их аж три штуки в данный момент. Неужели рандом такой беспощадный, что выбрал именно это место для базового спавна?Rad1calDreamer
28.07.2016 11:56Спасибо, работает.
у меня в Богохранимой категорически не отказывается работать… может хабраэффект конечно, а может тут все покемоны вымерлиalgenon
28.07.2016 12:16Покемоны не вымерли :–) Это разработчики так борются с несанкционированным использованием API: возвращают 0 покемонов. Ну а сейчас их сервера снова легли.
sat2707
28.07.2016 12:43+1Поддержу. У нас на pokeswag это тоже постоянная боль. Теперь и у вас, добро пожаловать в клуб :)
MediaRise
29.07.2016 09:43А как все таки отобразить всех покемонов? Или увеличить область радара? Подскажите пожалуйста.
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 мой аккаунт, на котором и запущена карта и так как они из разных стран, то игра банит аккаунт. Но я вижу, что у вас карта без регистрации, да и покевижион тоже. Помогите разобраться, как вы сделали карту для всех и без регистрации или ответьте пожалуйста, в чем могут быть у меня проблемы с картой?
neyroneyro
Было бы неплохо, если бы вы положили исходники на гитхаб)
vasili111
Поддерживаю. Было бы хорошо если бы разработчики выложили исходники.
algenon
Пожалуйста: https://github.com/hflabs/pokemon