главная турниры статьи wiki карта сайта логин
 

ИИ для веснота

Автор gs_fx, декабря 08, 2015, 18:09:10

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

gs_fx

Недавно загорелся я идеей улучшить ИИ веснота, и лучше не спрашивайте, как так вышло. В любом случае, моего энтузиазма надолго не хватит, но, быть может, что-то играющее однозначно лучше оригинального ИИ наваять удастся (до того, как я это дело брошу, или у меня кончится свободное время). Скелет модификации, добавляющей ИИ в мультиплеер кое-как написал. Методом проб, ошибок и полунаучного тыка освоил кое-как основы Lua за 4 дня (и поэксперементировал с модификацией дефолтного ИИ) и был готов приступить непосредственно к самой интересной части... и подумал, а может я найду каких-нибудь единомышленников среди русскоязычного сообщества. Сама по себе идея не нова, и я не первый, кто работает в этом направлении. Возможно, свяжусь с заграничными собратьями по разуму и почерпну что-то от них. Но помощь на русском языке мне была бы удобнее.
Итак, предположим, что кто-то решит мне помочь. И первый вопрос, который у него может возникнуть - чем помочь?
1) Непосредственно кодинг. Опыта в коллективных программных прожектах у меня нет, поэтому на вас также организация совместной работы. Основная часть пишется на lua. Знание C++ для подсматривания в сорцы веснота для справочной информации тоже не повредит.
2) Помощь в кодинге. Консультации по тонкостям lua и его реализации в Wesnoth'е в основном.
3) Идеи. Приветствуются любые. Любая мелочь может помочь. Как должен думать бот? Что он должен делать в первую очередь? Как ему понять, когда стоит нападать, а когда лучше занять выгодную позицию с хорошей защитой? Каких бойцов закупать? Какие-нибудь общие тактические советы от опытных игроков также приветствуются. Бот думает не так, как человек, но научить его отдельным хитростям можно. И не факт, что если идея очевидна для вас, она пришла в голову и мне. Не стесняйтесь поделиться любыми, даже самыми безумными мыслями, можно и в лс. Много над чем стоит поразмыслить, соответственно, я многое могу упустить из виду. Единственное пожелание - высказывайтесь по теме, общефилософские рассуждения мне мало помогут.
4) Поищите интересные повторы игр. Возможно, сам гляну на replays.wesnoth.org и ладдере, но я не знаю, кто там сейчас "в ударе", т.к. давно не играл. Напишите ники опытных игроков, в чьих повторах высок шанс найти какие-нибудь интересные стратегические/тактические решения.
5) В отдалённой перспективе - тестирование ИИ, разбор его ошибок, как бы вы поступили на его месте и т.д. Опытные игроки, которым это интересно, приветствуются. Но всё это будет не раньше, чем мой ИИ хотя бы начнет передвигать юнитов по полю боя. :D
Пока всё.
кривость рук всегда отличала моих бойцов :)


DV

имеется такое предложение - улучшить для начала алгоритм выбора атаки, которой боец будет отвечать на атаку противника. Прежде всего это важно потому, что применимо не только в битвах "человек против компа" но и в "человек против человека", а сейчас, как мне кажется, выбор преследует немного не те приоритеты (кода не вскрывал, ввяснял эмпирически) - а именно: надавно сделал юниту-магу атаку, которая сама имела 0-0 урона, но и вражеский урон обнуляла тоже. причем сделано все было стандартными инструментами вмл и правильно отображалась в окнах атаки и рассчета возможных повреждений, то есть ИИ знал о том, что у него есть вариант в котором ни атакующий ни обороняющийся не получат вообще урона - и тем не менее упорно продолжал защищатся посохом с 9-2 урона даже тогда, когда маг оказывался в смертельной опасности и без шанса уничтожить противника. Имхо, бардак это - для обороняющегося юнита приоритетом должна быть собственная безопасность, а не максимизация ответного урона - урон он сможет понаносить на своем ходу, если выживет. Понятно, что в дефолте от выбора обороняющимся атаки не зависит то, сколько урона он получит, но ведь если алгоритм улучшить соответствующим образом в дефолте ничего и не изменится, а в эрах, где есть выбор между атакой, дающей больше защиты и атакой, наносящей больше урона - пусть выбирает защиту. Такие дела.
Возглавляет силы зла

gs_fx

Доброго времени уток.
К сожалению, выбор ответки в защите "hardcoded" (хорошего аналога из русского в одно слово не придумал, но смысл в том, что это заложено в коде самого Wesnoth'а на C++ и не поддается модификации со стороны аддонов). Конечно, Wesnoth - игра с открытым исходным кодом, и любой желающий попробовать модифицировать это место в коде (например, если объявлена соответствующая функция lua/formula для выбора, воспользоваться ей, а иначе использовать стандартный выбор). К сожалению, я себя таким желающим назвать не могу. [spoiler="лирическое отступление"] Я, к сожалению, не смог собрать Wesnoth на Visual Studio без каких-либо модификаций исходного кода (это был тестовый запуск, чтобы убедиться, что хотя бы до моих модификаций всё работает), хотя инструкциям по сборке следовал в точности. Мне чужда возня с большими и сложными IDE, поэтому я благополучно забил на это дело. Не буду же я писать и отправлять код, который не могу проверить на работоспособность хотя бы на своей машине. Возможно, позже попытаю счастья с набором инструментов MinGW.[/spoiler]
Можно отправить такой реквест разработчикам, возможно они возьмутся за это. Ну а когда такая возможность будет запилена в C++, я (и любой другой разработчик для своего аддона) сможет организовать выбор оружия для любого отдельно взятого юнита/группы юнитов/всех юнитов по любому другому принципу.
кривость рук всегда отличала моих бойцов :)