Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AI
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > In the Wake of Gods
Страницы: 1, 2
Eldhenn
Ув. WoG team! скажите, работа AI в игре как-то зависит от вас? Потому что я обнаружил тут такую багофичу - в режиме автобитвы мой командир усиленно кастует Heal на совершенно здоровых юнитов.
Anubis
Не у тебя одного.Если так страдаешь не ставь автобитву так лучше или сыграй в SoD.
Командир кастует всю магию,а потом начинает биться интересно...То есть он использует все маг.способности
Была бы прога позволяющая управлять Ai,вот в Starcraft-e...
NordStar
В свое время, еще на прошлом форуме я поднимал вопрос о расширении AI через ERM. Тогда это ничем не закончилось, ибо у меня совсем другие появились задачи по жизни (жена беременная была), а от разработчиков скриптов можно было только услушать - "возьми да сам и напиши", хотя, реально, понимали что многое из того что предлагал сделать было элементарно (ну в частности вопрос использования снадобий (potions) компом).
Конечно, полноценное управление AI через ERM врядли реально, просто во многих скриптах (стандартных), по крайней мере в версии 3.57, посещение AI новых объектов ничем не заканчивалось, возможно я не прав относительно последней версии (не разбирался в скриптах пока).

Предлагаю подумать в этом направлении.
NordStar
Никто думать не захотел.... dry.gif

Всегда мечтал о дипломатии в героях - о заключаемых и распадающихся альянсах. Идея для алгоритма для ИИ имеется.
noble paladin
може стоит предложить не писать скрипты а хотя бы идеи собирать - кому что не нравится в героях (ИИ) и что нужно добавить кремниевому интеллекту. а будет идти обсуждение - глядишь и писать начнут
NordStar
Ну так давайте. Я обязательно напишу что в загашниках имеется yes.gif
deagle
Цитата(noble paladin @ 29 Mar 2005, 19:09)
може стоит предложить не писать скрипты а хотя бы идеи собирать - кому что не нравится в героях (ИИ) и что нужно добавить кремниевому интеллекту. а будет идти обсуждение - глядишь и писать начнут


По моему, самое гадкое в AI , это дробление сильных армий сильного героя по слабым кучкам слабым героям. Это просто сводит на нет весь смысл игры (с компьютером). Эксперимента ради попробуйте в хот сите прокачать героя, собрать армию и передать на денек управление AI... Он такого начудит! fie.gif ЖИЗНЕННО необходим скрипт, заставляющий держать всех самых сильных и самых опытных юнитов у самого сильного героя, а остальных пусть "тулит" кому желает.


Добавлено ([mergetime]1112256526[/mergetime]):
И еще одно.
В 4-х героях, единственное что мне понравилось в ИИ, это его стремление "вынести" сильных юнитов, а не настрелять мелочи ! Согласитесь, потерять 7-й или 8-й уровень (пусть даже 1 или 2 зверюги) ГОРАЗДО неприятней чем пачку карапузов!
В этом направлении тоже стоит подумать
Efrit
Полностью поддерживаю deagle.
Никогда не забуду, когда, играю в одну карту (рандом, XL с подземкой), я вынес, как обычно, всех компов, кроме одного. А потом отыскал его на свою голову... Это была Сепхинороф с 50 ЧД, 90 Мантикорами и т.д. Одних Троглодитов было более 2000!
Так я не то что долго мучался, я вообще проиграл!
Хотелось, чтобы такое почаще бывало, а то я уже забыл, когда выносил компа позже 2-2,5 месяцев игры...
Dj_Kolan
Я эту идею тоже полностью поддерживаю! Гораздо приятнее сражаться с большим и сильным противником, чем с мелочью.
Horn
Конечно, очень бы хотелось более грамотного AI. Но что-то мне подсказывает, что средствами ERM'а сделать из этого покойника нормального игрока нереально. Единственно, что может получиться, это закрасить трупные пятна. unsure.gif А тогда, спрашивается, стоит ли это потраченных усилий?
Поэтому я был бы рад точечному исправлению нескольких очевидных дефектов поведения компа. Это, к примеру, выманиваемость его из замка на стратегической карте, или то, что в определенных ситуациях он не вылетает из-за стен крепости при осаде (в одном из последних оффлайновых турниров Лиги таким макаром на первом месяце гарпиями был забит отряд из 7000 архидьяволов shok.gif).
А в остальном... как говорил Штирлиц некоей Габи - "как шахматный партнер Вы меня не интересуете." nunu.gif spiteful.gif И этого скриптами не изменить.
Anubis
Если пройтись по ВоГификации ,то можно заметно улучшить AI,
но все равно не подходит
А вот в StarCraft-e,ладно ,извините,пойду работать с aiscript.bin...
sergroj
Можно, например, увеличивать на какой-то процент армию самого крутого героя каждую неделю.
NordStar
У каждого есть удобные стратегии противника и есть неудобные стратегии. Когда долго играешь с компом, ты привыкаешь к его фокусам, находишь пробелы и начинаешь бить прямо в них, собсно играть именно против ИИ а не в героев. С человеком этот фокус не проходит и часто по первости даже сильный игрок может проиграть игроку среднему, если этот средний применяет пусть и не лучшую, но неклассическую стратегию. Потом, конечно, контригру найти можно, но не сразу.

Собсно я к чему - научить компа подстраиваться против конкретного игрока.
Есть набор параметров поведения ИИ (разведчик, строитель... стартовый город (а), герой (герои), динамика стратегии (если возможно налету менять стратегическое поведение ИИ)), играя с человеком, ИИ мог бы собирать статистику выигрышей и проигрышей (и их параметров) с конкретным игроком, и выбирать из набора стратегий наиболее неудобные под этого конкретного игрока, т.е. учился бы. Метод этот не нов, но вроде как голым ERM сие не реализовать.

