Как стать автором
Обновить

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

Видео смотреть больно глазам… По реплаю его точно пропалят)
А вообще, конечно блок принятия решений слабый. Где микроконтроль юнитов в атаке, где пилоны на передовой, где разведка, где запирающие форсфилды?? Не понятно, куда тратится такое безумное колличество APM. Просто на перещёлкивание между юнитами?!
китайцы примерно так и играют :)
Корейцы
kekeke
Вы хотели сказать «южные корейцы»)) Китайцы в мировом рейтинге достаточно низко.
Но вообще-то они куда спокойнее играют. У них в среднем всего 150 APM))
На reply прокрутку не видно
Там записываются только команды отдаваемые объектам, то есть по сути отдаваемый на сервер трафик?
И команды, полученные от других игроков. В SC1 по крайней мере было так.
Во втором старике можно в реплае выбрать игрока и камера будет двигаться так же как двигалась у него. Там только не все клики мышкой видно.
Видео занятное, но на второй минуте уже начинает кружиться голова. :)
У меня пошли разноцветные круги в глазах, потом я пустил слюну и заснул, а проснулся вообще в больнице, где оказалось, что я вообще сурок.
это ещё что, у меня от этой фигни брат умер!
Учитывая что автор ставил целью статьи именно показать, какие инструменты можно использовать для написания “базы” бота, а не реализацию самого бота, это довольно хороший результат

Hello word bot :)
dovg: Hello world, грамотей!
А так же Hello Excel и Hello PowerPoint ;)
Анализ информации, поступающий от Direct3D, это конечно хорошо, но абсолютно не работает если производитель будет с этим хоть как-то боротся. Приведу пример — покерные боты, распознающие изображение путем его сравнения с эталонными фрагментами тривиально ломаются, если клиент начинает незаметно с точки зрения человека менять графику — например, случайным образом менять оттенки цветов плюс минус одна градация, сдвигать элементы на один пиксель в случайном направлении итд. Тут та же история — если кто-то начнет активно эксплоитить этот метод то близам достаточно будет добавить код, случайным образом немного меняющий трехмерное представление объектов и карты текстур — незаметное глазу человека но достаточное, чтобы боту стало очень проблемматично различать юниты и элементы интерфейса.
Оттенки машина может различать даже лучше человека. Не обязательно же зашивать оттенок по точному вхождению. Тоже самое касается и положения на экране — вполне можно устроить поиск.
а это — падение производительности.
Я не спорю. Любая логика и усложнения — ведут к падению производительности. Но это только усложнение работы, а не пресечение возможности работать вообще. Согласны?
Там не надо отслеживать ни координаты, ни цвета.
Перехват идет вызовов отрисовки, а не анализ конечной картинки со всеми объектами, вот тут хорошо показан разбор сцены: graphics.stanford.edu/~mdfisher/CaptureA/Capture.html.

Учитывая что наверняка можно провести реверс-инженеринг ресурсов игры и придать каждой текстуре уникальную подпись на основе какого-нибудь параметра наверняка можно обойти подобную защиту. Боту же все равно как это будет выглядеть на экране.
Можно. Но fuzzy matching напрягают уже намного сильнее — это тривиально намного дороже по процессорному времени. Там уже начинаются проблемы с Realtime работой — два кадра в секунду для бота Starcraft будет не фонтан :)
НЛО прилетело и опубликовало эту надпись здесь
А там нельзя будет перехватить изменение этой текстуры? Ведь наверняка команды к изменению текстур пойдут через тот же API, и задача сведется просто к тому, чтобы не потерять связь между изначальной и конечной текстурой, которую пытаются видоизменить.
НЛО прилетело и опубликовало эту надпись здесь
Или вообще берем корреляцию… Только где ресурсов на это взять для реального масштаба времени?
Я не оспариваю падение производительности. Выше писал.
Можно запускать механизмы поиска только тогда, когда произошли изменения (если их можно отследить, конечно), можно кэшировать результаты поиска и использовать их в дальнейшем. Навернуть, в общем, можно довольно много. :) Я же говорю о том, что все эти уловки не делают работу невозможной вообще, а только усложняют ее.
Так и я вам не в укор это написал. И как ниже меня комментируют со стороны движка усложнения тоже упираются в производительность.
Вряд ли движок игры сможет позволить себе менять текстуру каждый раз при выводе на видеокарту. Максимум что они могут себе позволить, это при первом изъятии текстуры в память добавить к ней немного шумов. То есть если написать хороший уловитель этого шума, то он будет работать не все время, а всего лишь при появлении неизвестной текстуры.
фигня все это (сорри), предусмотреть калибровочный режим где бот не играет а «смотрит» и откладывает в памяти характерные черты на будущее несложно

