PDA

Просмотр полной версии : Google AI Challenge Ants


xkor
21.10.2011, 21:57
Вчера началось интересное соревнование по программированию - AI Challenge, в этом году написанным игроками ботам предстоит играть в Ants.
Участникам соревнования предстоит реализовать алгоритм, который будет руководить колонией муравьев. На симметричной карте, состоящей из земли и воды (препятствия), каждому боту будут выделены один или несколько муравейников — места, в которых рождаются новые муравьи. Целью игры является захват и уничтожение муравейников противников при этом сохранение и защита своих. За уничтожение чужих муравейников начисляются очки, а за сдачу своего очки вычитаются.

Сайт соревнования http://aichallenge.org

Перевод на русский правил и спецификации игры:
http://habrahabr.ru/blogs/sport_programming/130979/
Хорошее описание игры:
http://habrahabr.ru/blogs/sport_programming/131262/

На русском много чего полезного можно почитать тут:
http://habrahabr.ru/blogs/sport_programming/130457/
http://habrahabr.ru/blogs/sport_programming/130946/
http://habrahabr.ru/blogs/sport_programming/130722/

ЗЫ ну и как же не похвастаться своим ботом:
http://ai-contest.com/profile.php?user=1234

SeregaZ
22.10.2011, 01:20
не провоцируй... а то придет мой злой-серый-гений и сотрет твою колонию в порошок :))))))
открыл главную, тут синим кранты... даже не надо быть специалистом...

тут другое интересно. для чего, или для кого гугл решила разработать идеальный алгоритм, подключив глобальный разум, в виде пары сотен тысяч пользователей? в сравнении с мурашами, на ум приходит только AI для наножучков каких-то... и декабрь 2012 наступает... как бы не выпустили джина из бутылки :) и будет такая, зеленая зараза жрать эйфелеву башню как в Бросок Кобры.

вот тебе наводка от злого гения:
просмотр сражения навел на мыслишку. 2 мураша круче чем один. следовательно сделай пати мурашей. чтобы двигались в одном направлении и попарно. ведущий-ведомый.
при рождении мураш изначально ищет партнера. когда находит - происходит проверка "а свободен ли встречный муравейка" - если муравей свободен, то происходит вторая проверка "дата рождения" и сравнение. если наш новорожденный встретил уже пожилого мураша, то он идет к нему "в ученики", в ведомые. если же наш муравейка встретил еще моложе себя, то соответственно он становится ведущим, а тот все время следует за первым.

Добавлено через 4 минуты
дальше - что-то я там заметил типа "узловых точек"? при атаке которых - на экране кружком еще помечается. видимо важные точки? нужна охрана :) которая бы курсировала кругами вокруг нее.

xkor
22.10.2011, 02:13
дальше - что-то я там заметил типа "узловых точек"? при атаке которых - на экране кружком еще помечается. видимо важные точки? нужна охрана которая бы курсировала кругами вокруг нее.это муравейники, из них новые муравьи появляются когдаих собраться еду сжираеют, ну и очки даются за закрытие этих точек респа врага)

SeregaZ
22.10.2011, 02:30
а информация о карте там собирается в кучу? есть какая-то глобальная переменная\переменные - я имею ввиду разрешено ли правилами каждому муравейке что-то писать в базу, и соответственно читать из нее. или там каждый муравейка по сути независим и у каждого свой мозг?
в смысле в начале карта неизвестна. но со временем мураши, натыкаясь на стены, вырисовывают, сообща, карту местности, и дальше уже бегают не натыкаясь.

xkor
22.10.2011, 02:37
или там каждый муравейка по сути независим и у каждого свой мозг? один бот управляет командой моравёв и соответственно знает всё о каждом своём подопечном

SeregaZ
22.10.2011, 03:05
хы... я бы поучаствовал :)

MyGarant.net
22.10.2011, 03:29
Есть теле-программа "Битва экстрасенсов"

Теперь появится "Битва ботоводов"

Veniamin
22.10.2011, 06:09
xkor Тащи мы за тебя!

Yegor
22.10.2011, 09:23
xkor, сколько времени ушло на реализацию алгоритма? Долго эксперементировал пока остановился на чем то определенном?

Победителя приглашает на работу Google? ;)

xkor
22.10.2011, 13:31
Yegor, ну я когда шло бета тестирование посмотрел как играют лидеры, сформировал для себя 4-5 общих ситуаций в которых может оказаться каждый муравей и как он себя в них должен вести примерно, ну и за две недельки когда было свободное время накидал более мение удовлетворяющий своим прикидкам алгоритм, правда в бете очки начисляли за убийство вражеских муравьёв и за пожирание еды так что когда сделали новые правила пришлось немного пересмотреть приоритеты.
В общих словах у меня алгоритм такой сейчас, идёт цикл по всем муравьям:
если в зоне видимости муравья есть вражеский муравейник он мчится туда сломя голову
иначе если поблизости еда он мчится к ней
иначе если поблизости враг держимся от него на безопасном расстоянии
иначе если поблизости есть свои муравьи пытаемся от них отойти подальше дабы охватить побольше территории
иначе двигаемся в случайном направлении

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