Еще один интересный вариант усиления игры ИИ, правда трудно сказать на сколько это реализуемо, ибо здесь должна быть возможность на лету менять союзы, - индекс отношения. Тоже не самая свежая идея, в частности применяется в ГЕНЕРАЛЕ. Смысл в том, что чем сильнее игрок, тем хуже к нему отношенее, и тем выше вероятность заключения союза против него. Введение такого индекса + возможность смены союзников "на лету" дало бы возможность в полной мере дипломатию ввести в игру (мечта моя потайная %))
Beavis_seattle
Цитата
Еще один интересный вариант усиления игры ИИ, правда трудно сказать на сколько это реализуемо, ибо здесь должна быть возможность на лету менять союзы, - индекс отношения. Тоже не самая свежая идея, в частности применяется в ГЕНЕРАЛЕ. Смысл в том, что чем сильнее игрок, тем хуже к нему отношенее, и тем выше вероятность заключения союза против него. Введение такого индекса + возможность смены союзников "на лету" дало бы возможность в полной мере дипломатию ввести в игру (мечта моя потайная %))


Вот это круто good.gif yes.gif

мож сам попробую чё нить написать rolleyes.gif crazy.gif
†Lich†
да AI туп как дрова ...
помню бился я как-то раз с компом и остался у меня 1 архидьявол а у него 3 пачки по 100 дерьмоголемов (простите по другому рука не поднимается назвать элементов земли) и я всего за 40-50 мин их всех своею косою то и покосил... глупый AI бегал за моим дьяволом всеми 3 пачками вместе, а разбросать их по углам у него мозгов не хватило...
Kalaidh
Есть идея как улучшить боевой геройский интеллект. Просто как дополнение к какому-то механизму логического вывода (хотя бы стандартному). Если у ИИ не сорвет крышу окончательно, то все должно работать smile.gif. Идея выглядит следующим образом:
1)Пишется небольшой ERM скриптик, который мониторит действия игрока в бою (инфу про то, где какой юнит игрока/врага стоял, куда игрок пошел, что скастовал...)
2)Каждый ход при помощи !!UN:N5 нужные переменные сохраняются в *.ini.
3)Когда файлик вырос до нужных размеров, человек посылает его мне.
4)Я пишу прогу, которая пережевывает присланные файлы и создает базу знаний.
5)Я пишу другую прогу, которая по заданной ситуации в игре смотрит в эту базу и говорит, что делали игроки в похожей ситуации. В принципе, все работает довольно быстро, так как база размером небольшая (пара (десятков, сотен wink.gif Мб) и разбита на несколько файлов по темам (просто бой, осада, защита замка, стрельба, ходы драконом...). В результате - комп играет почти как человек (если ситуация в базе), или как обычно. Эту базу, если что, легко исправить/дополнить.
Тут нужно только на стадии пережевывания определить понятие стратегии поведения, чтобы комп своими ходами сам себе не противоречил. Но, наверно, придумать что-нибудь можно.
Но есть одна Проблема - рельеф. Сохранять его в базе - не самый лучший выход, все равно он каждый раз другой (?). Наверно, надо выделить шаблоны рельефа, или считать расстояние от одного юнита до другого...
В приципе, можно попробовать написать эту экспертную систему (подобные компоненты есть в продвинутых шахматных программах, кажется, была в Deep Blue, на несколько Гб), нужна только поддержка общественности и геройских Гуру.
Я бы ее, быть может, уже и написал бы, если бы ее было куда подключать gigi.gif.
Beavis_seattle
ohmy.gif blink.gif

это... блин... ну ты ваще good.gif yes.gif

тока можно ли это реализовать полностью ? banghead.gif
нужно мнение модеров и команды WoG rolleyes.gif
NordStar
В шахматных программах есть база стандартных положений, дебютов, алгоритмов эндшпилей и пр. Но держится сия база на тысячелетнем опыте шахматной науки, здесь такую базу не создать так быстро.

Гараздо продуктивнее было бы (если это технически возможно, на что может ответить только ZVS) написать свою процедуру обработки хода в битве. Сверхсложного здесь нет ничего (алгоритм дерева + оценочная функция), но потрудится конечно нужно. Теория таких процедур разработана очень хорошо, теже студенты 2-3 курсов пишут зачетные програмульки по этой тематике, и на современных компах просчитать в играбельное время ходы противников в битве на глубину в 4-5 ходов не так уж сложно. Правда комп действительно задумывался бы, и даже при игре с компом имело бы смысл вводить ограничение времени на битву.

Так что проблема только в перехвате процедуры "обмозговывания", которая, как кажется, сделана в оргинальных героях очень топорно.
Dj_Kolan
Цитата(Kalaidh @ 02 Jun 2005, 00:20)
Есть идея как улучшить боевой геройский интеллект. Просто как дополнение к какому-то механизму логического вывода (хотя бы стандартному). Если у ИИ не сорвет крышу окончательно, то все должно работать smile.gif.
.......
.......
В приципе, можно попробовать написать эту экспертную систему (подобные компоненты есть в продвинутых шахматных программах, кажется, была в Deep Blue, на несколько Гб), нужна только поддержка общественности и геройских Гуру.
Я бы ее, быть может, уже и написал бы, если бы ее было куда подключать gigi.gif.

Очень хорошая идея, очень!!! good.gif
Готов помочь. Что нужно сделать? yes.gif
Calaidh
2NordStar
Мне кажется, что дерево получится чересчур ветвистым smile.gif. Хотя, тут важно понять, что важно для алгоритма, а что нет... А для экспертной системы просто принимаем аксиому, что человек играет лучше компьютера.
Конечно, только на ее основе ИИ написать не получится, но как дополнение, мне кажется, она очень неплоха. И даже при не очень большой базе игрок уже не сможет точно предугадывать действия компа.
Статистика действий игрока - хорошая вещь. Мне кажется, что для боя самое простое, что можно сделать - вести учет используемых игроком заклинаний. А потом защищать сответсвующего своего юнита или диспеллить вражеского...

2Dj_Kolan
Рад, что ты хочешь помочь! Только сначала нужно узнать, можно ли подключать свой код к героям, ведь средствами erm хорошую базу не напишешь (хотя если можно читать/писать файлы в ini, то почему нет wink.gif).
Если да, то сначала необходимо будет создать erm скриптик, который считает расстояние от монстра до монстра с учетом рельефа. Этот скрипт написан, только производительность не радует (он рекурсивный с эвристикой, но замера расстояния от какого-нибудь кавалериста можно и не дождаться wink.gif)). Нужно другой алгоритм, если кто-то возмется, то будет хорошо.
Части, которые обходят всех юнитов врага, уже написаны (работают быстро и абсолютно незаметно на Celeron 2GHz). Потом написать скрипт, оздающий базу.
Потом надо раздать этот скрипт возможно большему числу людей, и они, играя, будут создавать базу. Перед запуском они честно поставят себе оценку своих знаний 1 - 10, и эта оценка будет их приоритетом в базе.

