История
May 14, 2018

История Ingress, часть 2

Этот пост — перевод. Исходный пост от Fev Games: https://fevgames.net/the-history-of-ingress-part-2/


Добро пожаловать во вторую часть нашей серии постов про историю Ингресса. Если вы ещё не прочитали первую часть, читайте и возвращайтесь. В прошлой части мы остановились на релизе версии 1.20.0, поэтому продолжим с этого места.

В версии 1.20.0 появилась возможность включать/выключать почтовые оповещения. Активным игрокам письма об атаках стали приходить настолько часто, что нормальным делом было получить 50 писем в течение нескольких минут.

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

Бум порталов

В версии 1.21.3 появилось множество новых фич, а именно:

  • появилась возможность добавить портал прямо из приложения;
  • появилась возможность редактировать существующие порталы (изменять имя, местоположение или описание);
  • видео из медиа стало проигрываться внутри игры (до этого открывалось отдельное приложение);
  • управление GPS было передано Google Play Services, что позволило оптимизировать работу с GPS (например, запрашивать данные GPS реже при отсутствии движения).

Эпизод с Zipcar

Одним из первых партнёров Ниантика была компания Zipcar — американская компания, предоставляющая услуги каршеринга. Партнёрство заключалось в том, что номера машин Zipcar стали пасскодами, которые можно было ввести в форму для пасскодов и получить за это предметы в инвентарь.

На тот момент в Ингрессе уже действовало ограничение на 2000 предметов в инвентаре, но пасскоды этому ограничению не подчинялись. К примеру, имея 2002 предмета в инвентаре, можно было ввести пасскод и получить ещё больше предметов (сейчас такое уже не сработает).

В принципе, ничего особенного, но какие-то умники заметили, что номера у Zipcar идут последовательно. Изменив число в номере-пасскоде (например, просто увеличив его на 1), можно было получить ещё один рабочий пасскод, а по нему — ещё предметов. В результате некоторые агенты, использовавшие кучу кодов, имели тысячи щитов в инвентаре.

Пасскоды от Zipcar:

  • 107NY3 – 175NY3 (68 пасскодов)
  • 290TCR – 326TCR (36 пасскодов)
  • ADU3492 – ADU3516 (24 пасскодов)
  • FMN7278 – FMN7600 (321 пасскодов)
  • FYD4500 – FYD4825 (325 пасскодов)
  • FYD4975 – FYD5050 (75 пасскодов)
  • FZG4650 – FZG4970 (320 пасскодов)
  • GAH7940 – GAH8139 (199 пасскодов)
  • HZZ7680 – HZZ7699 (19 пасскодов)
  • 6SNU690 – 6SNU725 (35 пасскодов)
  • 6TEE314 – 6TEE334 (20 пасскодов)

Спасибо Decode Ingress за то, что сохранили эти пасскоды для истории. По понятным причинам они уже не работают, даже и не пытайтесь их вводить.

В то время перерабатывать предметы в XM можно было только по одному (а не группами, как сейчас), поэтому некоторые агенты сражались между собой за слоты порталов с целью вставить как можно больше щитов — настолько их было много. Кроме того, тогда ещё можно было убирать (разрушать) свои собственные моды, поэтому некоторые агенты, вставив щит, тут же его разрушали и вставляли другой. В Ниантике быстро среагировали на это, убрав бонусные AP за установку щитов.

Кубы

В официальном списке изменений новой версии 1.22.0 были указаны только поддержка @пинга агентов и исправление ошибок, но на самом деле там содержался сюрприз: в версии 1.22.0 появились энергетические кубы (Power Cubes), хоть и не для всех.

Те, кому повезло, получили первую, «проволочную» версию кубов (как на картинке выше). Это был очередной элемент, значительно поменявший игру, так как он позволил каждому добавить себе XM в любое время. В скором времени вышла версия 1.23.1 от 9 апреля 2013, где кубы, уже с нормальным дизайном, были доступны всем.

Ещё в этой версии появились новые звуки атаки, новые анимации критического удара бомб и многое другое.

Версия 1.25.2 вышла через месяц и содержала ряд интересных изменений. Официально было заявлено, что изменения только технические, но на деле в игре появилась поддержка вирусов (Джарвиса и Ады), хотя для пользователей их ещё не включили. Также в приложение добавили «Handshake» — систему для получения разных параметров с игровых серверов в момент запуска приложения. Это позволило настраивать детали игровых механик (например, переработки в XM) на сервере без необходимости обновления игры у пользователей.