SeregaZ
22.10.2011, 13:50
пока спал мне в голову пришла идея. с мурашами связана мало, но почти одно и тоже :) скоро засяду.

Nickers
22.10.2011, 20:00
Ахренеть, готов просто смотреть на смышленых муравьишек...
На каком языке делал?
Лично мне интересно придумать какой-нибудь прикольный алгоритм, который действовал бы против общей логики и всех нагибал, но я ленивый и, полагаю, нужно уметь программировать лучше, чем я.

Добавлено через 5 минут
http://ai-contest.com/visualizer.php?game=1404
иначе если поблизости враг держимся от него на безопасном расстоянии
Не сходится. Я ясно вижу как один муровейчик несется по прямой и всех по пути убивает!

Добавлено через 3 минуты
Ток что видел как твой муравей бегал от чужого, а тот не обращал на твоего внимания, возможно тот был исключением.

Добавлено через 6 минут
О, нашел ошибку. Может ты её и пофиксил уже...
http://ai-contest.com/visualizer.php?game=1001&user=1234
Твои муравьи все ломятся за одним куском еды. Много времени тратят, ведь тот, кто ближе все равно первый хапнет и им обратно идти...

Добавлено через 3 минуты
+ Часто двигаются на месте... Надо им сказать, чтоб они поворачивали в одну сторону с интервалом в 2-3 шага. (при рандоме) А то туда-сюда бегають. Видно, как 1 муровей не мог найти выход из комнаты 2х1 (Туда-сюда ходил)
Простите за флуд.

xkor
22.10.2011, 21:00
Не сходится. Я ясно вижу как один муровейчик несется по прямой и всех по пути убивает!озвученные мною условия действуют именно в том порядке в котором перечислены, соответственно если есть еда или вражеский муравейник поблизости то муравью пох на врагов.
Твои муравьи все ломятся за одним куском еды. Много времени тратят, ведь тот, кто ближе все равно первый хапнет и им обратно идти...это не ошибка, я пока не придумал алгоритма для наиболее правильного и достаточно быстрого распределения муравьёв по ближайшим кускам еды.
+ Часто двигаются на месте... Надо им сказать, чтоб они поворачивали в одну сторону с интервалом в 2-3 шага. (при рандоме) А то туда-сюда бегають. Видно, как 1 муровей не мог найти выход из комнаты 2х1 (Туда-сюда ходил)это да, алгоритм перемещений когда вокруг всё спокойно я уже пересмотрел, в новой версии муравей будет двигаться по прямой пока не врежется или вблизи не появится враг/друг/муравейник/еда.

Сильно усложнить алгоритм не даёт ограничение по времени на ход (0,25 секунды вроде). И так в одной из первых моих игр можно видеть что я вылетел по таймауту ( http://ai-contest.com/visualizer.php?game=989&user=1234 ), я там хоть и выиграл но при большом количестве муравъёв в лабиринте очень много времени тратиться на просчёты расстояний...

Nickers
22.10.2011, 22:42
xkor, А на каком все же языке?
Сильно усложнить алгоритм не даёт ограничение по времени на ход (0,25 секунды вроде)
И это очень печально, ведь тогда можно было бы сделать базу еды, которая существует и определять на неё ближайшего муравья, если "Занята"=0, но они все портят.
Думаю как-то все же можно облегчить скрипт. (КАК-ТО! =) )

при большом количестве муравъёв в лабиринте очень много времени тратиться на просчёты расстояний
А какие расстояния? До целей? Ну это вообще тупик. Бедным муравьям запрещают думать, при таких вычислениях они ж не выживут без мозга...

Тогда правильнее будет направить умственные силы на добычу еды и минимум инстинктов на ориентирование. Просто, чтобы они тупо при врезании во что-то меняли направление. И при стене и при другом муравье. Чтобы думали только о поиске, а шли, куда попало.

Добавлено через 2 минуты
Если бы ограничений не было, то можно было такого бота слепить, что он находя врага окружал его толпой другов и мочил :D

Добавлено через 6 минут
http://aichallenge.org/visualizer.php?game=2496&user=1234
114/262 (Противоположный тунель от твоего муравейника)
Порадовало, когда 3 муравья потянулись за 1й едой, её подобрал враг и они убежали от туда в ужасе))

Еще в тунелях при перемотке видно, как муравьи туда-сюда скачут (хотя у них есть 2 выхода на обоих концах, некоторые все же предпочитают туда-сюда)

xkor
22.10.2011, 22:46
при большом количестве муравъёв в лабиринте очень много времени тратиться на просчёты расстояний...немного не так написал не расстояния просчитываются а маршрут для обхода стенок лабиринта, в рандом картах препятствий получается в общем меньше значительно, пришлось ограничить алгоритм поиска пути до перебора не более 300 точек на один маршрут, хотя этого в принципе хватает что бы проложить маршрут на расстояние в два радиуса видимости при небольших препятствиях

Nickers
22.10.2011, 22:48
При том, что алгоритм один на всех у муравьев с коллективным разумом не очень (Может опять ограничения сделали своё дело). Если муравей замечает муравейник - он бежит и там умирает, но всем остальным - пофиг)
(Ну а что они сделают, но есть же те, кто достаточно близко к этому месту, а муравейник не видит.)

