[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "create", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-549065259", "adfox_url": "//ads.adfox.ru/228129/getCode?p1=bxeub&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid21=&puid22=&puid31=&puid32=&fmt=1&pr=" } } ]
{ "author_name": "Николай Чумаков", "author_type": "self", "tags": [], "comments": 0, "likes": 2, "favorites": 0, "is_advertisement": false, "section_name": "gamedev", "id": "738" }
Николай Чумаков
280
Gamedev

Особенности карты The Pokemon GO Map: колонка создателей сервиса для поиска покемонов

Генеральный директор студии Malina Lab Антон Бондаренко написал для DTF колонку о том, как он с командой проверенных мастеров создал сервис для поиска покемонов The Pokemon GO Map.

Он рассказал о том, как им удалось стать первым русскоязычным порталом по игре The Pokemon Go, о трудностях разработки пользовательского интерфейса и о планах сотрудничества с создателями игры, студией Niantic.

Поделиться

В избранное

В избранном

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

Практически каждый день в сети появляются статьи о новых картах Покемонов и многие пользователи, благодаря огромному обсуждению вокруг самой игры, лояльно воспринимают такие проекты. Однако нетрудно выяснить, что такие сервисы нарушают пользовательское соглашение Pokémon Go и, по мнению многих игроков, «убивают интерес к игре».

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

Вопросом «Как создать сообщество, которое бы помогало игрокам делиться своими достижениями, но при этом не нарушало правила самой игры?» — мы задались еще до появления первых русскоязычных и иностранных карт. Так появился проект PokemonGoMap — первое русскоязычное сообщество, отдающее право расстановки меток пользователям.

Идея проекта проста: игроки получают возможность устанавливать собственные метки с информацией о местонахождении покестопов, арен и покемонов на карту. У каждой метки имеется рейтинг, который составляют сами пользователи сервиса. Метки, рейтинг которых ниже определенного уровня, регулярно очищаются. У каждого зарегистрированного участника PokemonGoMap, в свою очередь, есть внутренний рейтинг, который повышается при выставлении меток, а также при подтверждении выставленных им меток другими пользователями.

На текущий момент, самые активные пользователи карты находятся в Москве, Санкт Петербурге, Краснодаре, Екатеринбурге и Омске.

Однако мы надеемся, что это не все города, жители которых готовы гулять днями напролёт лишь бы поймать очередного Ратата.

Основным отличием сервиса от западных и российских аналогов является то, что PokemonGoMap, разработанный в компании Malina Lab, не является «читом», в котором представлена заранее собранная информация об игре. Наоборот, сайт направлен на поддержание игрового механизма Pokemon Go.

Основные функции:

● Выставление собственных меток с указанием авторства

● Актуализация меток на основе репутации

● Геймификация (опыт за активность на карте, уровни пользователей)

● Кластеризация меток

● Фильтрация меток

● Фермы покемонов (Обновление 2.2)

● Гнезда покемонов, динамически модерируемые пользователями (В обновлени 3.0)

Отдельно хочется отметить, что портал PokemonGoMap не нарушает условия пользовательского соглашения Niantic, так как использует только информацию, предоставленную пользователями, и продолжит существовать даже после устранения проблем с открытым API Pokémon Go.

Команда:

● Антон Бондаренко — выпускник МГУ, генеральный директор MalinaLab. В критических ситуациях — back-end разработчик.

● Леша Марченко — выпускник МГУ, исполнительный директор. В критических ситуациях — back-end разработчик.

● Даня Горбачев — студент МГУ, креативный центр MalinaLab. Гениальный дизайнер и front-end разработчик.

● Коля Маторин — студент МГУ, душа коллектива. Front-end разработчик.

История создания

В пятницу, 15 Июля, наш креативный директор, Даня Горбачев, вошел в офис с возгласом: «Я поймал Чармандера прямо у нас в холле!». На тот момент мы еще не знали о грандиозном успехе Pokémon Go по всему миру, но после слов Дани решили внимательно изучить феномен.

После небольшого исследования стало понятно, что нужно срочно создавать русскоязычный ресурс, посвященный Pokémon Go.

Как и в случае с любым другим проектом нашей компании, я и Лёша начали с составления технического задания. Первоначально планировалось запустить портал, в котором бы содержалась вся актуальная информация об игре, однако затем мы отошли от этой идеи в пользу интерактивной карты. Мы посчитали, что было бы круто сделать игровую надстройку над уже существующей игрой, дать игрокам возможность проявлять себя не только внутри Pokémon Go, но и в сопровождающем проекте.

Перед нами стояла задача сделать максимально удобный сервис, который можно было бы использовать одновременно с игрой. Поэтому мы решили создавать веб-платформу, пользоваться которой можно было бы как с мобильного устройства, так и с рабочего стола.

Как только техническая часть была готова, Даня приступил к дизайну. Было решено сделать проект ненагруженным с точки зрения дизайна, чтобы не отвлекать игроков от основного функционала — карты.

После того, как все макеты были готовы, пришло время верстать. Коля Маторин, профессионал своего дела, принялся смотреть кастомизацию Яндекс.Карт и разбираться с причудами дизайна от Дани. Все детали пользовательского интерфейса были разработаны собственноручно. Pure jQuery, без использования jQuery UI и готовых элементов управления. Верстка выполнялась с учетом последующих расширений, таких как чат и встроенные руководства. С бэкендом поначалу все было просто — Python+Django, а также авторизация через «ВКонтакте».

Однако уже через три дня, когда PokemonGoMap стал крупнейшим русскоязычным ресурсом данной тематики, мы поняли, что не обойтись без оптимизации на обоих сторонах: как на фронтенде, так и на бэкенде. С пользовательской стороны было добавлено кэширование областями и сокращено число запросов к серверу, также мы не забыли про оптимизацию отрисовки (да здравствуют layout).

Мы также решили сделать запросы к базе более простыми и менее объемными. Тут нам на помощь пришла серверная grid-кластеризация. Осталась только одна маленькая проблема — 20 тысяч маркеров, разбросанных по всему СНГ, которые нужно было объединить в кластеры, причем за приемлемое время. Мы начали с прямого поиска, но результат был удручающим. Бинарный поиск дал лучшие показатели, однако они нас все еще не устраивали.

Спустя пару чашек кофе, решение было найдено — интерполяционный поиск по массиву отрезков. Применение данного метода при тестировании позволило нам распределить 1,4 тысячи меток по миллиону квадратов всего за 76 секунд (с учетом создания объектов в базе).

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

Идея

PokemonGoMap — проект, контент в котором создается исключительно пользователями (активными игроками Pokémon Go). В среду, когда наш проект уже был запущен, мы узнали о появлении открытого кода на портале GitHub, так называемого стороннего API Pokémon Go. Конечно, мы рассматривали возможность использования данного скрипта в нашем проекте, однако, отказались от этой идеи практически сразу.

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

В воскресенье, 31 июля компания Niantic наконец-то опубликовала свою позицию по поводу сервисов, использующих серый API: карта PokéVision прекратила свое существование. В ночь c 4 на 5 июля в разработчики из Niantic изменили API, добавив шифрование к каждому запросу.

В связи с этим, все ресурсы, использовавшие его для предоставления информации в реальном времени, моментально перестали функционировать, оставив пользователей ни с чем.

Наш ресурс стремится к сотрудничеству с разработчиками Pokémon Go. Мы хотим создать активное сообщество игроков по всей России.

Монетизация

PokemonGoMap собирает достаточно большую аудиторию: за две недели существования ресурс посетили более 27 тысяч человек, число просмотров страниц превысило 80 тысяч.

Мы планируем интегрировать в функционал рекламные объявления от компаний, заинтересованных в нашей аудитории. Также, в скором времени, мы запустим линию одежды и сувенирной продукции, эксклюзивно разработанной нашим дизайнером. Без использования атрибутики от Nintendo!

Популярные материалы
Показать еще
{ "is_needs_advanced_access": false }

Комментарии Комм.

0 новых

Популярные

По порядку

Прямой эфир

Узнавайте первым важные новости

Подписаться