Экспертную систему легко реализовать, и результат хороший. Если бы не получилось, то можно слегка урезать полномочия этой системы - пусть решает, например, в кого стрелять, что кастовать, и когда жать на wait - мне кажется, что с этим она точно справится.

Вопрос команде WOG: можно ли реализовать подключение своего кода к Героям, например средствами Erm (e.g. !#DL<имя dll>:Rххх; Зарегистрировать функцию dll за !!FUххх и передавать параметры этой функции как обычной FU). Или как-нибудь по-другому.
NordStar
Цитата(Calaidh @ 02 Jun 2005, 11:31)
Вопрос команде WOG: можно ли реализовать подключение своего кода к Героям, например средствами Erm (e.g.  !#DL<имя dll>:Rххх; Зарегистрировать функцию dll за !!FUххх и передавать параметры этой функции как обычной FU). Или как-нибудь по-другому.

Очень давно этот вопрос уже задавался мной (еще на старом форуме) и ответ был очевиден biggrin.gif Естествено создать такую команду можно, но никто ее делать не собирается по причине того, что явная дыра безопасности.

Кстати, на счет кустистости дерева, не так это и страшно. Разве мозгов мало сейчас у современных машинок? У тех же шахмат отнюдь кустистость не меньше будет, а то и побольше. Вопрос в другом - оценочная функция, которая, как известно складывается из тактической оценки и материальной оценки. Не слишком проработанный в гороях момент и вот тут, как раз сбор статистики ОЧЕНЬ нужен. В частности мне, как координатору NTG такая статистика была бы очень полезной для балансинга юнитов города, что задача не очень уж простая.

Добавлено ([mergetime]1117704828[/mergetime]):
P.S. Если уж можно было бы подключить внешний dll к героям, то не было бы смысла в скрипте сборщике статистики, лучше уж это было бы просто кодом решить. Быстро и со вкусом.
Dj_Kolan
2 Calaidh (Kalaidh)
Эх, жаль, я в скриптах не силён. sorry.gif Вечная моя проблема -- скрипты. Всё-таки надо когда-нибудь пересилить себя, сесть и выучить хотябы половину...
Calaidh
2NordStar
Понимаю, безопасность... А то еще появятся вирусы для WOG biggrin.gif .
А то можно было бы криптографию привернуть, тот же RSA, и пусть WOG team сертификаты раздает (они наверно очень обрадуются этому новому развлечению, тестировать присланные dll или исходники).
Значит будем ждать, что сотворит coff.
А зачем у юнитов параметры combat value и fight value? Неужели по ним компьютер и думает?
NordStar
Цитата(Remedy @ 10 Jun 2005, 18:17)
NordStar – проблема вся в том, что алгоритмизация AI –
чрезвычайно сложный с точки зрения математики процесс.
Вы скажите – мол открыл Америку – здесь я как раз подчеркиваю –
что настолько сложный – что без университетского, математического образования вопрос не решается – уж точно.


Ну прям таки все так грустно biggrin.gif

Цитата(Remedy @ 10 Jun 2005, 18:17)
Метод перебора вариантов отпадает – поскольку оно превышает шахматный расклад, где-то в [(pi/6)*(sp-1)^2]*c+g(a) (pi=3.14; sp-скорость монстра; с – магия в книге; g(a) – другие факторы (пропустить ход – ждать, магия и т.п.)  ) – как правило нужно просчитывать как минимум на 5 ходов вперед – и в итоге мы получаем огромные числа (5 ходов – это 2^17 вариантов – не думаю, что это будет быстро ...) ( тут много неточностей – во первых – гексагональная площадь не описывается кругом – на самом деле там формула кажись такая: S=1+{сумма от 1 до sp по i}(6*i) =1+6*((sp^sp+sp)2) - ну и погрешности в превышении скорости за рамки поля и т.п. ).


Ломовой перебор естественно будет бесполезен. Действительно, юнит в героях имеет куда больше степеней свободы чем юнит в шахматах. Но скажите, сколько из всего множества ходов юнита действительно осмысленны? Мне кажется можно говорить о "тактических действиях", ведь во всем множестве ходов мы выбираем только немного основных - атака (кого-то), отход (в бок, назад), защита и т.д. Вариантов не так уж и много, следует только детально заняться и выявить такие осмысленные ходы, и тогда можно будет не переберать абсолютно все варианты ходов, а именно только ограниченный набор "тактических действий" юнита. А уже после предварительного просчета действий на уровне "тактических действий" наиболее перспективные варианты просчитать более глубоко - т.е. метод отсечение ветвей. В продвинутых шахматных алгоритмах используется нечто подобное для сокращения глубины перебора в бесперспективных ветвях.
Еще один вариант сокращения перебора - делить возможные ходы на "острые", связанные с активным обменом ударами и разменом материала, и на "спокойные". И снова это активно используется при програмировании ИИ.

Цитата(Remedy @ 10 Jun 2005, 18:17)
Есть ещё два варианта – 1) создать хорошею базу ситуаций и научить компьютер их видеть


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

Цитата(Remedy @ 10 Jun 2005, 18:17)
2) научить компьютер «думать» лучше
Для этого нужно разработать совершенный механизм функции оценки ситуации.