Добавлено через 1 минуту
xkor, ясно тогда почему ухоят в таймаут.

xkor
22.10.2011, 22:51
можно было такого бота слепить, что он находя врага окружал его толпой другов и мочил когда бета шла у участника с первого места муравьи именно так и действовали, подтягивались, выбирали момент и атаковали разом так что врагу некуда было деться, но я пока хз как такое реализовать чтоб много времени не ело

Nickers
22.10.2011, 22:57
xkor, А как это работает? Я бы сделал так, чтобы он шел в сторону, где свободно. Если там не свободно, то доходит на расстояние 2-3 клетки от объякта и проверяет другую сторону. Если расстояние после второго похода крайне мало ищет третью сторону (То есть отличную от первой, ведь он почти не сдвинулся).
Проблема еще в ямках 1-2 пикселя, но можно попробывать заставить их проверять не 1пиксель впереди себя, а 3...
А там есть Тест площадка, чтобы проверять замыслы алгоритмов?

Добавлено через 3 минуты
xkor, Да, это идеал. Вряд ли о таком нужно думать, есть более продуктивные пути растраты памяти, но можно подтягивать тех у кого весьма маленький радиус дальности и свободен путь до этого муровья.
(То есть все ближние и свободные сразу разворачиваются и помогают, ведь обычно их всегда толпа, просто у них у всех свои рандомы в голове и им, как бы насрать)

xkor
22.10.2011, 23:03
А там есть Тест площадка, чтобы проверять замыслы алгоритмов?есть набор инструментов для самостоятельного проведения боёв у себя на компе, я через них проверяю как мой бот мочится с демонстрационными ботами, у которых правда уже давно нет никаких шансов)
А как это работает?я пробовал при появлении вблизи врага держаться на минимально безопасной дистанции от него, ждать пока подтянуться свои на такую же дистанцию и при накоплении 3-4 своих на этой дистанции атаковать, но я не сделал учёта местности и количества врагов, в результате моих муравёв часто зажимали в угол или один мой муравей мог попасть в окружение, да и и атака не учитывала куда может пойти враг и поэтому часто атаковал в результате только один мой и соответственно тоже умирал, в общем с этим функционалом бот стал играть только хуже так что я пока его отключил

Nickers
22.10.2011, 23:20
http://aichallenge.org/visualizer.php?game=1408&user=765
MomoBot. Можно видеть на 128/289, как толпа его ботов прет по одной траектории, а потом (наверное под натиском рандома) разделяется.

Добавлено через 4 минуты
xkor, Тогда идея сама по себе не очень... Можно про охоту забыть и только менять траекторию при появлении врага или просто напрямик ломить. Если направить силы на кормление (Ну там маршруты чертить и распределять силы по карте), то нужда в охоте отпадает, а если это слабый соперник то смерть муравья вообще ему все порушит. А тебе будет без особой разницы. (Твои к тому времени еще 5 таких соберут)

Добавлено через 1 минуту
толпа его ботов прет по одной траектории
При этом атакует врагов 3х1 и отступает. Делая упор на охоту. Я в замешательстве Т_Т

Добавлено через 2 минуты
Пвп муравьишки не хилые мутят...

Добавлено через 4 минуты
http://aichallenge.org/visualizer.php?game=580&user=765
У красных явно установка на защиту, но позиция проигрышная.
Армии муравьев, АААААААААА

xkor
22.10.2011, 23:24
хм, я тут подумал, набор карт вроде пока фиксированный, а что если заранее рассчитать оптимальные пути "циркуляции" муравьев для каждой карты, а во время игры надо будет только опознать карту по её видимому кусочку и загрузить расчёты)

Yegor
22.10.2011, 23:26
А ограничения на количество памяти используемой алгоритмом нет?

Nickers
22.10.2011, 23:31
Yegor, Время 250мс ограничивает возможность поразмыслить.

Добавлено через 4 минуты
xkor, Во первых это читерство, во вторых можно...
Но идея же не очень) Ведь прикольнее, когда они на простых вычислениях начинают мыслит, Боты же.
Помнится я балдел от унарном умножения в статье о машине тьюринга...
А тут все гораздо прекраснее.

xkor
22.10.2011, 23:34
Yegor, об ограничениях на память вроде ничего нигде не написано, по крайней мере я не нашел ничего такого

Nickers
22.10.2011, 23:35
xkor,
опознать карту по её видимому кусочку и загрузить расчёты
Какие расчеты и как это поможет?

Можно просто всех сразу послыать на базы и по пути хватать еду, но за это же забанят.

xkor
22.10.2011, 23:36
Но идея же не очень) Ведь прикольнее, когда они на простых вычислениях начинают мыслит, Боты же. ну по началу отдельно обсчитывать карту, а потом может оптимизирую чтоб можно было и по ходу игры карту анализировать и оптимальные маршруты строить

Nickers
22.10.2011, 23:50
МНе кажется поведение муравьев должно менятся от их кол-ва, но вот как сделать такую систему, как у MomoBot - Хз и это немного напрягает...

