Не хочу сеть делать. Игру пишу от скуки. Ну или большой практичности. Ну кому нужно мое умение пользоваться графами. И я пишу не сам.) Помогаю своим друзьям.
почитать книжки, посмотреть исходники открытых движков. )) Вынести код, отвечающий за ИИ в скрипты(предоставить интерфейсы, колбэки и т.д.), и уже там играться.
В стратегии сразу можно выявить 2 типа интеллекта: 1)интеллект юнита(самооборона, преследование цели, обход препятствий, атака); 2)интеллект 'стратега' какие войска куда двинуть, что построить. Ну либо ещё больше, тогда, например: 2)будет интеллект 'генерала' (управление группировками войск и в каком месте атаковать(где меньше укреплений и сосредоточения войск противника)) 3)интеллект 'глобального стратега' чего сколько строить, сколько должно быть денег, где и когда развернуть вторую базу, когда следует атаковать.
Ну вот интеллект юнита (самый простой) я уже писал. Если есть рядом цель - атакуй.
А вот с интеллектом стратега нет вообще никаких идей. Собственно а что он вообще такое? Нейросети и графы отпадает, а больше способов интеллекта и я не знаю у компа.
Нейросети и графы отпадает, а больше способов интеллекта и я не знаю у компа.
есть ещё 'запрограммированное поведение', например.) Во всех крутых стратегиях(варкрафты,коммандэндконквайр, причём даже иногда бесит ибо они строят и расходуют ресурсы явно не по карману), по-моему это немалая часть поведения бота.
Ну т.е. вот нужно построить все виды зданий чтобы открыть все технологии, нужно по периметру построить оборонные башни, нужно захватить ресурсы(и рядом основывать дополнительные базы), нужно построить кучу юнитов и атаковать в самом слабом месте противника + часть оставить для обороны базы.
Я не буду рассказывать о нейронных сетях, генетических алгоритмах, цепях Маркова и прочих принятых парадигмах самообучения. Это связано с тем, что, по нашим данным, в компьютерных играх данные техники не оправдывают себя - результаты, полученные с помощью них, малопредсказуемы, и не обладают какими-либо важными преимуществами. Примерно по тем же причинам речь не пойдет ни о языках Lisp, ПРОЛОГ (в 2007 году я совсем не так уверен насчет Lisp'а), ни о нечеткой логике.
А вот с интеллектом стратега нет вообще никаких идей. Собственно а что он вообще такое? Нейросети и графы отпадает, а больше способов интеллекта и я не знаю у компа.
man Теория игр
На каждой итерации игры у каждого игрока есть определённый набор возможных действий, в ответ на эти действия другие игроки могут совершать определённый набор своих действий. Каждому действию можно присвоить определённую величину выигрыша или проигрыша (военная или экономическая мощь, количество юнитов, размер контролируемой территории и т.д.). Все возможные действия образуют дерево. Если количество вершин в дереве не астрономическая величина, то можно сделать полный перебор и выбрать наиболее оптимальную последовательность ходов. Если нет, то можно просчитывать варианты на несколько ходов вперёд, а дальше использовать оценочную функцию.
Интеллект стратега можно жёстко заскриптовать, чтобы ждал появления нужного числа юнитов и затем вел их к чужому главному зданию, атакуя все на пути к нему. Ну и про защиту базы при приближении чужих юнитов не забыть.
Хуже Пролог-клауз - только Пролог-машина. Но лучшего способа моделировать логичное мышление, нежели Пролог-программы, в массовых учебниках пока не прописано.
Собственно в RA2 юниты так себя и ведут - видишь врага - стреляй.
А вообще в старой злобной Earth 2150 можно было задавать разные модели поведения, в частности - атаковать первым, атаковать в ответ и вообще игнорировать врага, плюс к ним в дополнение - преследовать противника и удерживать позицию.
Это, конечно, не для хомячка-геймера, но ИМХО наиболее правильный набор.
Как бы надо отталкиваться не от возможностей, а от конечной цели. А то получится, что комп построит вокруг базы десять рядов турелей, просто по-тому, что может, и не будет пытаться атаковать соседей. (ну это, конечно, абстрактный пример)
ИИ, например, в Старкрафте и Вархаммере читерит. Как минимум - неограниченные ресурсы. В итоге вся суть ИИ сводится: наклепать юнитов и небежать, в то время как игрок пытается строить свою экономику и выкручиваться тем что есть.