Введение от переводчика
Перевёл эту историю, так как её посчитали интересной в моей предыдущей статье по поводу взаимоотношений Niantic и разработчиков всякого дополнительного софта.
Эта милая история не претендует на самый великий и профессиональный взлом всех времён и народов, но позволяет окунуться в уютную атмосферу open source сообщества, занятого общим делом. Возможно, кто-то вспомнит свои прошлые дни...
Автор оригинала признаётся, что он не слишком хорошо разбирается в разработке, но это возможно и к лучшему — хорошо передаётся общая атмосфера без лишних технических деталей. Если вас интересуют именно технические детали, то вы можете походить по ссылкам в тексте или просто разобрать получившееся в итоге API. Да, вас может смутить, что в тексте порой говорится то о создании API, то о его взломе. Имеются в виду два разных API — API самой игры и API, которое делают разработчики для управления игрой извне. Придётся различать их по контексту. Да, так же следует учитывать, что обновления писались в спешке и порой усталым и сонным человеком — некоторые формулировки будут звучать странно. Так же прошу прощение за обилие ссылок, часть из которых уже нерабочая. Формат реддита не очень соответствует формату статьи, но мне показалось, что это будет интересно.
Предыстория
API перестало принимать запросы от всех источниках кроме обновлённого официального клиента. Теперь ему требуется «неизвестная 6», которая была и в более ранних версиях API, но не проверялась. На данный момент только официальный клиент может создать корректную «неизвестную 6». Мы не до конца уверены, что дело в «неизвестной 6”, но очень похоже на то — это фактический единственный большой кусок данных, который мы не можем пока воссоздать.
Мы не можем просто так взять и сравнить версии приложения до и после обновления, потому что эта переменная уже была в предыдущих версиях API, но сервер её не проверял.
Само итоговое значение переменной неважно, и простой подбор не поможет — нам нужно не значение, а способ генерации “неизвестной 6”.
Мы пытаемся найти, где именно она генерируется, чтобы воссоздать свою версию и восстановить работу наших API…
Это довольно тяжело, поскольку некоторые фрагменты кода с трудом подвергаются анализу.
История
04/08/2016 — 00:49: Видимо, изменилась логика и протокол.
04/08/2016 — 01:37: Протокол не изменился, новых хешей не появилось. Возможно, теперь запросы подписываются какими-то криптографическими методами, но мы пока не уверены.
04/08/2016 — 02:07: Становится очевидно, что изменение нетривиально, и реверс инжиниринг может занять много времени.
04/08/2016 — 08:08: Все работают над определением “неизвестной 6”. Все известные данные пока собраны тут.
04/08/2016 — 15:06: Мы подтверждаем, что “неизвестная 6” ответственна за произошедшие изменения.
5 August 2016, 14:00 — Прорыв? Разработчики, кажется, нашли, где генерируется “неизвестная 6”. Теперь нам нужно воссоздать процесс и надеяться на то, что всё заработает. И на то, что именно “неизвестная 6” нам всё сломала.
14:30 — Канал в discord ушёл в приватный режим, потому что наш прорыв присваивают себе другие люди. Меня тоже выкинули из discord, так что апдейтов видимо больше не будет.
(16:20) Меня пустили обратно. Мы теперь уверены, что дело именно в “неизвестной 6”. Это славно, иначе вся работа по её воссозданию была бы ненужной. Мы на верном пути.
16:30 — Очень много сложной работы и непонятных слов. Насколько я понял, теперь мы знаем, где создаётся большая часть “неизвестной 6”. Теперь надо понять входные данные для генерации и способы дальнейшего шифрования этой неизвестной. Работы предстоит ещё довольно много…
18:00 — Мы разобрали часть шифрования, и можем теперь частично понять исходные данные. Как только мы разберём всё шифрование, мы сможем повторить его процесс, прогнав через декомпилированный код.
19:30 — Мы ещё на шаг ближе…
20:30 — Прорыв #2: Мы связали вместе два куска кода, отвечающих за генерацию “неизвестной 6”. Мы нашли где вызывается функция шифрования. Как я говорил ранее, теперь у нас есть декомпилированная функция шифрования.
21:15 — Нам осталось сделать две вещи:
Привести декомпилированную версию шифрования в человеческий вид. Это кастомное шифрование, и декомпилированный код занял бы около 200 странц текста… Люди работают над этим — медленно, но верно. Не самая сложная часть работы, но трудоёмкая.
Определить оставшиеся входные данные. Это может быть довольно трудно… Осталось 3-4 поля, и мы радуемся каждому маленькому прорыву.
22:30 — Никаких новостей, кроме того, что „они работают“, но я подумал, что хорошо бы что-то написать про последние сутки.
Безумно круто наблюдать за работой программистов с реддита и их совместными усилиями по взлому “неизвестной 6”. К слову, это та самая неизвестная, на которой “сломались” хакеры Ингресса. Но коммьюнити разработчиков Pokemon Go гораздо больше. Некоторые работают над взломом уже 20 часов из тех 24, что произошли с момента изменения API. /u/keyphact уже не спал 40 часов (чувак, серьёзно — пойди поспи). Люди работают целеустремлённо и без устали. Я чувствую, что мы можем это сделать.
Мы нашли ядро создания “неизвестной 6” за какие-то несколько часов. Функции шифрования были декомпилированы и были найдены места их вызовов. Осталось 10% входных данных и нормальная реализация функций шифрования. Но так близко, но столь далеко. Справимся ли мы?
23:30 — Мы поняли большую часть шифрования. Однако до сих не поняли, как хранятся входные данные (протобуффер), это безумно сложно. Это требуется, чтобы опередить оставшиеся входные данные.
01:30 — У нас есть полностью рабочее шифрование! (хотя мы его так до конца и не осознали!) Это можно считать прорывом #3. Осталось справиться с протобуффером.
Это безумно интересно и познавательно и для меня тоже. Я с трудом понимаю, чем занимаются разработчики. Например, что такое “формат протобуффера”? Мне сказали, что оно где-то между входными данными и шифрованием. Оно берёт входные данные, формирует из них некий пакет и отсылает на шифрование.
Теперь у нас есть шифрование, но мы не можем определить входные данные, потому что мы не знаем, как из них формируется пакет. Так что мы делаем свой формат пакета (протобуффера). Постепенно, шаг за шагом… Надеюсь, когда мы разберёмся с протобуффером, то входные данные прояснятся.
03:30 — Никаких особых новостей. Мы работаем и продвигаемся.
Следует упомянуть, что обеспечить работоспособность сообщества было безумно сложной задачей. Это был кошмар без всякого логичного решения, и у модераторов не было на него никакого “хорошего” ответа.
Начиналось всё легко и просто — открытый канал на discord, где все могли работать вместе над починкой API. Но чуть позже стало ясно, что всё не так легко и просто…
Количество людей на канале росло и росло. Что в свою очередь приводило к огромному количеству спама, вроде “Когда же будет готово API?” или “Что случилось с API?”. Работать стало невозможно, и нам пришлось ограничить права на постинг сообщений в канал.
Что ещё хуже — некоторые представляли нашу работу как свою собственную и давали сообществу ложные обещания относительно того, когда будет готово новое API. А модераторов спамили запросами на право постинга в канал. Мы решили полностью скрыть канал.
Мы пытались создать второй канал, в котором проверять пригодность для общей работы. Но там в итоге начались те же проблемы, что и в первом канале. А люди сердились на модераторов за то, что у них больше не было доступа к материалам первого канала, и им приходилось повторять ту работу, которую мы уже давно завершили.
Сейчас мы опять двигаемся к прозрачности. Мы сделали первый канал снова доступным всем для чтения. Надеюсь, никто не злоупотребит этим снова. Мы так же сделали открытый для всех гитхаб и вики.
Какие ещё выводы можем сделать из этого урока? Да никаких, наверное. Я просто хочу поблагодарить модераторов за безумное количество работы, которое они проделали, чтобы решить эту нерешаемую ситуацию.
А теперь я пойду спать. Мы открыли канал для обновлений API, поскольку сообщения в основном канале несколько осложнены для понимания всякими техническими терминами. Вернусь к вам завтра.
5 August 2016, 13:00 — Вот вам подробное техническое описание нашей текущей проблемы.
13:30 — Никаких особых новостей, мы работаем работу. Есть некоторый прогресс с протобуффером, мы вычленили несколько полей, но осталось пока довольно много непонятных данных. Мы так же разбираем функции шифрования, чтобы полностью осознать, как оно происходит. Реверс инжиниринг это сложная и утомительная работа
Так же я хочу ответить на несколько комментариев. Маленький FAQ:
Q: Я считаю, что я могу помочь, как это сделать?
A: К сожалению, основной канал закрыт для новых разработчиков. Но вы можете помочь в нашем публичном репозитории и делать пулл реквесты.
Q: Разработчики должны попробовать x.
A: Понятия не имею, о чём вы, но они уже наверняка это пробовали. Если вы уверены, что у вас действительно прорывная идея — отпишите её где-нибудь на discord.
15:30 — Никаких особых новостей, всё ещё работаем работу.
У нас появился новый тред на реддите. Там есть больше технических деталей, в которых вы вряд ли разберётесь, если вы не программист. Если вы не видите обновлений, то это означает, что разработчики активно работают. Мы так же подняли твиттер, в котором всё несколько более понятно — я буду писать туда при каждом обновлении, как только мне дадут туда доступ.
Мы так же сделали инвайты на discord постоянными, их срок жизни больше не должен истекать, *скрестил пальцы*.
Мы хотим держать вас в курсе и избежать появления фейковых твиттер аккаунтов.
Я достиг лимита по длине текста. Дальше обновления будут тут.
5 August 2016, 16:00 — мы определили ещё одно поле входных данных! Круто видеть наконец какой-то прогресс. Не надейтесь на решение вот прямо сейчас, у нас осталось ещё одно поле, но мы над ним уже работаем.
17:00 — Мы проверили поле, которое я упоминал ранее — да, всё отлично! Настроение у всех отличное, мы продвигаемся.
18:00 — Думаем, что последнее поле как-то связано с тем полем, которое мы только что взломали. Надеюсь, это как-то поможет.
18:30 — Мы хотим ещё раз повторить, что сообщество взлома API не занимается поддержкой ботов. Мы просто ломаем API. Так что хотим подтвердить, что Niantic может проследить любые MITM приложения, например, те, которые модифицируют броски покеболлов чтобы они всегда были точными. Если вы используете такое приложение, Niantic об этом скорее всего уже знает.
Мы не знаем, будут ли вас за это банить, мы просто удостоверились в том, что Niantic может (теоретически) это определять. Но это нас не заботит, мы занимаемся взломом API.
20:00 — Никаких особых новостей на фронте разработки. Всё ещё работаем над оставшимися входными данными.
Мы приспосабливаемся к множеству каналов, через которые общаемся с вами. У нас есть Discord, Twitter, Reddit, этот пост и гитхаб репозитории. Они просто разрываются от сообщений. Однако, внутренняя коммуникация у нас налажена гораздо лучше. Настройка и поддержка взаимодействия порой долга и трудоёмка, но это увлекательно. Приятно знать, что разработчики могут спокойно заниматься своим делом, взламывая API.
23:30 — Я вернулся и жду обновлений, чтобы перевести их с программистского на человеческий. Мы ушли уже далеко, но до конечного пункта назначения ещё дальше.
00:45 — Прогресс, сделанный за последние часы, можно назвать прорывом #4.
Мы раскрыли ещё 3 входных поля. Одно из полей является шифрованной (вернее, хэшированной) версией тикета авторизации, в комбинации с GPS положением получается второе поле. Третье тоже как-то связано с тикетом авторизации.
“Комбинация” это сильное упрощение того, что там на самом деле. Реальная сложность работы программистов сильно превыше моего уровня понимания.
Сейчас мы работаем над оставшимся полем. Или полями.
GMT 03:30 — Мы особо ничего ни писали, так как прогресса довольно мало.
Мы уже 12 часов пытаемся взломать одно из полей. Мы знаем больше, чем когда начинали, но прорыва пока не было.
Мы знаем, что поле не комбинируется с токеном авторизации, однако зависит от сессии (возможно, не напрямую). Мы так же знаем его длину (16 байт). Мы работаем над уточнением информации.
Прямо сейчас большинство разработчиков всё же ушли спать. Надо сказать, это заслуженный отдых. Пойду и я посплю.
6 august 2016, 13:00 — Так, теперь это будут чисто мои комментарии. Это единственный настоящий источник информации, остальные это подделки. Теперь я буду говорить Я про себя и ОНИ про разработчиков. Это решение было принято, чтобы убрать лишнее давление на разработчиков.
Пока я спал, ничего особо не произошло, возможно потому, что разработчики тоже спали. Поле, которое доставило нам столько геморроя, заслуживает собственного имени, теперь это будет “неизвестная 22”. Дополнительную сложность доставляет то, что оно привязано к сессии, и данные собирать довольно сложно. Мы разбираем это поле и ещё одно.
14:30 — Никаких новостей, просто хотел ответить на вопрос “как же до сих пор ничего не получилось? Вы же говорили, что осталось 3-4 поля, а взломали уже гораздо больше!”
На самом деле, эти 3-4 поля оказались комбинацией из множества других полей, которые тоже нужно взломать. Нельзя ответить на вопрос, сколько же полей осталось. Мы не хотим создавать ложных ожиданий. Да и не знаем.
17:00 — Прорыв #5: Разработчики выяснили, что “неизвестная 22” не нужна. Один из них ответил на это ожидаемым “Да твою ж мать!”. Сейчас разработчики пытаются собрать демо приложение для проверки этой гипотезы. Они очень взволнованы и молятся.
Надо заметить, что даже если вызов API будет успешен, это всего лишь прототип, а не исправление API. Разработчики забили на довольно много полей — например, на поле, которое передаётся только с Android устройств. Чтобы его обойти, разработчики эмулируют использование iOS. Нужно сделать ещё много, чтобы это не работало так стрёмно.
17:30 — Первые версии прототипа не работают.
18:00 — Никаких новостей, я просто хотел рассказать, почему “неизвестная 22” оказалась таким геморроем — у нас появилась рабочая теория по этому поводу. “Неизвестная 22” это случайная переменная, генерирующаяся при инициализации приложения и привязываемая потом к сессии.
Разработчики тщательно искали всё, что могло бы повлиять на “неизвестную 22”, до тех пор, пока до них постепенно не дошло, что у неё нет входных параметров. Это просто случайная величина. Я попробую объяснить, почему это было так сложно определить.
Пример из реального мира: Представьте, что мы хотим определить температуру в Нью Йорке. Есть огромное количество значений, которые с ней коррелируют. Например, продажи мороженого. Когда продажи повышаются, температура растёт. Однако, вычислять температуру на основании объёмов продажи мороженого бесполезно. Корреляция не означает причинно-следственной связи. Учитывайте это при чтении про “неизвестную 22”.
Сначала разработчики пытались менять токен автризации, и каждый раз, когда они это делали, “Неизвестная 22” так же менялась! Так что они решили проверить, что авторизация влияет на “Неизвестную 22”. Для этого им требовались данные.
Сбор этих данных занял много времени, поскольку им приходилось авторизовываться и выходить обратно. Так же на “неизвестную 22” могло влиять много других полей, включая, например, SessionID, Auth_token, Auth_ticket. Они пытались понять зависимости от каждой из них, до тех пор, пока до кого-то не дошло: у “неизвестной 22” нет входных параметров.
“Неизвестная 22” генерируется случайно каждый раз при старте приложения.
Так что Niantic никоим образом не может проверить, какое значение там “должно быть” — ведь оно случайно! Так что туда можно просто пихать всё что угодно. Это пока что теория, но все разработчики придерживаются её.
18:30 — Прорыв #6. Кажется, у нас первый успешный вызов API! Ждите обновлений, подтверждение будет в течении часа.
18:35 — Работает! Поверьте, у меня это вызывает столько же волнения, сколько у вас.
19:00 — Публичный чат в discord пока пуст. Всё ещё ждём обновления от разработчиков. Вы тоже обновляете чат, чтобы так же увидеть ничего?
20:00 — Уже довольно долго не было никакой информации. Однако, они говорят, что работают над реализацией- так что видимо больше ломать нечего. Следующий апдейт должен быть большим, оставайтесь с нами…
20:30 — Они убрали публичный гитхаб. Наверное, куда-то переезжают. Видимо, работа идёт. Обновление: репозиторий закрыт по всяким там причинам копирайта.
22:00 — Уже начинаю сомневаться, но всё ещё верю, что они смогли тогда сделать успешный вызов API. Хотя видимо, они думают, когда, как и что им публиковать. Нелёгкая работа, учитывая то, что им закрыли гитхаб.
С самого начала все знали, что у этой работы 2 этапа. Сперва реверс инжиниринг, затем создание нового API. Успешный тестовый вызов API важен, поскольку означает, что работа где-то на середине.
Однако, это не означает, что реверс инжиниринг закончен. Некоторые обойдёнными поля не были необходимыми, но они могут таки захотеть их взломать.
Я буду выглядеть идиотом, если окажется, что у них не вышел вызов API, но я готов смириться с этой возможностью.
Дошёл до лимита количества знаков, продолжу тут.
Здесь я так же буду писать свои собственные мыли, как и в предыдущем комментарии. Я не продвинутый программист, но я был с группой “неизвестной 6” с самого начала.
6 august 2016, 23:00 — Небольшое обновление. Они ищут, как обойти копирайт, чтобы их материалы опять не снесли. Так же они пишут, что работают над реализацией- что значит, что они таки сделали успешный API запрос и уже занимаются рабочей версией API.
00:00 — Они говорят, что остался “последний рывок”, будем надеяться, что это означает что-то хорошее.
Их работа затрудняется диким спамом с запросом прав и обновлений. Пожалуйста, просто дайте им кодить! Быстрее они работать не станут, и поверьте, вы сможете прожить ещё один день без API.
Так же некоторые обвиняют разработчиков, в том, что они делают это ради собственной выгоды. Это неправда. Я знаю многих из этих ребят, и они делают это просто ради фана, ради челенджа. Они не собираются никому продавать API.
Так же они говорят “То, что некий платный сервис говорит, что у него есть исправление API, не говорит о том, что мы им его продали.”
00:30 — Просто хотел сказать — я ненавижу ботов.
00:45 — Они только что подтвердили, что API работает (НЕ ПОЛНОСТЬЮ). Но они вообще писали не об этом:
Для всех тех, кто распускает слухи о том, что мы сначала запустили своего бота.
Взволнованный нашим успехом член команды использовал наше ещё не полностью готовое API в своём боте и запостил скриншот. А некоторые другие члены команды так же добавили API в проекты не связанные с ботами (например, pgoapi и RocketAPI).
В конце концов, как только мы закончим, у всех будет доступ к завершённой версии одновременно.
1:15 — Готово, API выпущено!
Победа. Разработчики сломали API за 3 дня и 5 часов. Достойное достижение.
1:30 — Это API легко отслеживается, и Niaintic может определить, что вы используете не официальный клиент. Разработчиков это вполне устраивает, и не стоит катить на них бочку.
Например, не учитывается высота над уровнем моря. Так же все запросы якобы идут с IOS устройства, что крайне подозрительно, поскольку с очевидностью оно Android… Работы ещё много, но мы получили рабочее API и с этим наше участие в проекте завершено.
1:45 — Пойду-ка я спать. В последние ночи я спал совсем мало. Хочу сказать огромное спасибо всем разработчикам, модераторам и всем остальным, кто принимал участие. И тем, кто терпеливо ждал решения проблемы.
Ваша поддержка была удивительна. Неделю назад я не мог и представить, что буду полноценным менеджером сообщества хакеров Pokemon Go.
Всем спасибо,
/u/DutchDefender
От переводчика
Как вы понимаете, история не окончена, история только начинается. Прислушается ли Niantic к просьбам о улучшениях приложения? Или попробует снова защититься? Хватит ли у сообщества сил, желания и навыков взломать новые способы защиты? Узнаем в скором времени.
Комментарии (36)
gsaw
18.08.2016 14:49+2Они говорят, что осталась “последняя нога”, будем надеяться, что это означает что-то хорошее.
наверное имеется ввиду «final leg». Нужно ли переводить идиоматические выражения напрямую? Мне эта «последняя нога» мозг поломала. Понятно, что это означает, что последний в команде вот вот пересечет финишную черту, закончит работу над свой частью. В данном случае мне кажется проще было оставить английский вариант, что бы не исказить смысл предложения.jehy
18.08.2016 15:05Да, я безусловно неправ. В оригинале там было
They are saying they're working on the «final leg», lets hope that means something good.
Меня слишком развеселил вариант с дословным переводом, и я решил оставить дословно. Но сейчас исправил, чтобы не ломать мозг другим читателям.
mort1s
18.08.2016 15:00Ну теперь то все кто юзал этот апи и предыдущий получают письма счастья на свои аккаунты, так же обстоит дело с теми кто использовал эмуляторы типа Nox.
VD42
18.08.2016 15:03+1Уже несколько дней как пользователи, которые использовали ботов, приложения для подмены координат и т.п., получают сообщение «Failed to get game data from server.» при загрузке игры, которое не пропадает со временем и очень похоже на постоянную блокировку, а сегодня началась рассылка писем о закрытии аккаунтов, так что механизм обнаружения читеров и применения к ним адекватных санкций наконец-то запущен.
andrrrrr
19.08.2016 12:12вся эта борьба с читерством в виде полного удаления(блокировки) аккаунтов — это такой процесс самовыпиливания покемонов от Niantic.
есть существенная куча народа которые по разным причинам не будут играть с реальным GPS и реальными координатами, и если убрать все возможности читерить то просто не будут играть в покемонов, а если еще и заблокировать прокаченный аккаунт, то будут отзываться негативно о покемонах и Niantic вообще.
хотя с другой стороны читеры отпугивают реальных игроков.
тут нужно как то балансировать. потому что и обычные игроки и читеры, это то что приносит популярность и в итоге прибыль Niantic.
например можно делать откат в прокачке если есть явное читерство,
или отделять, например на другие сервера(временно, пока реальные игроки не достигнут того же развития)
ведь само по себе читерство не вредно для игры, а вредно существенное опережение в развитии обычных игроков, у которых от такого огромного перевеса теряется интерес к игре.
в общем для игры и Niantic полезны все, и читеры и не читеры, и жестко бороться со своими игроками это дурость, ценить нужно всех.VD42
19.08.2016 13:07Кажется, что сейчас такой баланс и сложился: честные игроки рады значительно уменьшившемуся количеству читеров, читеры подбирают ботов/приложения для подмены координат и их настройки, чтобы избежать блокировки, авторы этих ботов и приложений пытаются внедрить более продвинутые алгоритмы для этой же цели, а Niantic продолжает, надеюсь, улучшать свои алгоритмы по отлову читеров. Посмотрим, что будет дальше.
Так как сейчас взаимодействие между игроками заключается только в захвате джимов, то существенное опережение в развитии влияет только на это, но в планах Niantic, как я полагаю, ввести, к примеру, обмен покемонами между игроками: вот здесь читер, который «слетал» в Сидней, набрал там Кангасханов, а теперь продаёт в Москве за монеты по минимальной цене, может сильно подпортить игру честным игрокам. Но да, это снова палка о двух концах: кто-то будет рад скупить за бесценок покемонов для наполнения своего покедекса.
sksensei
19.08.2016 17:31есть существенная куча народа которые по разным причинам не будут играть с реальным GPS и реальными координатами
Назовите, пожалуйста, хотя бы три такие причины. Весомые причины.andrrrrr
20.08.2016 15:42Весомые причины у всех разные, для тебе это не весомые, для того кто не ходит — весомы.
ты мог бы и сам догадаться. ну вот например, хотя думаю может еще какие есть.
1. просто не хочет чтобы знали где человек находиться.(по разным причинам)
2. не общительный, не пересекаться с людьми.
3. нет ног.
4. есть ноги, но плохо ходит.
5. нет возможности ходить куда то, например ребёнок маленький, или работа от заката до рассвета.
6. нет андроида или айфона. или есть но без gps модуля.
и да, хорошо быть богатым и здоровы, и плохо бедным и больным.sksensei
20.08.2016 22:39Единственный нормальной аргумент — инвалидность. «Необщительность»? Никто не заставляет общаться с другими игроками, тем более, что взаимодействия между игроками сейчас в игре по сути и нет. Суть игры — перемещаться в реальном мире, геймплейно она примитивна до неприличия. Ботоводы и эмулятнрщики убивают суть игры. «Маленький ребёнок» — это насколько, 5 лет? Рейтинг игры 9+. Работа? Я после работы проходил по стопам и залам возле метро, например, и было очень неприятно отойдя на 100 метров от захваченного зала видеть там бота вражеской фракции, хотя рядом со стопом не было людей.
andrrrrr
21.08.2016 00:44так бы и говорил, весомые для тебя лично! причины.
как и ожидалось, на мнения и возможности остальных людей тебе насрать.
«Маленький ребёнок» это 0 лет. и нужно с ним сидеть постоянно, а не шататься по всему городу. хотя это конечно не исключает гуляние с коляской рядом с домом.jehy
21.08.2016 07:58С дитём полутора лет по моему опыту вполне можно активно играть во время гуляния. А вот вместо этого играть дома с эмуляцией GPS — это совсем странно.
Sunny-s
19.08.2016 20:41игроки в ингресс давно прочувствовали на себе прелести жесткого банхаммера ниантиков. Поверьте, у честных игроков это вызывает только положительные эмоции. Сдержанное удивление вызывало лишь то, что этот алгоритм не сразу впилили в ПоГо.
Другой вопрос, что в покемонах нет даже интела, и вообще игра намного беднее в средствах разведки и коммуникации, что пытались компенсировать всем этим хакерством в том числе. Что ж, теперь все зависит от быстроты разработки. Но на мой взгляд, это все от неверного понимания игры в принципе. ПоГо — казуалка для возраста 12-18, не претендует ни на какую стратегию, и попытка ее привнести внешними средствами не найдет понимания у ниа…jehy
19.08.2016 20:48Насчёт положительных эмоций верю — сам радуюсь!
А насчёт казуальности — сам Niantic вводит в заблуждение. Если это казуалка, зачем там столько механики с видами, типами атак, IV и так далее? Вообще очень странное решение. Есть механика есть, дайте средства работы с ней. Или не делайте сложной механики вообще…
kranky
18.08.2016 16:11+5Эх, столько трудов и переживаний, а всё только ради того, чтобы портить игру людям, которые бы хотели просто честно наслаждаться этой игрой.
PS. Я в своё время написал неплохого бота для Pokemon World Online, который так и не научились идентифицировать очень долгое время, хоть тогда разработчики сильно боролись с ботами. Но потом таки понял свою ошибку, когда увидел массу жалоб на форуме, что ботоводы рушат игровую экономику и баланс, веселья в игре становится гораздо меньше, и что нормальные игроки уходят из-за этого (хотя сам я использовал своего бота только чтобы не тратить время на гринд редких особей). В результате удалил его ото всюду, откуда смог и слил администрации информацию, как детектить его.
Больше такими глупостями не занимался.jehy
18.08.2016 16:22Таки ребята специально не убирали флаги и прочие неровности, которые позволяют идентифицировать бота. И делали это не для создания ботов, а ради спортивного интереса.
kranky
18.08.2016 16:27Можно делать с любыми намерениями, даже благими, чтобы позволить играть с девайсов, где нет официального клиента, но нужно понимать, что если выложить это дело в свободный доступ, то всегда найдутся люди, готовые применить это во зло всем остальным.
AMDmi3
18.08.2016 16:59+1А по мне так игре, которую так просто разрушить ботами туда и дорога. Значит всё что в ней есть — однотипные элементарные действия легко решающиеся машиной.
kranky
18.08.2016 17:10+1Насколько я понимаю, в Покемон Го речь о «разрушении» не идёт, так как всё что могут ботоводы — захватывать стадионы, а больше никаких других взаимодействий между игроками там пока нет.
Ну и так, чисто ради любопытства, можно пример хорошей игры, которую невозможно испортить ботами?jehy
18.08.2016 17:20Собственно захвата стадионов вполне хватает, чтобы убить интерес у тех игроков, которые играют для захвата джимов. Мотивация падает в ноль, когда видишь пачками джимы, на которых стоят игроки с уровнями, которые никак нельзя было успеть взять на текущий момент.
eMarchenko
18.08.2016 19:56+1Starcraft II?
Fearz
19.08.2016 10:22А почему старкрафт невозможно испортить ботами? Думаете будет интересно играть против идеального ИИ?
TimsTims
18.08.2016 22:52+2Столько потратили времени ради *взлома* игры… интересно, вот вроде люди умные, с образованием. Наверняка где-то работают. Но судя по тому, что 2 суток не отрывались от компа, значит либо брали выходной, либо все-же не работают…
jehy
19.08.2016 10:27Таки студенты же по большей части. А я им завидую, у самого сейчас на такое времени нет. Но это безумно весело и познавательно.
Но вообще надо сказать, это только у нас есть парадигма того, что взрослые дядьки не тратят время на всякую фигню. У них взрослые дядьки и инди игры пишут, и роботов по гаражам собирают, и в ролевые игры играют. А у нас это прям срамота.TimsTims
19.08.2016 17:34Да нет, я бы тоже был не против поковыряться, но не 2 суток, т.к. мне еще на работу надо ходить, и семья есть.
jehy
19.08.2016 17:47Так тем и волшебна работа большим сообществом, что ты можешь выделить хотя бы немного времени, разобрать какой-то кусок и передать эстафетную палочку дальше.
qwertyqwerty
19.08.2016 22:05+1Работать можно дома и на себя.
qw1
21.08.2016 14:23+1Как вариант — работают не винтиком в конвеере, где надо кровь из носу, но закрыть 500 тикетов в день, а на спокойной должности, где дают много времени посидеть/подумать.
Тогда пришёл на работу — ломаешь покемонов. Выполнил свои неотложные дела (провести совещание, прочитать лекцию) — ломаешь покемонов дальше. Рабочий день закончился, пришёл домой — продолжил.
spc
Кстати, всегда интересовало, почему многие причастные считают API среднего рода?
gsaw
Потому, что от слова «месиво».
lo0p3r
Потому что с аббревиатурами не всё так однозначно:
http://rus.stackexchange.com/questions/38807
http://www.mn.ru/society/edu/89333
spc
Нет-нет, это я знаю. Мне интересно, откуда там вообще пошел средний род, который с формальной точки зрения с этой аббревиатурой вообще-то и рядом не валялся. Или это загадка вроде тех, почему особенно выдающиеся компьютерные мамонты до сих пор называют Линукс Люниксом?
jehy
НЛО прилетело и опубликовало эту запись здесь.