Добавлено через 1 минуту
xkor, Ну норм. Пили еще батлы! Кроши врагов!

Добавлено через 7 минут
xkor, 1е секунды муравьи должны убегать подальше и набирать еды, дальше нужно обеспечивать наибольший обзор карты, чтобы муравьи свои участки сторожили, а при избытке народу переставали избегать врага, а начинали группироваться и убивать. Очень правильно, как у того Момо при виде нескольких врагов отходить и набирать группу друзей, но у него они реагируют так, даже на 1го, который мало опасен, даже при агресивном скрипте противника или таком же, как у тебя...

А вообще, попробуй поставить свой алгоритм против такого же играть. Если так можно.

Добавлено через 1 минуту
Что такое Skill?

Добавлено через 1 минуту
У меня, как всегда, неудержимый поток идей и мыслей, которые я выливаю и которые иногда противоречивы... Сменю-ка я музыку, на более спокойную.

destructor
22.10.2011, 23:59
http://aichallenge.org/visualizer.php?game=580&user=765
У красных явно установка на защиту, но позиция проигрышная.
Армии муравьев, ААААААААААон кросавчег ппц

Nickers
23.10.2011, 00:08
destructor, Система не правильная он защищался, как читер, а проиграл из-за того, что другой базы похапал(

destructor
23.10.2011, 00:13
он же выиграл вроде?) не?)

Добавлено через 55 секунд
а так, оба они протупили жостка:D

Nickers
23.10.2011, 12:04
http://ai-contest.com/visualizer.php?game=2629&user=1234
Пришел к выводу, что тянутся всем к одной еде не так уж страшно, а иногда полезно. (Кучнее держаться)
Можно попробовать продумать систему боя...

Можно сделать, если нашел муравейник с определенного радиуса в том направлении стекались муравьи(С приоритетом на еду). А вот препятствия сами обрабатывали.(Оббегали, как смогут)

(Отряд, который попал в зону оповещения о муравейнике)
При виде вражеских муравьев должны вбиваться в кучки и атаковать 2х1 или 3х1. Тогда, если муравей 1(нашел врага) отходит от него при этом и в стены не врезается. Муравьи, которые в х1.5 (или больше) радиусе бегут к нему обходя преграды. При этом они должны оббегать врагов на расстоянии, наверное. (Мне кажется важнее собраться в кучку). Когда собираются - атакуют одновременно. Если враг больше никем не обнаружен - идут дальше. Если врага обнаружили двое в одном радиусе то выбирают любого из них и бегут к нему (2й тоже подключается к помощи 1го) Если 2й нашел вне радиуса то сначала берутся муравьи в подмогу 1му (с радиуса), а только потом муравьи, которых видит 2й. (Области могут пересекаться и муравьи запутаются куда им бежать)
Если убили врага бегут дальше по направлению к муравейнику.

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

Это все алгоритм, который я взял из головы, который еще дорабатывать и дорабатывать, ведь на практике не проверял и он достаточно трудоемкий (ограничение ипаное) Но можно и попробовать.

xkor
23.10.2011, 16:25
на хабре появился хороший перевод правил и спецификаций игры, ссылку добавил в первый пост

Nickers
23.10.2011, 18:57
Кружок нуба:
И так криворукий я хотет поиграть локально в эту забавную игрушку...
Я, как истинный гений, зашел на Home сайта и умудрился все установить.
(Язык C++)
В батниках выдавало Ошбику, мол "python" в CMD такой команды нет. Я её удалил - все заработало Т_Т

Перенастроил на нубо карту, где 2 муравейника и 1 камень, но вот он инициализирует туда своих кривых ботов на python'e А стандартных ботов на Си нету. Я попытался забить туда Bot.cc(Из старт пакетов для С++), но визуализатор накрылся медным тазом от таких выкрутасов. Как быть?
На хабрахабре все любят Джава((

Добавлено через 5 минут
At this point you'll probably want to test your own bot in a match. First you'll have to know how to run the bot. C++ bots and other compiled bots usually run when their filenames are typed: ./botexecutable for Unix and botexecutable.exe for Windows.
Пле, не увидил, а почему .exe? Так не честно я даже и не знаю, как закомпилировать все эти файлы правильно...

xkor
23.10.2011, 20:10
Пле, не увидил, а почему .exe?потому что скриптовые языки выполняются соответствующим скриптовым движком а нативные языки надо компилить и уже собранную программу запускать)

SeregaZ
23.10.2011, 21:13
знаете что надо? надо делать свой язык программирования :) я вот для бота в чате делал. даже с мало мальски проверкой синтаксиса - когда все заработало, аж сам афигел. так и тут - нужен инструмент, причем простой, с несложными командами, и который бы все это дело компилировал и запускал. я например в в вашем с++ не бум бум. и что куда ставить, как компилить - тоже :) а вот на готовые ехе файлы - я бы посмотрел.

Nickers
23.10.2011, 22:36
SeregaZ, ассамблер херач.

Добавлено через 28 минут
Make Не хочет норм компилировать, как же быть? (Говорит, что 2 ошибки)
VS тоже не хочет... (Он не смог внятно аргументировать своего поведение)
Так, все же, как их скомпилировать?
Win 32

xkor
24.10.2011, 01:39
Nickers, нах тебе компилить если не умеешь на С++ программировать осознано?

Yegor
24.10.2011, 01:59
Зато у Nickers куча идей. Я когда не умел толком программировать тоже мог придумать заумный алгоритм с грандиозным размахом. А сейчас свободу полета мысли при обдумывании механики работы программы серьезно сдерживает осознание того, как сложно будет тот или иной алгоритм реализовать в коде. И подсознательно ищу как бы составить алгоритм максимально "прозрачный", эффективный и относительно простой в реализации.

Nickers
24.10.2011, 22:04
xkor, я программирую на Google ^^
И метод тыка еще никто не отменял!

Добавлено через 12 часов 23 минуты
http://aichallenge.org/visualizer.php?game=7493&user=1234
Эти 2 грозных парня - система защиты муравейника? Очень годно, но против организованных муравьев слабая защита.

xkor
24.10.2011, 23:58
Nickers, это первая версия защиты, я пока обдумываю как эффективнее защищать муравейник, наверное сделаю чтоб мои муравьи атаковали всё что приближается на определенный радиус к "домику", в идеале нельзя давать врагу даже увидеть свой дом, иначе тот может начать слать туда свои орды)

SeregaZ
25.10.2011, 01:35
что-то я малость не догоняю, а как на php то запустить? скачал старт пакет, там три файла Ants.php запускаешь - пусто. MyBot.php пишет ошибки и браузер виснет.

xkor
25.10.2011, 01:53
MyBot.php пишет ошибки и браузер виснет.эм, а причем тут браузер? запускать надо питоновский движок проводящий сражение передавая ему в параметрах настройки и пути к ботам

SeregaZ
25.10.2011, 02:04
хорошо. сначала ставлю питон. предположим D:\Python27\
после качаю распаковываю tools предположим D:\ANT\
потом требуется запуск play_one_game.cmd
при запуске её, пишет что python не является командным файлом или еще там чемто.
ладно, запустил тогда из пуска Python (command line), в появившемся черном окошке вбил путь до play_one_game.cmd - пишет ошибка синтаксиса.

xkor
25.10.2011, 02:06
при запуске её, пишет что python не является командным файлом или еще там чемтонадо путь к python.exe добавить в PATH винды или пользователя и перезагрузиться

SeregaZ
25.10.2011, 02:45
все. в корень питона надо было содержимое папки тулс закинуть...
ну или Path...

Добавлено через 10 минут
еще вопрос: там вроде четыре бота в смд файле. я хотел схитрить, удалить три :) зараза ругается.
можно ли так запустить? чтобы другие боты не отвлекали, посмотреть на развитие запустив только 1 бота.

Добавлено через 26 минут
ладно хрен с ним. поставил карту с 2 игроками. теперь как бота своего подключить? :) там что есть то питоновские боты, то есть с расширением .py - а как мне своего из папки php добавить? сейчас указываешь путь - игра не стартует. я так полагаю что нужно конвертануть из .php в этот .py?

Nickers
25.10.2011, 11:35
SeregaZ, Там у тебя в папке Стартовой есть файл Makefile?
По идее нужно скомпилировать (Как с php не знаю), запихать куда поближе и проложить путь. Но у меня и на С++ и на Pascal Вузуализатор зависает и не хочет ничего делать.

SeregaZ
25.10.2011, 17:50
неа, нету :) там только три файла:
Ants.php
MyBot.php
VERSION
да и смысл в них, если там в тулс есть своя папка PHP и в ней эти же файлы. не подходят ни стартовый пакет, ни указание с той родной тулс папки пхп файлов. видимо надо как-то конвертировать из пхп в путановский файл. батник тест бот тоже не пашет. пишет надо 2 ботов. я там малость не догнал как двух записывать...

Добавлено через 37 минут
все. догнал :) надо было изменить командный файл вместо:
@echo off
python "%~dp0playgame.py" --engine_seed 42 --player_seed 42 --end_wait=0.25 --verbose --log_dir game_logs --turns 500 --map_file "%~dp0maps\test.map" %* "python ""%~dp0sample_bots\python\LeftyBot.py""" "python ""%~dp0sample_bots\php\MyBot.php"""

надо было указать путь до php.exe файла:
@echo off
python "%~dp0playgame.py" --engine_seed 42 --player_seed 42 --end_wait=0.25 --verbose --log_dir game_logs --turns 500 --map_file "%~dp0maps\test.map" %* "python ""%~dp0sample_bots\python\LeftyBot.py""" "D:\Program Files\EasyPHP-5.3.2\php\php.exe ""%~dp0sample_bots\php\MyBot.php"""

ща болванки накатаю и засяду :) чуть не забыл! запускать сервер совсем не обязательно. он сам там с php любовью позанимался, и потом выдал результаты. стартовать аппач и все остальное не нужно. достаточно установить и потом указать путь до php.exe файла.

Добавлено через 2 минуты
кстати! вы в курсе, что при запросе в гугле - содерх вылезает на втором месте, после хабара? :))))) давайте счетчик подкрутим, чтобы на первое место вылазил.

