Comments 16
Клас, спасибо! А можно бои из финала?
+1
Bсе бои финала: http://russianaicup.ru/contest/4/games
Бои с чемпионом: http://russianaicup.ru/profile/slash/contest4
Бои с чемпионом: http://russianaicup.ru/profile/slash/contest4
+3
Я сам потратил пару вечеров, пытаясь обучить бойцов хотя бы простейшим командам. Но потом работа накрыла и свою стратегию не стал даже в песочницу выкидывать.
Спасибо за статью — было очень интересно узнать, как был устроена победившая стратегия :)
Спасибо за статью — было очень интересно узнать, как был устроена победившая стратегия :)
0
Поздравляю с победой!
У меня есть одни вопрос. Как я понял, солдат просчитывает только один свой ход.
Сможет ли он просчитать ситуацию, когда нужно подойти, стрельнуть и отойти?
У меня есть одни вопрос. Как я понял, солдат просчитывает только один свой ход.
Сможет ли он просчитать ситуацию, когда нужно подойти, стрельнуть и отойти?
+1
Да, на один ход каждому солдату дается 10 очков действия, если рядом командир, то это число увеличивается до 12. На передвижение тратится по 2 очка, на выстрелы у обычных солдатов тратится от 2 до 4, то есть вполне можно успеть сделать несколько шагов, потом выстрелить, потом опять куда-то перейти. Просчитать это все заранее — тоже не проблема, все эти числа изначально известны.
Снайперу все это сделать сложнее — ему необходимо 9 очков для выстрела.
Помочь может еще сухой паек, использовав который солдат может увеличить количество своих очков действия на 3.
Снайперу все это сделать сложнее — ему необходимо 9 очков для выстрела.
Помочь может еще сухой паек, использовав который солдат может увеличить количество своих очков действия на 3.
0
Вот хотел же писать алгоритм исходя из оценки… Но нет, подумал построить все исходя из ситуации и оценка действий сводилась к количеству убитых, максимальный нанесенный урон… В итоге максимум был на 120, затем когда потихоньку начал выбиваться из числа попадающих во 2-й раунд из песочницы, сбросил рейтинг и завис на 350м…
Ну а так у меня тоже были разные фазы, просчет клеток, где и как лучше стоять, запоминал от кого прячусь за укрытием и тд… Сил было потрачено много. Но большая ошибка была в том что я так увлекся погоней за рейтингом что довольно сильно запутался как в реализации так и в своих же идеях :)
Ну а так у меня тоже были разные фазы, просчет клеток, где и как лучше стоять, запоминал от кого прячусь за укрытием и тд… Сил было потрачено много. Но большая ошибка была в том что я так увлекся погоней за рейтингом что довольно сильно запутался как в реализации так и в своих же идеях :)
0
Теперь каждый вражеский боец становится размазанным по всему игровому полю в соответствии с некоторым распределением вероятностей.Ожидал далее прочитать про волновую функцию солдата :)
+4
Среди хабровчан когда-нибудь проводился турнир по ботописанию в чем-нибудь? В шахматах например?
0
Было такое habrahabr.ru/post/75334/
+1
Результаты и реплеи: http://habrahabr.ru/post/75928/
0
Отличная статья, и поздравляю с победой!
+2
Участвовал в прошлом турнире, в финале занял место где-то в районе первой двадцатки. Тогда было интересно. Хотел поучаствовать и в этом турнире, но почитал усливия игры… и передумал.
Проблема в том, что в этом турнире я так и не понял за счет чего вообще можно победить. В танчиках поворот корпуса и башни занимал приличное время, и там можно было подъехать сзади или сбоку и иметь профит. Это было основой всех стратегий. Здесь же если солдаты находятся в видимости друг друга то оба могут убить друг друга. Поэтому подкрадываться сзади — смысла нет. Выглядывать из-за угла — тоже проблематично из-за особенностей движка.
Поэтому стратегия сводится к кропотливому подсчету очков действия и т.п. странным вещам. Получается какая-то бухгалтерия сплошная. А экшена нет.
Проблема в том, что в этом турнире я так и не понял за счет чего вообще можно победить. В танчиках поворот корпуса и башни занимал приличное время, и там можно было подъехать сзади или сбоку и иметь профит. Это было основой всех стратегий. Здесь же если солдаты находятся в видимости друг друга то оба могут убить друг друга. Поэтому подкрадываться сзади — смысла нет. Выглядывать из-за угла — тоже проблематично из-за особенностей движка.
Поэтому стратегия сводится к кропотливому подсчету очков действия и т.п. странным вещам. Получается какая-то бухгалтерия сплошная. А экшена нет.
+2
А у меня упорно не хотел бот стратегию принимать — не было времени разбираться что к чему и забил.
Самое смешное, что в первый раунд прошла моя тестовая стратегия, написанная на коленке за полчаса :)
Самое смешное, что в первый раунд прошла моя тестовая стратегия, написанная на коленке за полчаса :)
0
Спасибо! Я сам выше 250 места в песочнице не подымался :(. У вас гораздо более продуманная стратегия (на два порядка выше).
Мои бойцы скорее всего действовали по 30-40 эвристикам с приоритетами. Это больше было рефлексами, почти без оценок и просчётов будущих действий. Я бросил эту затею когда бойцы стали действовать так как я хочу но при этом проигрывать.
На самом деле я много потерял пока пытался делать алгоритм без поиска пути, а когда внедрил отладил волновой алгоритм всё стало лучше, но остальные так же подросли.
Для меня это был первый подобный опыт (почти) и мой код быстро превратился в клоаку. Но теперь я точно знаю с чего начинать и что делать. :)
Меня только пугают брутфорсеры на чемпионате.
Мои бойцы скорее всего действовали по 30-40 эвристикам с приоритетами. Это больше было рефлексами, почти без оценок и просчётов будущих действий. Я бросил эту затею когда бойцы стали действовать так как я хочу но при этом проигрывать.
На самом деле я много потерял пока пытался делать алгоритм без поиска пути, а когда внедрил отладил волновой алгоритм всё стало лучше, но остальные так же подросли.
Для меня это был первый подобный опыт (почти) и мой код быстро превратился в клоаку. Но теперь я точно знаю с чего начинать и что делать. :)
Меня только пугают брутфорсеры на чемпионате.
0
Спасибо, очень интересно было почитать.
Я к сожалению начал не с того конца: а именно с перебора минимаксом ходов в бою. А именно, перебирались не шаги в рамках отдельного хода, а полные ходы. Т.е. например для соладата генерируем 10 возможных продолжений в бою. Грубо говоря:
1) атака одного
2) атака другого
3) атаки с низкой стойки,
4) атаковать и убежать,
5) атаковать присесть за укрытие
и тд.
Потом для следующего бойца. и тд. расширяя дерево поиска.
В итоге бот отлично воевал если все враги видимы — т.к. можно достаточно точно просчитать. но если враг предпочитал прятаться в тени, и атаковать изподтижка — то тут проблемы. Бойцы слишком опрометчиво бросались в атаку видя только одного врага. Приходилось вставлять всякие костыли.
В небоевом режиме перебор появился слишком поздно. Не успел его развить как следует :)
Я к сожалению начал не с того конца: а именно с перебора минимаксом ходов в бою. А именно, перебирались не шаги в рамках отдельного хода, а полные ходы. Т.е. например для соладата генерируем 10 возможных продолжений в бою. Грубо говоря:
1) атака одного
2) атака другого
3) атаки с низкой стойки,
4) атаковать и убежать,
5) атаковать присесть за укрытие
и тд.
Потом для следующего бойца. и тд. расширяя дерево поиска.
В итоге бот отлично воевал если все враги видимы — т.к. можно достаточно точно просчитать. но если враг предпочитал прятаться в тени, и атаковать изподтижка — то тут проблемы. Бойцы слишком опрометчиво бросались в атаку видя только одного врага. Приходилось вставлять всякие костыли.
В небоевом режиме перебор появился слишком поздно. Не успел его развить как следует :)
0
Можно в качестве эксперементов попробовать написать свой фреймворк, на котором пишут AI, например, на основе Behavior Trees.
0
Sign up to leave a comment.
Золотая медаль на Russian AI Cup 2013 — как это все было