Ремеди, любой алгоритм ИИ должен уметь оценивать ситуацию, все на этом строится. А вот вопрос как оценивать, действительно не простой. Как я уже писал, классически оценочная функция включает в себя материальную часть (перевес по юнитам) и тактическую часть (более выгодное построение и др.). В случае героев, есть еще и стратегическая состовляющая - нужно битву рассматривать в связи с партией вцелом.
Вот тут действительно все очень не просто и нужен серьёзный анализ.
Цитата(Remedy @ 10 Jun 2005, 18:17)
К сожалению, я не имел возможности сталкиваться с программированием AI,
но зато сделал большие успехи в воссоздания баланса на гексагональном поле
(и потом как выяснилось – и первое и второе тесно связаны между собой,
хотя не без своих).
Что там особенно интересно – так это введения характеристических функций,
которые определяют оценку ситуации по возможной подсистеме вариантов.
Другими словами – это своего рода тоже база ситуаций –
только смоделирована чисто математически.
Этими же функциями удобно описывать «критические точки»  тактической фазы.
Вот хороший (правда банальный) пример – 1-а бабочка валит n-големов за x количество ходов.
То есть глобальная характеристическая функция анализа содержит подфункцию анализа скорости юнитов.
(цикличность процесса по замкнутому контуру – при максимальном удалении от объекта  с учетом вероятности срабатывания «боевого духа»(ну если не голем) )
Вот эта функция, как по мне – то не такая уж сложная – один вечер работы.
Цикличность по замкнутому контуру – можно посмотреть что-то по криволинейным интегралам второго порядка по кривой – или ещё проще – с полями поигратся; удаленность - простое распределение материальной точки от заданой в конечном объеме). Но, к сожалению, таких ситуаций не много – а как правило – все намного сложнее.

В общем – если у кого-то будут какие-нить идеи и ваш ваши знания высшей математики на высоте –
с удовольствием вмести буду раз исследовать другие интересные функции.

И ещё – если кому не трудно – доработайте до конца функцию «по скорости юнитов».
У меня просто времени не хватает выложить все на язык математики.
А это нужная вещь – можно сделать, что бы AI тоже так действовал в похожих ситуациях.
А если копнуть глубже – то я уверен,
что на основе «игры по контуру и максимальным отдалением»,
можно реализовать ещё как минимум 5 игровых ситуаций.

Пишите на remeddy@mail.ru

Это как раз ты и занимался анализом тактической состовляющей оценочной функции - стандартные алгоритмы. Просто это частности, хотя и верные.
deagle
Цитата(NordStar @ 10 Jun 2005, 19:06)
Цитата(Remedy @ 10 Jun 2005, 18:17)
Есть ещё два варианта – 1) создать хорошею базу ситуаций и научить компьютер их видеть


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


Этого для 3.59 будет вполне достаточно! О таком сейчас и так только мечтать можно. Пусть это будет даже небольшая база основных ситуаций, когда ИИ делает глупости... Такая база ситуаций уже сделает игровой процесс на порядок интересней (это основное, не забыли? smile.gif gameplay gamplay и еще раз gameplay) А нюансы работы ИИ и высшую математику можно оставить на следующие апдейты. А то не получим ни того ни другого.
NordStar
Ок.
Давайте тогда сюда скидывать ляпы ИИ и правильные алгоритмы его поведения в описываемой ситуации.
Формат:
1. Признаки ситуации (как ее однозначно можно распознать)
2. Что сейчас комп делает не так
3. Как нужно - четкий алгоритм.
deagle
Цитата(NordStar @ 13 Jun 2005, 10:40)
Ок.
Давайте тогда сюда скидывать ляпы ИИ и правильные алгоритмы его поведения в описываемой ситуации.
Формат:
1. Признаки ситуации (как ее однозначно можно распознать)
2. Что сейчас комп делает не  так
3. Как нужно - четкий алгоритм.