Добавлено через 2 часа 44 минуты
так. ладно. начнем разбираться, кто больше в этом соображает - подсказывайте :)

взял я файлик 0.replay, и посмотрел на код. так вот... были строчки:
"ants": [
[51, 54, 0, 124, 0, "eese*
[21, 6, 0, 124, 1, "eween*
[21, 6, 3, 124, 1, "wensw*
[51, 54, 13, 124, 0, "eese*
[51, 54, 58, 124, 0, "eeses*
[51, 54, 111, 124, 0, "eeseswsnwwnn"]],
разбито для удобства. первые координаты 51, 54 я полагаю координаты рождения муравейки? и по сути это же муравейник.
последняя циферка - 0, и 1 для второго муравейки - я так полагаю это принадлежность к команде?
третья циферка это похоже на время рождения, точней номер хода видимо, при котором муравейка родился.
а нахрена 124? что она дает?
дальше - всякие wensw это видимо команды на изменение координаты на единичку в направлении буквы - w - west - запад (вправо), e - east - восток (влево), n - north - север (вверх), s - south - саус парк (вниз)

далее еда:
"food": [[21, 5, 0, 2, 1],
[51, 53, 0, 12, 0],
[15, 20, 0, 124],
[15, 90, 24, 124],
[49, 50, 28, 110, 0],

первые две понятно координаты, 0 это время респауна жратвы. то есть 0 это значит еда уже была на момент создания карты, дальше 24 и 28 - появились на 24 и 28 ходу соответственно.
далее опять нахрена 124? или 110, или 2 или 12. что они означают?
далее пятая цифорка - я так полагаю что когда четыре это респаун, когда пять - это сожратие. то есть опять координаты, время сожратия, хрен знает параметр, и 0 или 1 - номер команды, которая сожрала.
тут пришла в голову идея, что та хрен значная цифорка айди муравьишки, который съел?

я все уточняю, чтобы понять что к чему :) потом надо понять как команды приходят в моего бота, и как отсылать. какой там синтаксис.

Nickers
25.10.2011, 21:03
http://habrahabr.ru/blogs/sport_programming/130979/

Добавлено через 4 минуты
SeregaZ, Разбери пример бота, который в папке тулз. Я пытался Питона разобрать, пока не получается (Язык не знаю ж ведь) Вроде логику вижу, что он делает (Комментарии помагают) А вот, где он формирует команды не вижу...

SeregaZ
25.10.2011, 23:56
интересно, а как реализовать debug? внес в пхп код, чтобы при поступлении команды doTurn( $ants ) - записывал её в тхт файл. но поскольку там походу стоит ретранслятор пхп, и там походу эта команда не поддерживается. и поэтому он скатина не пишет в мой файл ничего. без возможности посмотреть, что творится в моем коде, это дохлый номер...

issueOrder($aRow, $aCol, $direction) - это я так понимаю команда мурашу в данных координатах выдвинутся в одном из 4 направлений $direction.

passable($nRow, $nCol) - проверка на препятствие. в случае, если координаты следующего хода соответствуют препятствию (то есть воде), то хода не будет. и я так полагаю нужно будет муравьишке дать другое направление.

и как интересно получить предыдущее направление муравьишки, в случае если требуется продолжение движения именно в ту сторону? вести отдельный массив, куда будут записываться все мураши?

Добавлено через 1 час 50 минут
кароче без дебаггера ловить нефиг. ну написал я код, и что? как теперь узнать в какой линии ошибка?

xkor
26.10.2011, 18:59
но поскольку там походу стоит ретранслятор пхпчего чего? какой ещё ретранслятор? код выполняет твой php движок с твоего компа с твоими настройками, питоновский скрипт запускающий и взаимодействующий с ботами понятия не имеет на каком языке и через какой интерпретатор или без него выполняются боты)

issueOrder($aRow, $aCol, $direction) - это я так понимаю команда мурашу в данных координатах выдвинутся в одном из 4 направлений $direction.

passable($nRow, $nCol) - проверка на препятствие. в случае, если координаты следующего хода соответствуют препятствию (то есть воде), то хода не будет. и я так полагаю нужно будет муравьишке дать другое направление.
всё так

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

кароче без дебаггера ловить нефиг. ну написал я код, и что? как теперь узнать в какой линии ошибка?это 100%, но в файл писать точно можно, мой бот это делает спокойно)

Добавлено через 59 секунд
взял я файлик 0.replay, и посмотрел на код. так вот... были строчки:
кстати формат этого файла не имеет практически ничего общего с форматом общения бота с сервером боя)

Добавлено через 16 часов 35 минут
SeregaZ, вот новая статья о муравьях (http://habrahabr.ru/blogs/sport_programming/131262/), очень хорошо всё описывает, так же там представлены базовые стратегии и даже пример бота на PHP который по заявлению автора держится в 50-60 местах. И там кстати про его отладку тоже написано.

Добавлено через 8 минут
интересный под конец бой http://aichallenge.org/visualizer.php?game=16282&user=1234
пока рыжий атаковал своей ордой мой муравейник, а он каким то чудом стоял за счёт постоянного выплёвывания муравьёв, мои муравишьки подкрались к его респу)))