да ну глупости все это, от детура тяжко им спасаться. Помню как-то интересно мне было свой вх длдя кс сорса сделать, начал с мелочей, а получился достаточно мощный чит с возможностью набегу убить тех кто позади и не один античит не спалил (хотя играл недолго, заработало и интерес пропал). Пруф: www.youtube.com/watch?v=al7Xrjz3JXM
Можно было и просто в 4-гейт пуш сыграть.
Что за странное бо через барака и потом цитадель. Выхода в дарков не было.
Странно :D
Бедняга.
Существенной лажей этого алгоритма, является игнорирование миникарты, что существенно увеличило бы производительность в купе с прогнозированием исполнения приказов собственными юнитами, тогда рендерить бы пришлось только зоны активности.
В остальном сама идея хороша как развитие рекогнайз методик.
С чего вы взяли что он ее игнорирует?
Если бы не игнорил меньше дергался бы я думаю, еще по уму надо не только миникарту анализировать, но и у себя хранить данные о юнитах, тогда можно вообше прыгать только когда новый юнит на миникарте появляется или чтоб приказ отдать.
Интересно было бы натравить его на бронзовую лигу и посмотреть выйдет ли он в серебро.
Странно, почему ещё никто не написал комментарий «YOU MUST CONSTRUCT ADDITIONAL PYLONS» :)
Ну вот, теперь Nvidia с Microsoft договорятся, и будут шифровать все DX вызовы.

И Intel c остальными будут не в накладе: и процессору работы прибавится, и вообще повод обновить сокет и всю платформу :)
Вы мне напоминаете одного заказчика, который просил картинки на его сайте от граберов зашитить, причем он очень настаивал, чтоб и принтскрин тоже не работал, не только прямой даунлоад.
Есть такие решения, OmniTrust например. Хотят плагин в браузер. В целом работают в определнных случаях. Например доступ в онлайнаукционы.
Уже жду когда можно будет компонент Decision Making самому написать.
Даешь Google AI challenge на SCII в следующем году!
Так а ждёте чего? Есть какие то препятствия?
Я думаю самым выгодным будет играть в 4 гейт с парой ветвлений — не пропустить фотон раш и не ломиться на форсфилды.
Только с 6 пулом и другими чизами будут проблемы. :)
хм, таким образом можно взять парк машин и запустить целую тестовую бронзовую лигу, в которой боты будут всех рашить. заодно можно в нее пустить пару реальных игроков с целью поиздеваться. можно даже чат эмулировать «lol, 6 pool, u mad?» или «say hello to mum»
По-моему бесполезное видео — ничего не понятно, все скачет и рябит. Лучше бы выложили реплай…
Написал письмо автору. Может поделится.
было бы хорошо не полностью автоматизировать (бот управляет стратегией), а сделать некоторые вещи болле «макро» например (элементы тактики).

Пока приток денег > 300 и денег > 1000 строить рабочих, жилища и армию.

Так можно сократить количество мелких суетных движений.
Вот дали бы доступ к юнитам (и строениям) на уровне Colobot/Ceebot — резко бы повысилась компьютерная грамотность человечества ;-)
Сталкеры (эти юниты стреляющие в конце победившие врага) с блинком (телепортом на короткую дистанцию) являются самым грозным оружием в руках ИИ…
Любое оружие в руках ИИ будет грозным, просто потому что он сможет действовать быстро и эффективно. Предел APM при котором стратегия игры уже не будет улучшаться находиться выше выше 500 это точно.

Человек вряд ли сможет соперничать с ботом.
На самом деле любые юниты с ренжем становятся грозными против юнитов ближнего боя. Больше всего страдают зерги похоже. Это запись бота, который с помощью маринесов без потерь справляется с лингами и банелингами:
www.youtube.com/watch?feature=player_detailpage&v=mrbYd4OFrWE#t=68s

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

Но вот это конечно жесть: For one Marine the Bot needs around 300 APM.
Немного удивляет стратегия, когда он мутой на маринов полетел. Ощущение что зерговский бот послабее. А так прикольное видео)
НЛО прилетело и опубликовало эту надпись здесь
:) По теме комментов много, поэтому займусь оффтопиком. Может кто знает откуда взялась фигурка, которая на первой фотографии в посте? :)
А на сколько легко такой метод обнаруживается системами защиты?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории