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

Автор Тема: ИИ для веснота  (Прочитано 806 раз)

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

gs_fx

  • Эксперт
  • level 2
  • ***
  • Сообщений: 221
  • Mountain Trolls [MT], Тролль-Воин
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 48.0.2564.0 Chrome 48.0.2564.0
    • Просмотр профиля
    • E-mail
  • Раса: Человек
ИИ для веснота
« : Декабрь 08, 2015, 18:09:10 »
Недавно загорелся я идеей улучшить ИИ веснота, и лучше не спрашивайте, как так вышло. В любом случае, моего энтузиазма надолго не хватит, но, быть может, что-то играющее однозначно лучше оригинального ИИ наваять удастся (до того, как я это дело брошу, или у меня кончится свободное время). Скелет модификации, добавляющей ИИ в мультиплеер кое-как написал. Методом проб, ошибок и полунаучного тыка освоил кое-как основы Lua за 4 дня (и поэксперементировал с модификацией дефолтного ИИ) и был готов приступить непосредственно к самой интересной части... и подумал, а может я найду каких-нибудь единомышленников среди русскоязычного сообщества. Сама по себе идея не нова, и я не первый, кто работает в этом направлении. Возможно, свяжусь с заграничными собратьями по разуму и почерпну что-то от них. Но помощь на русском языке мне была бы удобнее.
Итак, предположим, что кто-то решит мне помочь. И первый вопрос, который у него может возникнуть - чем помочь?
1) Непосредственно кодинг. Опыта в коллективных программных прожектах у меня нет, поэтому на вас также организация совместной работы. Основная часть пишется на lua. Знание C++ для подсматривания в сорцы веснота для справочной информации тоже не повредит.
2) Помощь в кодинге. Консультации по тонкостям lua и его реализации в Wesnoth'е в основном.
3) Идеи. Приветствуются любые. Любая мелочь может помочь. Как должен думать бот? Что он должен делать в первую очередь? Как ему понять, когда стоит нападать, а когда лучше занять выгодную позицию с хорошей защитой? Каких бойцов закупать? Какие-нибудь общие тактические советы от опытных игроков также приветствуются. Бот думает не так, как человек, но научить его отдельным хитростям можно. И не факт, что если идея очевидна для вас, она пришла в голову и мне. Не стесняйтесь поделиться любыми, даже самыми безумными мыслями, можно и в лс. Много над чем стоит поразмыслить, соответственно, я многое могу упустить из виду. Единственное пожелание - высказывайтесь по теме, общефилософские рассуждения мне мало помогут.
4) Поищите интересные повторы игр. Возможно, сам гляну на replays.wesnoth.org и ладдере, но я не знаю, кто там сейчас "в ударе", т.к. давно не играл. Напишите ники опытных игроков, в чьих повторах высок шанс найти какие-нибудь интересные стратегические/тактические решения.
5) В отдалённой перспективе - тестирование ИИ, разбор его ошибок, как бы вы поступили на его месте и т.д. Опытные игроки, которым это интересно, приветствуются. Но всё это будет не раньше, чем мой ИИ хотя бы начнет передвигать юнитов по полю боя. :D
Пока всё.
« Последнее редактирование: Декабрь 08, 2015, 18:10:54 от gs_fx »
кривость рук всегда отличала моих бойцов :)

DV

  • Глобальный Модератор
  • level 5
  • *****
  • Сообщений: 1295
  • Это - Стилфист в молодости.
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 38.0 Firefox 38.0
    • Просмотр профиля
  • Раса: Мертвец
Re: ИИ для веснота
« Ответ #1 : Декабрь 09, 2015, 11:46:13 »
имеется такое предложение - улучшить для начала алгоритм выбора атаки, которой боец будет отвечать на атаку противника. Прежде всего это важно потому, что применимо не только в битвах "человек против компа" но и в "человек против человека", а сейчас, как мне кажется, выбор преследует немного не те приоритеты (кода не вскрывал, ввяснял эмпирически) - а именно: надавно сделал юниту-магу атаку, которая сама имела 0-0 урона, но и вражеский урон обнуляла тоже. причем сделано все было стандартными инструментами вмл и правильно отображалась в окнах атаки и рассчета возможных повреждений, то есть ИИ знал о том, что у него есть вариант в котором ни атакующий ни обороняющийся не получат вообще урона - и тем не менее упорно продолжал защищатся посохом с 9-2 урона даже тогда, когда маг оказывался в смертельной опасности и без шанса уничтожить противника. Имхо, бардак это - для обороняющегося юнита приоритетом должна быть собственная безопасность, а не максимизация ответного урона - урон он сможет понаносить на своем ходу, если выживет. Понятно, что в дефолте от выбора обороняющимся атаки не зависит то, сколько урона он получит, но ведь если алгоритм улучшить соответствующим образом в дефолте ничего и не изменится, а в эрах, где есть выбор между атакой, дающей больше защиты и атакой, наносящей больше урона - пусть выбирает защиту. Такие дела.
Возглавляет силы зла

gs_fx

  • Эксперт
  • level 2
  • ***
  • Сообщений: 221
  • Mountain Trolls [MT], Тролль-Воин
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 48.0.2564.0 Chrome 48.0.2564.0
    • Просмотр профиля
    • E-mail
  • Раса: Человек
Re: ИИ для веснота
« Ответ #2 : Декабрь 09, 2015, 12:48:14 »
Доброго времени уток.
К сожалению, выбор ответки в защите "hardcoded" (хорошего аналога из русского в одно слово не придумал, но смысл в том, что это заложено в коде самого Wesnoth'а на C++ и не поддается модификации со стороны аддонов). Конечно, Wesnoth - игра с открытым исходным кодом, и любой желающий попробовать модифицировать это место в коде (например, если объявлена соответствующая функция lua/formula для выбора, воспользоваться ей, а иначе использовать стандартный выбор). К сожалению, я себя таким желающим назвать не могу.
Можно отправить такой реквест разработчикам, возможно они возьмутся за это. Ну а когда такая возможность будет запилена в C++, я (и любой другой разработчик для своего аддона) сможет организовать выбор оружия для любого отдельно взятого юнита/группы юнитов/всех юнитов по любому другому принципу.
кривость рук всегда отличала моих бойцов :)