Добавлено через 4 минуты
хм, кстати получается что если много муравьев ожидают респа, то о защите муравейника в принципе можно не беспокоиться

SeregaZ
26.10.2011, 19:35
и все равно массовый навал на муравейники противника хорошая стратегия. посмотри игры топового игрока в рейтинге. если он доработает защиту - то будет полный пэ :) а так проигрывает только в одном случае, если он толпой ломится давить муравейник, а он забит мурашами-хозяевами. они не могут сдвинутся, но и атакующие бестолку толпятся на расстоянии. в это время третий игрок благополучно берет базу топового игрока, так как там нет мурашей - они все бегут после рождения блокировать тот муравейник :)

Pinko
28.10.2011, 08:56
проигрывает только в одном случае, если он толпой ломится давить муравейник, а он забит мурашами-хозяевами. они не могут сдвинутся, но и атакующие бестолку толпятся на расстоянии. в это время третий игрок благополучно берет базу топового игрока, так как там нет мурашей - они все бегут после рождения блокировать тот муравейник

1 амного появляется ?
2 . пусть сидят дома пока не вернутся атакующие

Павел Плутахин
28.10.2011, 10:15
SeregaZ, Спасибо за разъяснения с подключением php, других языков в принципе незнаю. Очень заинтересовался данным проектом, т.к. еще в детстве на "спектруме" писал алгоритмы для таких игр. Есть своя очень интересная стратегия, попробую реализовать. Для начала пытаюсь разобраться, какими коммандами из файла ants.php можно пользоваться.

issueOrder($aRow, $aCol, $direction) каманда на движение муравья в точке $aRow, $aCol по направлению $direction = ('n','e','s','w')
passable($nRow, $nCol) - проверка на препятствие(воды).
unoccupied($row, $col) - проверка на незанятость (в клетке земля, труп или еда)
destination($row, $col, $direction) - возвращает область видимости муровья в виде массива клеток. Зачем здесь направление $direction ?
distance($row1, $col1, $row2, $col2) - дистанция от одной точки до другой (как я понимаю учитано что поле замкнуто циклично)
direction($row1, $col1, $row2, $col2) - 2 направления для достижения 2й точки. (актуально для того что поле замкнуто циклично, и бывает лучше пройти сквозь стенку)

Массивы:
AIM - направления 'n','e','s','w'
RIGHT - Следующее направление при движении по часовой стрелке
LEFT - аналогино пред.
BEHIND - разворот на 180гр.

Если есть свои простые функции, просьба делиться, это очень удобно

Вопросы:
Я лишь двигаю муровьями? или нужно давать еще команды сьесть, напасть? Если нет таких команд, в какой последовательности идет определение, ем я или воюю
Для чего массивы $myAnts, $enemyAnts, $deadAnts, $food - это я так понимаю все что видять все мои мураши?
Как найти муравейник свой, чужой. Где их данные

SeregaZ
28.10.2011, 14:59
движения мураша достаточно. съедание происходит автоматически, как только муравейка встал рядом с едой. аналогично происходит с убийством другого мураша. увидел чужого, или сваливаешь, или атакуешь, просто бежишь на него. умирают вроде как оба при этом...
муравейник искать только бродя по карте, пока хоть один из твоих мурашей не засекет муравейник. тогда координаты становятся известны "системе", и уже можно что-то думать - атаковать, или заблочить, или еще чо-то :)
массивы эти видимо содержут в себе данные о твоих мурашах, о увиденных мурашах противника (я не думаю что там инфа обо всех мурашах противника, иначе смысл от "тумана войны", ограниченного зрением муравейки), $deadAnts этот массив видимо служит для "вычитания" мертвых из массива живых, дабы система не продолжала слать команды мертвому мурашу. или может это остаток кода, от отброшенного функционала по отображению мертвых тел муравьев.
$food ну тут все понятно. массив еды :) знать бы еще - там видно всю еду, или только ту, что в пределах видимости муравьев? если предположить что видно всю еду, а с учетом того, что еда "рожается" симметрично, то сравнивая координаты еды с координатами своего муравейника - можно вычислить координаты чужого муравейника :)

xkor
28.10.2011, 15:26
знать бы еще - там видно всю еду, или только ту, что в пределах видимости муравьев?естесно только та что видно, ты вообще по ссылкам ходил которые я на кидал, там это всё расписано...

Павел Плутахин
28.10.2011, 15:34
пока хоть один из твоих мурашей не засекет муравейник я так понимаю это отследить можно по появлению "мураша из воздуха".
Свои hill-ы можно найти при старте игры по позициям стартовых мурашей.

xkor
28.10.2011, 15:41
Павел Плутахин, вообще то от сервера приходит команда
h row col owner # муравейник строка столбец владелец
и это расписано в спецификации игры на офф сайте и её переводе по первой ссылке на хабр из первого поста этой темы...
правда стандартные боты и заготовки для ботов на разных языках писались когда муравейников ещё не было, так что их "движки" эту команду игнорируют

SeregaZ
28.10.2011, 15:42
не не не :) не из воздуха. там у муравейника есть свой код :)