1. Самый главный в бою недостаток - кастование магии раньше времени и "не туда", т.е. ситуация - возможность наложить каст. А также неправильная расстановка приоритетов целей. т.е ситуация - возможность сделать ход юнитом.
2. все не так.
3. Предлагаю 3 равновероятные стратегии, которые выбираются случайно или в зависимости от силы армии своей/врага/класса героя/динамических рангов. Перед началом боя армии врага и свои ранжируются по силе, т.е. самые слабые югиты получают 1 ранг, самые сильные - 7-й ранг. В бою ранги пересчитываются динамическикаждый раунд с учетом призванных существ. Ранг зависит от типа юнита, его количества в группе и апа. Ранжировать можно разными методами, ничего сложного тут нет.
а. Магическая. Простое правило из мира фэнтези (не помню где читал)- кто кастует первый, тот проиграл. т.е. ИИ ждет каста врага и только потом свой бросает (желательно противоположного действия, приоритет экспертным). При этом выбирается самый сильный юнит врага (или свой) - максимальный ранг. Или если есть возможность полностью "добить" остатки какой-нибудь группы юнитов - добивает.
б. Оборонительная.
ВСЕГДА закрывать стрелков (выбирает самых сильных) - макс. ранг.
Никогда не ходить раньше своей очередности после паузы.
в. Атакующая.
Атака сразу допустима только в двух случаях - при условии что атакующая группа может нанести существенный урон (в процентах от общего хп - к примеру, больше 50%) юнитам врага с рангом больше заданного (к примеру 4). 2-я ситуация - возможность сразу добить юниты с рангом больше 6-го или стрелков максимального ранга.
gamecreator
Недавно видел, как AI стоял не одном месте целую неделю.
Efrit
Баги AI? Ein Moment!
Возьмём очень известную ситуацию: комп надает на ваш город, в котором есть только мизерная охрана - что-то вроде 2 гремлинов и одной гаргульи (если нападаает на Башню). 200% сложность. У компа, предположим, чуть меньше недельного найма. Башня лучников проходила, снесла почти всех стрелков. Ход компа.
Как действует комп? Тут есть два случая:
- у вас (обороняющегося) есть герой.
Тогда вы, естественно, бахаете по комповской армии атакующей магией (поначалу волшебными стрелами, если есть сильнее - то другими). Комп знает это. Но в большинстве случаев он не поступает точно также (то есть не бьёт магией ваших юнитов), а ложит ... ЗАЩИТУ от магии! То есть, если вы бьёте ударами молний, то он ложит защиту от Воздуха. Особенно часто комп любит так делать, если у него та магия экспертная и он сможет защитить ею всех. То вы в связи с этим выигрываете драгоценное время и башней лучников расстреливаете часть его стрелков. Если добавить к этому любовь компа к усиляющей магии (ускорение или жажда крови), то времени выигрывается немало, а значит, можно получить реальные шансы на победу, оставив его с одной пехотой.
Комп - лох!
- второй случай: если у вас нет в городе героя (только одни юниты).
Тогда вы либо защищаетесь пехотой, вылетаете летунами (посли вейта, естественно) и встаёте перед его скоростными стрелками, а стрелками - стреляете. Что делает комп? Он, вместо того, чтобы применить убойную магию (типа файрбола), начинает ... ОСЛАБЛЯТЬ ваши войска! Опять же любит он это делать, когда соответствующая магия у него на эксперте. Наприммер, редкий комп отказывается от экспертной медлительности в начале битвы. А это опять же позволяет выиграть время, и если не выиграть битву (что без героя в замке всё же редкость), то избавить компа от нескольких стеков.
Комп - лох!

И, приведу ещё два примера с последней моей игры.
1. На меня нападает комп с 1 Древним Чудищем, другой армии нет. У меня - 3 беса, нет даже героя. Отстроен Замок.
Казалось бы, ну коли нет стрелков и летунов, ну бей ты магией! Ан нет, это же AI! Он начинает ... ЛЕЧИТЬ Чудика! Естественно, что силы магии для полного излечивания у него не хватает, и Чудик остаётся повреждённым. Через три хода он погибает.
2. На этот же (!) город нападает герой с 4 личами, разделёнными в 4 стека. Башня лучников сносит 3 стека, остаётся 1 лич. Ну примени ты Волну Смерти! Ан нет, он ... восстанавливает лича!!! У него становится два стека по 1 личу в каждом, которые за ход сносят 2 бесов, а один выживает. Следующий ход, башня лучников добивает компа.
Комп - лох!
Вывод: для AI (по его мнению) лучше оставить армию противнику, чем лишиться части своей. Поэтому он и защищает свои войска от магии и лечит их. Но Башня лучников, очевидно, не входит в его планы. Отсюда такие ляпы.

