Комментарии 9
Мысли о 'ловушке точки возрождения'
Рассмотрим ситуацию на картинке. Видно, что это тупик. Зачем мы туда вообще пошли, если от него так и веет опасностью? Решение: не позволять ИИ заходить в тупики путем их закрашивания.
А теперь усложним задачу. Что, если в конце тупика расположен рудник? Изолировать эту территорию будет неправильно в случаях с маленькими картами, где всего 4 рудника на карте и удерживание двух из них принесет победу. Что же тогда делать? Ответ: перетягивающие поля спаунпоинтов.
Сколько у нас спаунпоинтов? Четыре отметим их точками A, S, D, F. Мы застряли за одним из них — за D, к примеру. Сам игрок стоит на точке X. То есть можно сказать, что расстояние AD, SD, FD будут в любом случае больше или равны соответсвующим им расстояниям AX, SX и DX, что можно считать признаком того, что мы в тупике. Верно? Не совсем.
На фотографиии изображены два случая. Случай 1 — эталонный, случай 2 — исключение. Нужно что-то более сложное.
А теперь усложним задачу. Что, если в конце тупика расположен рудник? Изолировать эту территорию будет неправильно в случаях с маленькими картами, где всего 4 рудника на карте и удерживание двух из них принесет победу. Что же тогда делать? Ответ: перетягивающие поля спаунпоинтов.
Сколько у нас спаунпоинтов? Четыре отметим их точками A, S, D, F. Мы застряли за одним из них — за D, к примеру. Сам игрок стоит на точке X. То есть можно сказать, что расстояние AD, SD, FD будут в любом случае больше или равны соответсвующим им расстояниям AX, SX и DX, что можно считать признаком того, что мы в тупике. Верно? Не совсем.
На фотографиии изображены два случая. Случай 1 — эталонный, случай 2 — исключение. Нужно что-то более сложное.
+1
Небольшое пояснение к ловушке
В случае срабатывания правила с длинами, описанный выше, следует сделать так, чтобы тебя притягивали спаунпоинты A, S, F, а не отталкивал спаунпоинт D.
Однако такой способ хоть и хорошо помогает избежать заточения в мертвую зону, но всё равно не является идеальным, поэтому было бы неплохо рассмотреть другие варианты решения задачи (притягивание к тавернам? Таверны нередко находятся в этом самом тупике, которого мы хотим избежать, и пока мы сражаемся с вечно возрождающимся противником, мы теряем золото в таверне, наши рудники захватывают остальные два игрока. Тогда мб к середине карты? Но иногда бывает так, что середина карты заполнена лесом, поэтому определить середину проблематично. Как самая действенная идея — 8 клеток, которые образуют прицел на середину, но подробнее расскажу уже в следующей статье)
Однако такой способ хоть и хорошо помогает избежать заточения в мертвую зону, но всё равно не является идеальным, поэтому было бы неплохо рассмотреть другие варианты решения задачи (притягивание к тавернам? Таверны нередко находятся в этом самом тупике, которого мы хотим избежать, и пока мы сражаемся с вечно возрождающимся противником, мы теряем золото в таверне, наши рудники захватывают остальные два игрока. Тогда мб к середине карты? Но иногда бывает так, что середина карты заполнена лесом, поэтому определить середину проблематично. Как самая действенная идея — 8 клеток, которые образуют прицел на середину, но подробнее расскажу уже в следующей статье)
0
При захвате рудников стоит отдавать предпочтение тем из них, которые заняты топовыми ботами (имеющими большее кол-во золота) — увеличивает шанс победы.
Просчитывать рекурсивно план захвата будет ресурсоемко, а без учета ходов противников ещё и малодейственно. Проще примитивно выбрать ближайшие N (с учетом текущего здоровья) доступных к захвату шахт (скорректировав их вес (1/dist) на ценность отбивания их у противников) и посчитать, движение в каком направлении имеет максимальное увеличение суммы весов этих N шахт). Это будет работать вполне неплохо, хотя и не всегда оптимально.
Ну и следует учитывать, что удачная стратегия заключается вовсе не в эффективном захвате шахт, а в успешном выживании и успешной охоте на других ботов. Иначе все эти эффективно захваченные шахты достанутся более умному боту ) Так что лучше посчитать в глубину план взаимодействия с другими ботами, а не просто захват шахт.
Просчитывать рекурсивно план захвата будет ресурсоемко, а без учета ходов противников ещё и малодейственно. Проще примитивно выбрать ближайшие N (с учетом текущего здоровья) доступных к захвату шахт (скорректировав их вес (1/dist) на ценность отбивания их у противников) и посчитать, движение в каком направлении имеет максимальное увеличение суммы весов этих N шахт). Это будет работать вполне неплохо, хотя и не всегда оптимально.
Ну и следует учитывать, что удачная стратегия заключается вовсе не в эффективном захвате шахт, а в успешном выживании и успешной охоте на других ботов. Иначе все эти эффективно захваченные шахты достанутся более умному боту ) Так что лучше посчитать в глубину план взаимодействия с другими ботами, а не просто захват шахт.
+1
Мне даже и в голову не приходило строить козни против лидирующего соперника… Действительно замечательная идея! Я соберу статистику по играм с безыскусным захватом рудников и с целенаправленноым увеличением важности захватата рудников лидера.
Думаю, это новведение определенно точно принесет большую пользу, увеличив коэффицент успешности боя (рассчтывается как отношение моего золота и золота лидера). Спасибо за отличные идеи)
Думаю, это новведение определенно точно принесет большую пользу, увеличив коэффицент успешности боя (рассчтывается как отношение моего золота и золота лидера). Спасибо за отличные идеи)
0
Мой опыт (боты типа Elfar) показывает, что вроде как не очень работает — если отдавать предпочтение шахтам соперников (была у меня такая настройка), то бот вместо ближайших шахт предпочитает пилить до соседских (получается меньше золота) + больше вступает в бои. В результате у меня эффективность падала, но, может, это можно настроить.
Вообще идея строить козни да, есть :))
Вообще идея строить козни да, есть :))
0
не вижу смысла учитывать, что у врага мало хп и он может вернуться на точку возрождения. Т.к.
1. через точку возрождения ближе
2. он может никогда на нее не вернуться
Надо учитывать точку возрождения, только если чужой игрок находится рядом с ней.
1. через точку возрождения ближе
2. он может никогда на нее не вернуться
Надо учитывать точку возрождения, только если чужой игрок находится рядом с ней.
0
Тут есть определенные нюансы:
1. Если мы стоим именно на точке возрождения, то в случае смерти врага он нас убивает и захватывает все рудники.
2. В отличие от реальной жизни, противник не может быть внезапно смертным, т.е. можно оценить шанс того, что скоро он умрет.
3. Если мы попадем в эту ловушку, то шанс умереть составляет 100%, если противник имеет адекватные способности к сражениям; мы точно потеряем все рудники, да еще и впустую упустим несколько своих ходов.
Спаунпоинт — очень важная единица в игровом мире. Не следует пренебрегать ей, иначе можно сильно пожалеть.
1. Если мы стоим именно на точке возрождения, то в случае смерти врага он нас убивает и захватывает все рудники.
2. В отличие от реальной жизни, противник не может быть внезапно смертным, т.е. можно оценить шанс того, что скоро он умрет.
3. Если мы попадем в эту ловушку, то шанс умереть составляет 100%, если противник имеет адекватные способности к сражениям; мы точно потеряем все рудники, да еще и впустую упустим несколько своих ходов.
Спаунпоинт — очень важная единица в игровом мире. Не следует пренебрегать ей, иначе можно сильно пожалеть.
0
Есть еще такая особенность, что значимость этой ловушки сильно зависит от числа шахт на карте. Я, например, её не раз наблюдал в ситуации — маленькая карта до 10х10 и 4 шахты. Там, на мой взгляд, практически неважно как ты играешь — де-факто ты не можешь захватить больше 1 шахты на продолжительное время, потому что игроки быстро гибнут и быстро захватывают самую близкую шахту.
На таких картах, по моим наблюдениям, лучше всего работает минимаксный расчет ближайших вариантов — он все-таки позволяет Mini-Me (пока самый сильный играющий бот) зарабатывать больше золота к концу игры, хотя и не намного.
На таких картах, по моим наблюдениям, лучше всего работает минимаксный расчет ближайших вариантов — он все-таки позволяет Mini-Me (пока самый сильный играющий бот) зарабатывать больше золота к концу игры, хотя и не намного.
0
Про нюансы я согласен. Но если у вас нет рудников, то и респаун нет смысла учитывать в потенциальных полях. Т.к. самое худшее вам не повезет и вы окажетесь на своем респавне.
К тому же потенциально респавн может быть и привлекательным. Если вы знаете, что чужой игрок сейчас умрет, а вам нужно на свой респавн, т.к. там можно убить другого игрока и получить + по шахтам.
К тому же потенциально респавн может быть и привлекательным. Если вы знаете, что чужой игрок сейчас умрет, а вам нужно на свой респавн, т.к. там можно убить другого игрока и получить + по шахтам.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Пишем ИИ для Виндиниума на одноплатных компьютерах. Часть 3: от теории к практике. Эффективно охотимся за рудниками в ПП