Когда на создание сервиса остается очень мало времени.
Pokemon Go чем-то напоминает всечеловеческое помешательство. Об игре пишут, о ней снимают репортажи, влоги, создают сообщества, делятся секретами. Наконец, просто играют и ищут редких Покемонов…
Да, с поиском японских зверушек не все так просто: найти действительно редкого покемона — значит хорошо походить ножками.
Пораскинув мозгами, четверто ребят, объединившись в одну команду, решили создать социальную российскую карту покемонов.
Много чашек кофе, сумасшедшие дни и история от создателей карты покемонов PokemonGoMap.ru.
О проекте
Идея проекта проста: пользователи получают возможность устанавливать собственные метки с информацией о местонахождении покестопов, арен и покемонов на карту. У каждой метки имеется рейтинг, который составляют сами пользователи сервиса.
Метки, рейтинг которых ниже определенного уровня, регулярно очищаются. У каждого зарегистрированного участника Pokemon Go Map, в свою очередь, есть внутренний рейтинг, который повышается при выставлении меток, а также при подтверждении выставленных им меток другими пользователями.
На текущий момент, самые активные пользователи карты находятся в Москве, Санкт Петербурге, Краснодаре, Екатеринбурге и Омске, однако мы надеемся, что это не все города, жители которых обладают умением устанавливать игры через APK и готовы гулять днями напролёт, лишь бы поймать очередного Ратата.
Основным отличием сервиса от западных и российских аналогов является то, что Pokemon Go Map не является «читом», в котором представлена заранее собранная информация об игре. Наоборот, проект направлен на поддержание игрового механизма Pokemon Go.
Основные фичи кратко:
Выставление собственных меток с указанием авторства
Актуализация меток на основе репутации
Геймификация (опыт за активность на карте, уровни пользователей)
Кластеризация меток (в обновлении 2.0)
Фильтрация меток (в обновлении 2.0)
Отдельно хочется отметить, что портал PokemonGoMap не нарушает условия пользовательского соглашения Niantic, так как использует только информацию, предоставленную пользователями, и продолжит существовать даже после устранения проблем с открытым API PokemonGo.
Немного о самом процессе разработки
Антон Бондаренко — выпускник МГУ, генеральный директор MalinaLab. В критических ситуациях Backend разработчик.
Леша Марченко – выпускник МГУ, исполнительный директор. В критических ситуациях Backend разработчик.
Даня Горбачев — студент МГУ, креативный центр MalinaLab. Гениальный дизайнер и Frontend разработчик.
Коля Маторин – студент МГУ, душа коллектива. Высококлассный Frontend разработчик.
18:00–21:00 План CoffeeCupCount: 0
Как и в случае с любым другим проектом нашей компании, я и Лёша начали с составления технического задания. Первоначально планировалось запустить портал, в котором бы содержалась вся актуальная информация об игре, однако затем мы отошли от этой идеи в пользу интерактивной карты. Мы посчитали, что было бы круто сделать надстройку над уже существующей игрой, дать игрокам возможность проявлять себя не только внутри Pokemon Go, но и в сопровождающем проекте.
Перед нами стояла задача сделать максимально удобный сервис, который можно было бы использовать одновременно с игрой. Поэтому мы решили создавать веб-платформу, пользоваться которой можно было бы как с мобильного устройства, так и с десктопа.
21:00 — 0:00 ДизайнCoffeeCupCount: 4
Как только ТЗ было готово, Даня приступил к дизайну. Было решено не перегружать проект, дабы не отвлекать игроков от основной функциональности — карты.
Аудиторией PokemonGo Map являются пользователи мобильного приложения, поэтому главной задачей было сделать проект удобным для использования как на мобильных устройствах, так и на десктопе.
00:00 — 11:00 Верстка, BackendCoffeeCupCount: 12
После того, как все макеты были готовы, пришло время верстать. Коля Маторин, профессионал своего дела, принялся курить кастомизацию Яндекс.Карт и разбираться с причудами дизайна от Дани.
Все UI проекта были разработаны собственноручно. Pure jQuery, без использования jQuery UI и готовых элементов управления. Верстка выполнялась с учетом последующих расширений, таких как чат и встроенные гайды.
Поначалу с бэкендом все было просто – Python + Django и авторизация через Вконтакте. Однако, уже через три дня, когда PokemonGo Map стал крупнейшим русскоязычным ресурсом данной тематики, мы поняли, что не обойтись без оптимизации на обоих сторонах: как на фронтенде, так и на бэкенде.
С пользовательской стороны было добавлено кэширование областями и сокращено число запросов к серверу, также мы не забыли про оптимизацию отрисовки (да здравствуют layout-ы).
Мы также решили сделать запросы к базе более простыми и менее объемными. Тут нам на помощь пришла серверная grid-кластеризация. Осталась только одна маленькая проблема – 15 000 маркеров, разбросанных по всему СНГ, которые нужно было объединить в кластеры, причем за приемлемое время.
Мы начали с прямого поиска, но результат был удручающим. Бинарный поиск дал лучшие показатели, однако они нас все еще не устраивали. Спустя пару чашек кофе решение было найдено – интерполяционный поиск по массиву отрезков. Применение данного метода при тестировании позволило нам распределить 1400 меток по 1 000 000 квадратов всего за 76 секунд (с учетом создания объектов в базе).
Последним шагом оптимизации было разделение всей карты мира на квадраты и запуск алгоритма для быстрого вычисления необходимости обработки каждого из квадратов.
11:00 — 13:00 Перерыв на здоровый сонCoffeeCupCount: 24
13:00 — 21:00 СвязываниеCoffeeCupCount: 32
Связать Бэк с Фронтом – дело, как правило, несложное. И этот проект не исключение. По разработанным в процессе написания бэкэнда API мы вскоре получили работающую альфа-версию PokemonGoMap. Может показаться, что получив рабочую альфу, мы могли бы закончить на этом, но не тут то было. Нам предстоял самый важный этап.
21:00 — 9:00 ТестированиеCoffeeCupCount: за гранью добра и здравого смысла
Тестировать проект, который написан за сутки — задача не из легких. Мы были словно пратчеттовская Стража, держались до последнего, менялись друг с другом ради небольших перекуров на сон, но всё же смогли затестить всё в 12 часов.
В заключение
Мы не собираемся останавливаться на достигнутом. Функционал, связанный с выставлением и просмотром меток будет постоянно улучшаться. Однако карта — лишь часть ресурса, посвященного игре, который мы запускаем. Мы планируем внедрить большое количество интересных функций: от общения пользователей в рамках ресурса до расчетов боев и расширенной статистики по встречаемости покемонов.
Вот так можно превратить одни сутки в полноценный проект. Главное — хотеть этого и, конечно же, закупиться бодрящим кофе. Так что, если вам нужны Покемоны — вы знаете, где их искать.
Хочешь получать от нас новости Apple? Да | Нет
В закладки