Воможное решение проблемы: при нападении компа на город уменьшаем стоимость бьющих заклятий (допустим, в полтора раза, а стоимость остальных увеличиваем в это же количествро раз. После применения им бьющей магии, чтобы было честно, забираем "удешевление" маны и, соответственно, отдаём "удорожание" маны после применения небьющей магии. Казалось бы, какая разница? Но перед применением магии комп будет видеть, что ему выгоднее будет стукнуть бьющей (вот!). А про "удорожание" и "удешевление" он не знает.

Ну, вот. Я грамотно описал ситуацию smile.gif
*Pirat*
Цитата(Efrit @ 15 Jun 2005, 09:48)
Баги AI? Ein Moment!

***********

"Ну, вот. Я грамотно описал ситуацию smile.gif


Да таких тормозов у компа сотни, не стану их даже перечислять.
Он даже не использует всех заклов, например - Берсерк.

И интересный факт, когда AI бежит с поля боя, куда деваются деньги, за счёт которых он здаётся, или может он удерает всегда за бесплатно, спасая только героя. Если так, надо было бы сдельть, чтобы он спасал и войсько.
А может я не знаю, он платит за здачу, а деньги, сделано специально, чтобы не доставались мне. Как оно есть?
gamecreator
Между прочим AI умеет использовать атакующую магию (и при осаде замка тоже)!
*Pirat*
Цитата(gamecreator @ 21 Jun 2005, 18:49)
Между прочим AI умеет использовать атакующую магию (и при осаде замка тоже)!


Плохо использует - под конец хода почти всегда.

В общем, надо как-то хором постараться и собрать максимально большое количиство ляп ИИ, с помощью которых можно будет когда-нибуть написать нового ИИ или конкретно исправить старого.

Вот какие я заметил ошибки в ИИ:

1. Не обращает внимания на систему опита стрелковых башень. Тоесть, ИИ нападает на мой замок первый раз, проигрывает, а потом нападает второй раз неучитывая того, что опит стр. башень вырос. Таким образом ещё пару таких оборон и мой замок превращается в чёрную дыру, которая притягивает, и из которой никто не возвращается (разве что герой, со стрелой в жопе своего коня biggrin.gif).

2. Чего-то ИИ почти всегда применяет боевые заклы под конец хода, хотя эфект из них всегда больший, если их применить в начале.

3. Сильные герои ИИ, так, как и слабые, собирают ресурсы, посещают ненужные объекты на карте, теряя при этом много драгоценного времья.
Я считаю, что такую, можно так сказать - проблему, надо устранить в первую очередь. Это уже был бы большой плюс в сторону ИИ.

4. Я ещё такое заметил
Когда в ИИ армия посильнее за мою, в бою он действует на 4+. Но когда армия у него слабее за мою, он в бою начинает глупить.
gamecreator
Цитата(*Pirat* @ 22 Jun 2005, 15:43)
4. Я ещё такое заметил
Когда в ИИ армия посильнее за мою, в бою он действует на 4+. Но когда армия у него слабее за мою, он в бою начинает глупить.

Также AI не нападает на замок, если у него армия не намного сильнее той, что в замке, хотя наличие сильных юнитов дает ему большие шансы на выигрыш!
marius24
Цитата(*Pirat* @ 22 Jun 2005, 14:43)
3. Сильные герои ИИ, так, как и слабые, собирают ресурсы, посещают ненужные объекты на карте, теряя при этом много драгоценного времья.
Я считаю, что такую, можно так сказать -  проблему, надо устранить в первую очередь. Это уже был бы большой плюс в сторону ИИ.


Поддерживаю! Я как то уже предлагал такую идею. Человек не стал бы терять времья на такое.
gamecreator
Часто можно увидеть, как AI тратит время на бесполезные переходы с одного места на другое. Это может длится несколько секунд, минут, часов или, может быть, до конца игры!

Еще когда игрок нападает на AI, у которого нормальная армия, когда очередь доходит до компа, то он запускает в противника волшебную стрелу или молнию и убегает, хотя мог бы нанести потери игроку. Убежавшего героя AI нанимает не всегда.
noble paladin
самый болной поступок ИИ, который иногда может выйти боком уже человеку - то что он часто хайендами долбит...боевые машины. Не глупо ли? если ты спец-артиллерист уровня эдак 18, то купив пару стрелок в битве будешь иметь минимум 20 баллист, которые порешат много мелочи. Ну сломает он баллисты, палатки...а толку? ИИ потратил ход, за что ходивший юнит тут же огребся по полной. следующий ход - тоже самое. к концу боя у человека нет боевых машин, а у уомпа нет армии. зато я добежав до ближайшей кузни ситуацию исправлю, а вот комп вряд ли.
С другой стороны, иногда он сначала решает войско ,а потом не обращая внимания ни на что начинает кромсать деревяшки. это уже лучше, тем более если он победит то должен по идее получить опыт и за разбитыке машины. хотя что он там имеет...
еще ляп: комп в бою - либо ВСЕХ на передовицу (исключение стрелки) либо всех на вейт. с другой стороны некоторые юниты (теже пегасы) на ассе могут дамажить и сваливать обратно. поччему он етим не пользуется, если не может достать? кастанул хаст, массхаст, молитва или контрудар (особ на эксперте) и плохо кому-то будет...
Иногда как фанатик бегает по ресам, хотя с такой армией можно склады циклопьи вскрывать без потерь. но сдругой стороны, если он нашел городской драг ресурс, которого ему счас позарез не хватает, то пусть берет - на ето можно потратить ход. (тут можно сделать так что после 15 уровня напрмер он перестает бегать по рудникам либо пусть таскает с собой напарника, который под прикрытием сильного коняшки ворует все что плохо лежит - так было бы лучше, и врага можно измотать особенно в начале и слабачок не получит по шее безнаказанно)
зы. пока все. судя по тому что каждый приводит свой опыт, то стоит реализовать базу знаний. добавить в 3.59 сборщик инфы о том что творит человек в игре (как строится, каким приоритетом ставит рудники если ресов хватает, как ведет себя в битве... может не лишне былобы после етого подкорректить fight-values кричей)
NordStar
То что описал Нобль - это свежезапеченные баги WOG. История их появления совершенно очевидна и риторические вопрсы на самом деле давно имеют ответы.
Когда придавали новые способности старым юнитам, то добавляли именно СПОСОБНОСТИ, но никто специально комп пользоваться ими не учил, очевидно не так это просто - обучить компа новым возможностям и юнитов и игры. Так что на вопрос "почему криво использует крутых пегасов?" - ответ как раз совершенно ясен.
Вот на вопрос "что делать?" ответа нет. Чую, что скриптами это не поправить.
deagle
Идея насчет безтолковой беготни по шахтам и объектам посещения героев ИИ:

Есть скрипт передачи объектов карты игрокам... А что если, начиная с некоторого дня (когда эта беготня уже не так нужна в принципе), в начале каждого хода текущего компа:
1. Сохранять состояние всех объектов на карте (чей или нейтрален и посещен или нет)
2. Делать все нейтральные объекты принадлежащими данному ИИ smile.gif
3. Устанавливать флаг посещения всех объектов в "посещен" - это можно сделать, так как есть скрипт ежемесячного обновления посещаемости одноразовых объектов, както ж он обновляет флаги?
4. Отдавать ход искусственному идиоту

а в конце хода возвращать все на свои места.
Да, есть недостатки... Но зато какие преимущества! Может быть комп начнет играть на порядок лучше! подумайте... ведь что главное в героях? ИМХО, передвижение по карте мира. Если ИИ будет считать, что "все его", может он решит наконец занятся войной а не беготней туда-сюда?? spiteful.gif
*Pirat*
Цитата(deagle @ 29 Jun 2005, 12:24)
Идея насчет безтолковой беготни по шахтам и объектам посещения героев ИИ:

Есть скрипт передачи объектов карты игрокам... А что если, начиная с некоторого дня (когда эта беготня уже не так нужна в принципе), в начале каждого хода текущего компа: 
1. Сохранять состояние всех объектов на карте (чей или нейтрален и посещен или нет)
2. Делать все нейтральные объекты принадлежащими данному ИИ smile.gif
3. Устанавливать флаг посещения всех объектов в "посещен" - это можно сделать, так как есть скрипт ежемесячного обновления посещаемости одноразовых объектов, както ж он обновляет флаги?
4. Отдавать ход искусственному идиоту

а в конце хода возвращать все на свои места.
Да, есть недостатки... Но зато какие преимущества! Может быть комп начнет играть на порядок лучше! подумайте... ведь что главное в героях? ИМХО, передвижение по карте мира. Если ИИ будет считать, что "все его", может он решит наконец занятся войной а не беготней туда-сюда??  spiteful.gif


Интересная идея, но недостатков-таки хватает. ИИ и так долго ходит, а тут пока ещё все нейтральные объекты передадутся ИИ...., а потом обратно.... и таких ИИ может быть подряд с 6.... и пока каждый походит. Недостаток также тот, что есть нужные нейтральные обекты, которые ИИ теперь не будет посещать. И кроме нейтральных обьектов на карте есть ещё ресурсы всякие, которые даже сильный ИИ собирает, а также обьекты, типа склеп,сокровищница гномов....
deagle
Цитата(*Pirat* @ 29 Jun 2005, 12:32)
Цитата(deagle @ 29 Jun 2005, 12:24)
Идея насчет безтолковой беготни по шахтам и объектам посещения героев ИИ:

Есть скрипт передачи объектов карты игрокам... А что если, начиная с некоторого дня (когда эта беготня уже не так нужна в принципе), в начале каждого хода текущего компа: 
1. Сохранять состояние всех объектов на карте (чей или нейтрален и посещен или нет)
2. Делать все нейтральные объекты принадлежащими данному ИИ smile.gif
3. Устанавливать флаг посещения всех объектов в "посещен" - это можно сделать, так как есть скрипт ежемесячного обновления посещаемости одноразовых объектов, както ж он обновляет флаги?
4. Отдавать ход искусственному идиоту

а в конце хода возвращать все на свои места.
Да, есть недостатки... Но зато какие преимущества! Может быть комп начнет играть на порядок лучше! подумайте... ведь что главное в героях? ИМХО, передвижение по карте мира. Если ИИ будет считать, что "все его", может он решит наконец занятся войной а не беготней туда-сюда??  spiteful.gif


Интересная идея, но недостатков-таки хватает. ИИ и так долго ходит, а тут пока ещё все нейтральные объекты передадутся ИИ...., а потом обратно.... и таких ИИ может быть подряд с 6.... и пока каждый походит. Недостаток также тот, что есть нужные нейтральные обекты, которые ИИ теперь не будет посещать. И кроме нейтральных обьектов на карте есть ещё ресурсы всякие, которые даже сильный ИИ собирает, а также обьекты, типа склеп,сокровищница гномов....

Этот минус легко превратить в плюс, если "направить" затуманенный интелектом взор ИИ на "нужные объекты", оставив их нейтральными! biggrin.gif . Степень их нужности можно определить хотя бы примерно на 3 шаге алгоритма. Ну а время хода... Чем-то ж надо компенсировать преимущества?.. диалектика как-никак. Я б подождал лишних xx секунд ради более умного ИИ.
*Pirat*
[quote=deagle,29 Jun 2005, 13:38]
Интересная идея, но недостатков-таки хватает. ИИ и так долго ходит, а тут пока ещё все нейтральные объекты передадутся ИИ...., а потом обратно.... и таких ИИ может быть подряд с 6.... и пока каждый походит. Недостаток также тот, что есть нужные нейтральные обекты, которые ИИ теперь не будет посещать. И кроме нейтральных обьектов на карте есть ещё ресурсы всякие, которые даже сильный ИИ собирает, а также обьекты, типа склеп,сокровищница гномов....
[/quote]

Этот минус легко превратить в плюс, если "направить" затуманенный интелектом взор ИИ на "нужные объекты", оставив их нейтральными! biggrin.gif . Степень их нужности можно определить хотя бы примерно на 3 шаге алгоритма. Ну а время хода... Чем-то ж надо компенсировать преимущества?.. диалектика как-никак. Я б подождал лишних xx секунд ради более умного ИИ.
[/quote]

Согласен, но можно ли это всё реализовать с помощью скриптов и кто за это возмётся?
Nightingale
Я не уверен, но по-моему эта идея почти нереализуема. И вот почему:
Цитата
1. Сохранять состояние всех объектов на карте (чей или нейтрален и посещен или нет)

Для тоо, чтобы сохранить информацию по стольким объектам на карте, понадобится огромное количество переменных - их может и не хватить (сейчас есть только 10000 v-переменных).
Для проверки этого я написал небольшой скрипт, который считает в начале игры количество объектов каждого типа на карте. Все результаты здесь приводить не буду, скажу лишь, что на средней XL-ке насчиталось 49 шахт, 10 нейтральных городов, 182 артефакта на карте, 146 банков существ, 102 двеллинга, 67 генераторов ресурсов, 73 magic shrine'ы. Я молчу об 869 монстрах. kap.gif
А ведь для каждого из объектов придется хранить его 3 координаты (чтоб отличать один объект от другого), не говоря уже о владельце или флаге посещено\не посещено.
Разве что попробовать хранить в каждой переменной по куче информации, храня инфу в разных битах переменной...
Но долго же тогда придется писать этот скрипт, и еще дольше он будет выполнятся. Да и ужать количество используемых переменных вряд ли удастся до числа меньшего чем 1000.
Ennin
у каждого объекта карты есть свои PO-переменные. Смотрим !!PO
Bourn
Цитата(noble paladin @ 24 Jun 2005, 07:46)
самый болной поступок ИИ, который иногда может выйти боком уже человеку - то
................................................................................
............................................
обы после етого подкорректить fight-values кричей)