xkor
28.10.2011, 15:45
И вообще народ, кончайте строить предположения, почитайте статьи, там уже всё расписано и обсосано...

SeregaZ
28.10.2011, 15:51
читал. только меня смутил тот лог файл, что создается во временной папке. он правда по сути для третьего лица, который все видит - тем не менее там список еды, которая уже была на момент старта игры, в самом начале, и у них там появление на 0 ходе. вот я и подумал, что этот начальный список координат доступен сразу полностью, а не только в пределах видимости. в пользу этого еще говорит наблюдение за играми, когда муравей, практически после старта - осмысленно бежит за едой далеко за пределами своей видимости.

Павел Плутахин
07.11.2011, 17:55
Разработал отличный алгоритм для выхода из любого лабиринта, сейчас хочу сделать алгоритм нападения. Как лучше действовать?

Вопрос про timeout, когда он возникает? я как только не ограничивал работу скрипта по времени, все равно вылазит. На оф. форуме пишут про количество вызовов рекурсии, что это и как этим смотреть? язык php

xkor
07.11.2011, 21:15
Вопрос про timeout, когда он возникает?ну в начале игры вместе с размерами карты сервер присылает и максимальное время хода, если бот в него не укладывается то происходит таймаут)
На оф. форуме пишут про количество вызовов рекурсии, что это и как этим смотреть?хз причем тут рекурсия, разве что если она в бесконечность уходит и переполняет стек, хотя при этом будет краш бота а не таймаут...

Павел Плутахин
09.11.2011, 13:00
вот я лохонулся, turntime дается в милисекундах, а не в секундах...

KyberPrizrak
10.11.2011, 12:06
Есть предложение по обмену откомпилированными ботами (для тестирования собственного бота, дома, т.к. стартовые боты для этих целей уже давно не подходят)

Кто согласен на обмен, пишите - кину в личку ссылку на скачивание exe-файла последней версии моего бота:
http://aichallenge.org/profile.php?user=9678

xkor
10.11.2011, 14:42
KyberPrizrak, хорошая идея, кстати вот тема на офф форме соревнования с адресом неофициального TCP сервера на котором можно тоже играть http://aichallenge.org/forums/viewtopic.php?f=25&t=1505
а пара моих версий ботов во вложении

xkor
10.11.2011, 14:48
KyberPrizrak, что то твой бот судя по боям очень любит к стенкам прилипать, ну и базу не охраняет совершенно (хотя охрана базы есть почему то мало у кого)

KyberPrizrak
10.11.2011, 15:54
KyberPrizrak, что то твой бот судя по боям очень любит к стенкам прилипать, ну и базу не охраняет совершенно (хотя охрана базы есть почему то мало у кого)
Ты на версию 14 смотри. В версии 9 (она же версия 10) был баг в алгоритме поиска пути, мураши застревали слева от препятствий.
Насчет охраны базы - там много чего нет, это лишь первая версия.

KyberPrizrak, хорошая идея, кстати вот тема на офф форме соревнования с адресом неофициального TCP сервера на котором можно тоже играть http://aichallenge.org/forums/viewtopic.php?f=25&t=1505
а пара моих версий ботов во вложении
У меня твой бот не заработал... crashed на первом ходе... :(

P.S. мои во вложении

xkor
10.11.2011, 16:38
У меня твой бот не заработал... crashed на первом ходе... оО, оба?, .NET 3.5 стоит? вроде больше им ничего не надо.

KyberPrizrak
10.11.2011, 22:51
Дома запустился, спасибо большое. :)
То я проверял на работе, там стоит ".NET Framework 4.0".

P.S. VS? компилил с пометкой debug или release?

xkor
11.11.2011, 01:58
P.S. VS? компилил с пометкой debug или release?ага, debug

Добавлено через 57 секунд
То я проверял на работе, там стоит ".NET Framework 4.0". хм, а 4й в себя уже предыдущие не включает зараза?(

KyberPrizrak
11.11.2011, 10:34
ага, debug
С пометкой debug в VS (если мне память не изменяет), добавляется еще одно требование - наличие самой VS :)

xkor
11.11.2011, 23:48
KyberPrizrak, не добавляется ничего такого, софт прекрасно запускается даже у людей у которых ничего для программирования не стоит, только винда, офис и дотнет.

Павел Плутахин
13.11.2011, 12:44
допилил немного логику встречи с врагом, выкладываю ссылку
http://aichallenge.org/profile.php?user=8872
я в 10ке среди PHP ботов! Мелочь а приятно...

KyberPrizrak
21.12.2011, 15:32
Финал стартовал... Кто участвует в конкурсе?
Поделитесь секретами! :)
И ссылками на профиль. ;)

xkor
24.12.2011, 17:54
блин, до старта итогового соревнования прыгал между 200-250 местами, а в итоговом занял всего 427 место(

Yegor
30.12.2011, 09:12
допилил немного логику встречи с врагом, выкладываю ссылку
http://aichallenge.org/profile.php?user=8872
я в 10ке среди PHP ботов! Мелочь а приятно...

Даешь бота для L2 на ZX Spectrum? :)