Еще один способ автоматизировать/тестировать игру

Game development
У Вас есть знакомый, который постоянно играет в какую-нибудь игру в контакте? Не знаю как Вас, а меня нервирует когда взрослый человек тратит по 12 часов на не очень умную игру. Вот глядя на одного такого знакомого захотелось написать робота, который бы играл вместо него.

Не так давно на Хабре была целая волна статей, посвященных ботам для браузерных игр: [1], [2], [3] и т.д.
Казалось бы все способы уже перебрали, но недавно я натолкнулся еще на один весьма интересный и менее трудоемкий способ.

Кому хочется посмотреть как же написать бота для игры в 30 строчек кода — прошу под кат.


Инструменты

Инструмент, которым будем пользоваться называется Sikuli.
Этот инструмент позволяет автоматизировать такие действия как щелчки, перетаскивания и т.д. с помощью скриншотов. Т.е. в отличие от AutoIt не нужно изобретать алгоритм поиска объекта. Sikuli позаботится об этом. А нам остается заняться изобретением алгоритма.

Алгоритм

Мой выбор пал на игру «Зомби Ферма». Смысл прост: вскапывай, сажай, собирай урожай. Вот только делать это надо много и постоянно. Я не стал сильно усложнять алгоритм и вот что в итоге получилось:

Делать вечно:
1) вскопать 15 грядок
2) засадить 15 грядок
3) собрать 15 плодов


Самым сложным (хотя какая тут к черту сложность!) было купить семена для посадки. В окне выбора семян — куча всего и все очень похожее.


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


Код

А про 30 строчек кода я не соврал (если вычесть пусты строки). Вот они:

Язык плохо поддается подсветке ввиду наличия картинок в коде, поэтому весь код представлен картинкой.
Исходники

Как это работает



P.S.

Сайт проекта Sikuli — sikuli.org
Tags:разработка игртестирование игравтоматизиацияsikuli
Hubs: Game development
+66
17.1k 171
Comments 20

Popular right now

Top of the last 24 hours