Это было и в СОДе у меня причем постоянно, так что ВОГ ничего нового не преподнес с атакой AI боевых машин, единственное что хорошо их стало больше biggrin.gif

Добавлено ([mergetime]1120235658[/mergetime]):
Цитата(NordStar @ 13 Jun 2005, 11:40)
Ок.
Давайте тогда сюда скидывать ляпы ИИ и правильные алгоритмы его поведения в описываемой ситуации.
Формат:
1. Признаки ситуации (как ее однозначно можно распознать)
2. Что сейчас комп делает не  так
3. Как нужно - четкий алгоритм.

■У меня глюки с компом наблюдались при использовании ERM, когда специально перемещаешь героя AI на новую позицию, он
там так и будет стоять ждал на тестовой карте почти год, и он даже не сдвинулся.
■Заметно радует ситуация поведения компа при ходах на карте приключений, в СОДе сколько раз ты не перезагружался
(один и тот же автосейв) комп ходил только так как ему как будто бы задали, и никак иначе, в ВОГ же несколько раз
перезагружался и комп каждый раз ходил по разному.
sergroj
Тупость AI:
1) Часто комп бъет какого-нибудь дракона армией, которая его, в принцыпе, вынести не может.
2) Использует магию и стрельбу башен против слабых юнитов.
3) При игре с коммандерами комп оказывается в полном отстое. Надо сделать компу умное развитие коммандера.