В версии 1.26.1 появились те самые изменения, к которым подготовились в предыдущей версии. На карточках ключей в инвентаре теперь отображались текущая энергия и принадлежность портала. Но самым интересным было, конечно, появление вирусов. Brandon Badger (разработчик в Ниантике) выложил «утёкшее» видео, которое показывало пример использования Ады.

Примерно в это время сообщества уже начали пробовать ревёрс-инжинирить (разбирать по косточкам) код игры и протокол общения с сервером. Так были найдены намёки на новый предмет: усилитель связи (Link Amplifier или лампа). Появление вирусов и предвкушение ещё одного нового предмета вызвали всеобщее возбуждение.

Уже в районе версии 1.26.x общественное внимание было приковано ко всему тому зоопарку посторонних утилит и приложений, который тогда существовал. Имеет смысл рассмотреть самые популярные из них.

Broot Mod

В середине апреля началась разработка и распространение двух сторонних клиентов. Первым стал Broot Mod, разработанный brut.all, создателем известного инструмента Apktool. Broot был модифицированной сборкой Ингресса для Андроида, в которой было множество отличий от оригинальной:

  • интерфейс для маленьких экранов;
  • отсутствие на главном экране красот, нагружающих телефон: частиц, которые летают вокруг порталов, и XM;
  • наличие полноэкранного режима;
  • убран экран с глобусом, возникающий при загрузке;
  • новый экран с настройками Broot;
  • возможность отображения инвентаря в виде удобной таблицы, на которой наглядно и сразу было видно, сколько чего в инвентаре:

Как вы понимаете, долго эти удобства продолжаться не могли. Уже через два месяца brut.all получил письмо с просьбой прекратить разработку. Он подчинился, так как пользователям Broot разрешили вернуться к использованию обычного приложения, избежав бана.

Разработку Broot mod продолжил o4kapuk, но она закончилась в районе версии 1.65.0 после того, как по пользователям мода несколько раз прошлись с банами. Эти перманентные баны и новые релизы Ингресса сделали разработку неофициального клиента слишком трудоёмкой и невыгодной.

Я написал brut.all письмо с вопросами о проекте, и вот его ответ:

К тому времени я играл в Ингресс уже несколько недель и был одним из самых активных игроков в своём регионе. Мне нравилась игра, но я терпеть не мог официальный клиент. Его интерфейс был ужасен, я бы сказал, сломан, а Ниантику, судя по всему, было наплевать. Они также плевать хотели на старые/слабые телефоны, даже когда имели возможность их поддерживать. Никогда не понимал их мотивацию, но я решил исправить то, в чём они налажали, и поэтому создал свой мод.

С самого начала я хотел, чтобы цели создания мода были совершенно ясны. Он был не для читеров, нарушающих правила и играющих скриптами. Он был создан для исправления технических недоработок, проблем интерфейса и поддержки большего количества устройств и игроков. Я не хотел сделать плохо Ниантику или другим игрокам, испортив игру, — я хотел сделать её лучше. И я надеялся, что Ниантик позволить моду жить, если он не будет давать слишком большие преимущества его пользователям. Но, конечно, я ждал, что однажды мне от них придёт письмо. К сожалению, Ниантику не понравилась моя идея, и они написали мне об этом, поэтому я немедленно остановил разработку. Лично мне не понравилось их решение, но это их игра и их правила. Я перестал играть в Ингресс, поскольку попросту не мог использовать официальный клиент.

Через некоторое время кто-то предположил, что, возможно, их реакция была вызвана тем, что мой мод распространялся в виде бинарника, поэтому никто толком не мог сказать что именно я там поменял (хотя это и можно было посмотреть при наличии соответствующих утилит). Предположение неплохое, ведь Ниантик не хотел бы иметь ответственность за вредоносное ПО в их игре. Кроме того, если бы соблюдение некоторых правил игры не проверялось на сервере, я легко мог бы добавить в мод читерство. Спросить об этом предположении у Ниантика я не мог, поэтому я решил попробовать снова, на этот раз открыв все исходники проекта. К сожалению, Ниантик написали мне снова, поэтому я перестал заниматься этим и больше не начинал. В последующие несколько недель я получил массу писем с просьбами продолжить, но уже в закрытом режиме, тайно. Мой ответ был всегда один: я не буду этого делать. Как вы знаете, дальше проектом занялся Николас.

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

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

Я не играю в Ингресс с тех пор, и я даже не в курсе, исправили Ниантик свой клиент или нет.

brut.all / Ryszard Wiśniewski

Ингресс на iOS

В то время iOS не поддерживался Ингрессом, поэтому alex-alex написал свой клиент для iOS — iOS-Ingress.

У него был довольно интересный интерфейс, который исправлял множество проблем, имевшихся в официальном клиенте на Андроиде. Как и в Broot mod, в этом клиенте легко было увидеть количество предметов без долгой перемотки инвентаря. Следует напомнить, что в официальном клиенте тогда ещё не было группировки предметов: на каждый отдельный предмет отводилось по одной карточке, даже если рядом были точно такие же.

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

На скриншоте можно заметить такие категории предметов как «менее частые», «частые» и «экстра-редкие» («Less Common», «Common», «Extra Rare»). На самом деле в игре есть эти категории, но по факту используются только «очень частые», «редкие» и «очень редкие» (а раньше использовались и просто «частые»).

Я написал alex-alex и задал ему несколько вопросов о проекте. (Кроме iOS-Ingress, он также создал проекты Ingress for Watch и Ingress for Glass.)

— Как обновления Ингресса влияли на разработку iOS-Ingress?

— Ниантик старался защитить своё API и отключить сторонние клиенты, в основном из-за того, что много людей начали делать ботов. Но мы всегда находили выход из ситуации.

— Ниантик/Гугл когда-нибудь присылали вам сообщение с требованием остановить разработку?

— Да, я получил несколько таких сообщений. Но, поскольку проект был с открытыми исходниками, им это особо не помогло. Проблемы появились после того, как я выпустил приложение в AppStore. Правовой отдел Гугла написал официальный запрос в Эппл с требованием убрать приложение из-за нарушения прав на интеллектуальную собственность, и Эппл выполнил их требование.

— Что заставило вас остановить разработку?

— В основном то, что Ниантик начал банить пользователей приложения.

— У тебя много проектов (под iOS Phone, iOS Watch, Google Glass) на тему Ингресса. В чем была мотивация для их разработки?

— Я начал разрабатывать порт Ингресса на iOS просто потому, что Ингресс был только для Андроида, а у меня был только Айфон. Но он стал настолько популярен, что я начал тратить на него всё своё время. Однажды я получил письмо с благодарностями от слепого человека: мой проект позволил ему играть просто потому, что проект был открытый и его легко было модифицировать под требования слепых людей. Клиенты для Google Glass и Apple Watch были просто проектами с хакатона, я никогда не тратил на них много времени.

alex-alex / Alex Studnička

IITC

Мы не можем упомянуть Broot и iOS-Ingress и забыть про IITC. Если кто не в курсе, IITC означает «Ingress Intel Total Conversion». Это модификация с помощью Javascript обычной игровой карты (https://ingress.com/intel), которая работает быстрее и содержит кучу новых фич.

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

Да особо нечего рассказать. Разговор с Ниантиком выглядел как-то так:

— Вы не против IITC?

— Против. (Их ответ был похож на шаблонный.)

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

Уже не вспомню, почему я вообще решил у них спросить, но сейчас это выглядит довольно глупо с моей стороны.

breunigs / Stefan Breunig

IITC всё поменял. Изображения выше показывают ранние его версии. Как уже было сказано, он работал быстрее, чем обычная карта, и содержал разные интересные фичи. Он мог «следить» за игроками по логу их действий (разрушению резонаторов, захвату порталов и так далее) и строить примерный маршрут их перемещений, что помогало находить фермы и видеть агентов на карте. Эта возможность сильно поспособствовала его популярности.

Проект был закрыт, а его репозиторий на Гитхабе — удалён, но его сразу же восстановил у себя jonatkins, который успел скопировать себе оригинальный репозиторий. Он и другие участники поддерживали IITC в актуальном состоянии при обновлениях игры и стандартной карты, а так же добавили множество фич в виде плагинов. К сожалению, в феврале 2016 года стало известно, что Jon Atkins решил свести своё участие в проекте к минимуму и обновлять его только при поломке.

IITC стал базой для многих инструментов внутри фракций. На нём основываются куча приложений и плагинов. Если судить по 44000 плюсов на Google+, можно с уверенностью сказать, что им пользуются много людей.

Утилита, однако, имела некоторые проблемы в процессе разработки. Некоторые плагины были написаны с ошибками, приводящими к тому, что IITC вместо использования уже загруженных данных запрашивал с сервера новые данные. В результате этого некоторые пользователи IITC получили «софт-баны» из-за слишком большого количества запросов на сервер.

На этом мы закончим обсуждение сторонних утилит и приложений, а вместе с ними и вторую часть нашей серии. Часть третья начнётся с версии 1.28.2, в которой появились новые моды.