Цитата(deagle @ 29 Jun 2005, 15:24)
Идея насчет безтолковой беготни по шахтам и объектам посещения героев ИИ:

Хорошая идея. Конечно, не при такой реализации. Для этого можно использовать !!AI. Для пересчета объектов определенного типа и получения их координат есть команды !!UN:U. Так что, сделать это вполне реально. Может быть, и не сложно.

Цитата(Bourn @ 01 Jul 2005, 23:34)
Заметно радует ситуация поведения компа при ходах на карте приключений, в СОДе сколько раз ты не перезагружался
(один и тот же автосейв) комп ходил только так как ему как будто бы задали, и никак иначе, в ВОГ же несколько раз
перезагружался и комп каждый раз ходил по разному.

Возможно, причина - уменьшение радиуса "думанья" AI (см. UN:J4). В WOG'е AI умнее точно не стал.

Наваял скрипт, заставляющий компа реже бить по боевым машинам. Правда, для этого балисту пришлось сделать одноклеточной. crazy.gif
Bourn
Огорчает что при начале битвы у компа автоматически выбираеться оруженосец, и скажу вам есть отличие кого бить титана или гремлина.
deagle
Цитата(Nightingale @ 01 Jul 2005, 12:53)
Для тоо, чтобы сохранить информацию по стольким объектам на карте, понадобится огромное количество переменных - их может и не хватить (сейчас есть только 10000 v-переменных).
...на средней XL-ке насчиталось 49 шахт, 10 нейтральных городов, 182 артефакта на карте, 146 банков существ, 102 двеллинга, 67 генераторов ресурсов, 73 magic shrine'ы. Я молчу об 869 монстрах. kap.gif
А ведь для каждого из объектов придется хранить его 3 координаты (чтоб отличать один объект от другого), не говоря уже о владельце или флаге посещено\не посещено.

Разве что попробовать хранить в каждой переменной по куче информации, храня инфу в разных битах переменной...

Да, но ведь и вопрос улучшения ИИ стоит усилий? Вся информация для хранения сводится к двум полям - номер владельца(3 бита)+1 бит признак посещено или нет. 4 бита на объект. Монстров и арты учитывать не нужно-хватит стандартного поведения ИИ. Итого, из перечисленного выше получается 40+10+146+102+67+73=438 пременных если по битам не бить. А если есть еще и собственные переменные - то вообще проблем быть не должно.А какая разрядность переменных кстати?
Кто в этом разбирается и напишет скрипт - это уже другой вопрос. надеюсь, есть энтузиасты smile.gif

ЗЫ. Кстати заметили, что костры ИИ игнорирует?
Dj_Kolan
Цитата(deagle @ 04 Jul 2005, 15:23)
ЗЫ. Кстати заметили, что костры ИИ игнорирует?

Конечно заметил yes.gif Комп не хочет брать костры, в которых есть мифрил.
sergroj
Исправил скрипт для отучения компа от боевых машин.
*Pirat*
Так будет ли каким-то образом изменен AI? Игра расширяется, количество опций увеличивается, а комп как был туп так и остаётся. Ясное дело, компу штучный интелект не прецепишь, но нужно же его хоть каким-то образом усилить. Вот такие примеры его тупости просто поражают:
- на мой замок напал комп. Башневые стрелки его практически разбили. Но когда в ИИ остался один юнит, стр. башня переключилась на его баллисту. И пока стрелки валили баллисту, то тот юнит вынес всех моих. Хотя видно было, что башня могла только за один ход вынести этого юнита.
- второй пример вообще убивает. У меня пустой замок. Возле него находится вражеский герой. Вместо того, чтобы просто забрать мой замок он разварачивается и топает в протевоположную сторону. Таких случаев у меня был с 5. Так это ещё к тому же на сложности импосибл!
Хотелось бы услышать, что по этому поводу думают разработчики нового города
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.