Civilization и Total War

 

Имя
Пароль  
Забыли пароль?
Регистрация


CIVru.com / "Совет по концепции" - "Мозговой штурм" / Искусство искуственного интеллекта (часть 2)
.   . 2 . 3 . 4 . 5 . >>   Версия для печати . Вверх
Автор Сообщение
Deimon
Кибердемон



Репутация: 2574090(600)
# Дата: 5 Фев 2007 11:29:30 Цитата

Изучение вопроса устройства ИИ в стратегиях заняло достаточно много времени. Я получил массу удовольствия и любопытной информации, однако делиться ими мне лень. Желающие при условии знания английского могут сами побродить по сети, начав например с замечательного сайта gameai.com. Буду краток и изложу только выводы.
Ключевое место в ИИ занимает блок принятия решений (БПР) – именно он тем или иным способом анализирует данные и принимает какое-то решение о собственных действиях. Сам механизм (наиболее часто используются такие подходы как конечный автомат, экспертная система, их аналоги на нечеткой логике, баезовые сети, нейронные сети) в данный момент несущественнен, важно что сам по себе данный блок (за исключением нейронных сетей) работает достаточно человекоподобно. Механизм работы данного блока всегда можно представить в виде набора правил, которым может следовать игрок-человек. Верно и обратное – если игрок может сформулировать принцип игры, то его можно ввести в ИИ. Человек и ИИ на этом уровне рассуждают в одинаковых понятиях. Это очень ценное качество: оно позволяет игроку улучшать качество игры ИИ примерно в том же стиле как обучать исполнительного, но безинициативного игрока-человека.
Эту идиллию взаимопонимания человека и машины нарушает одно очень важное обстоятельство. На входе ИИ информация о состоянии игрового мира не содержит тех понятий, которые использует БПР. Например, информация о состоянии карты не содержит явного утверждения «враг концентрирует силы у границы», с которым работает БПР. Все что есть в исходной информации – координаты юнитов, границы, возможно история их движения. Это более низкоуровневая информация, ее необходимо предварительно обработать, чтобы превратить в выводы с которыми может работать БПР. Эту задачу выполняет блок распознавания понятий (БРП). Тут ИИ показывает себя не лучшим образом. Во-первых, сама задача относится к задачам распознавания образов – элементарным для человека и крайне сложным для машины. Классический пример применения такого свойства – на сайтах для того чтобы не дать возможности сетевому роботу сделать что-то что должны делать только люди предлагает ввести цифры с рисунка. Это проблема «пикселизации» - сложности перевода растрового рисунка в векторный, проблема «за деревьями не видно леса». Во-вторых, плохо то, что поскольку для человека эта задача настолько элементарна, что выполняется где-то «внутри» и человек как правило не может толком объяснить, на основании чего он решил, что тут именно цифра «3». В итоге механизм распознавания образов, используемый машиной как правило не имеет ничего общего с человеческим подходом. Еще хуже то, что если расширять и изменять БПР может в принципе любой игрок, то расширение БРП требует намного более высокой квалификации, владения знаниями академического уровня, очень хорошего умения программировать. С практической точки зрения можно считать, что БРП пишется лишь один раз и почти не расширяется. Соответсвенно, БПР можно модифицировать только в области усложнения обработки тех понятий, которые сумел выделить БРП.
Результат работы БПР также необходимо перевести в низкоуровневые команды конкретным юнитам. Этим занят блок реализации (БР), превращающий логические команды типа «атаковать такой то юнит» в конкретные передвижения. Тут ситуация вполне благоприятная, поскольку задача противоположна задачи распознавания образов – перевод векторного рисунка в растр проблем не представляет. Механизмы реализации (поиск пути, решение транспортных задач и пр.) достаточно разработаны. Зачастую БР представлен в виде ИИ юнита.
У меня была практика попытки написания ИИ для C-evo (c-evo.org). Очень быстро я обнаружил, что крайне сложно алгоритмизировать например такую директиву как «если есть узкий перешеек отделяющий нас от противника, то нужно максимально укрепить на нем какой-нибудь оборонительный юнит». Проблемы в выборе юнита и выборе конкретной точки на перешейке для его размещения не возникало – вот только как определить где на карте перешеек? В конечном итоге более-менее работающий алгоритм был найден, однако крови он попил не мало.
Если проблема очень актуальна для ИИ, играющего самостоятельно (ИИ стратегического уровня), то она становится просто кошмарной для ИИ-реализатора (ИИ оперативного уровня). Давайте проведем аналогию. В Циве ИИ стратегического уровня представлен ИИ-противниками, тактического – поиск пути движения юнита, оперативного – всевозможные механизмы автоматизации. ИИ оперативного уровня – это по своей сути тот самый непрямой контроль, который так не любят многие игроки. Чем же так не нравится механизм, который по идее должен избавлять игрока от рутины микроменеджмента?
А все тем же – ИИ не понимает смысла команд игрока. И действует как тупой исполнитель. Когда игрок указывает, что данный юнит должен двигаться в данную точку, для компа это именно задача на перемещение юнита и не более. Комп не задается вопросом «зачем идет передвижение юнита» – по той простой причине, что вывод ответа на этот вопрос исходя лишь из команды, отданной игроком – это опять задача распознавания образов, вывод высокоуровневой информации из низкоуровневой. Не обладая информацией о цели перемещения, он не может адекватно отреагировать на изменившуюся ситуацию без вмешательства игрока.
Что же можно сделать в данной ситуации?
Я вижу три выхода:
1.потратить массу человекочасов специалистов по ИИ для решения проблемы распознавания образов в цивоподобной игре
2.упростить правила игры до той степени при которой проблема распознавания решается более-менее просто
3.вообще отказаться от решения данной задачи
Первый вариант для любительской (да и для практически любой профессиональной) игры очевидно малореализуем по понятным причинам. Второй вариант намного лучше – практика показывает, что игры с хорошо подобранным набором простых правил вполне могут быть интересными. Например таким путем пошел «Генерал». В любом случае набор правил полезно минимизировать. Наиболее радикальным является третий вариант: если перевод логических понятий в физические эффективен лишь в одну сторону, то нельзя ли вообще отказаться от уровня физического представления и везде оперировать только логическими понятиями?

fantakt
Участник



Репутация: 2529700(???)

# Дата: 5 Фев 2007 11:49:57 Цитата

А разве растровое изображение на экране - это не отображения в понятной для игрока форме некоей цифровой информации: свойств ячейки, точки матрицы в которой стоит вражеский юнит, который тоже не более, чем набор свойств, описываемых в своей базе данных? По твоим рассуждениям я понял только, что ИИ "видит" тоже самое, что видит игрок на экране и не может его распознать...

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

Deimon
Кибердемон



Репутация: 2574090(600)
# Дата: 5 Фев 2007 12:33:21 Цитата

fantakt:А разве растровое изображение на экране - это не отображения в понятной для игрока форме некоей цифровой информации: свойств ячейки, точки матрицы в которой стоит вражеский юнит, который тоже не более, чем набор свойств, описываемых в своей базе данных? По твоим рассуждениям я понял только, что ИИ "видит" тоже самое, что видит игрок на экране и не может его распознать...
Не совсем - пример с растром относится лишь к иллюстрации принципа "за деревьями не видно леса". Естественно, что ИИ анализирует не картинку на экране, а состояние игрового мира, выраженное в цифровой форме - как ты говоришь "свойств ячейки, точки матрицы в которой стоит вражеский юнит, который тоже не более, чем набор свойств, описываемых в своей базе данных". Это верно, только для игрока данный юнит - это не просто отдельный юнит, игрок ОСМЫСЛИВАЕТ юнит, включая его в свое понимание игровой ситуации (например "этот юнит охраняет перешеек"Подмигивание. Я указываю именно на сложность этого "осмысления" для компьютера.
fantakt:Дальше, если ИИ видит вражеский юнит и может его определить, то почему бы всю область в которую этот юнит может попасть на следующем ходу, не считать зоной контроля, в которую мимоидущему неагрессивному юниту (рабочему, например), лучше не соваться. А боевой юнит попадающий в эту зону либо, выходит, либо меняет приказ "следовать" на любой другой, например "запрос на следующее действие" или "атаковать"...
Ты сейчас описываешь ИИ тактического уровня. Игрок-человек так не думает. Для него этот стоящий юнит наделен каким-то смыслом - вот он стоит, блокирует перешеек. Надо подвести рабочего чтобы отвлечь его, заставить уйти с хорошей позиции, а потом я по нему конницей вдарю... =)

fantakt
Участник



Репутация: 2529700(???)

# Дата: 5 Фев 2007 12:54:19 Цитата

хххх0хххх
хх0ххх0хх
ххххххххх
ххххххххх
ххххЮххх

Юнит подходит к району в котором стоят три Охранника. А какая ему разница, перешеек там или нет? Через три поста он все равно не пройдет.

Deimon
Кибердемон



Репутация: 2574090(600)
# Дата: 5 Фев 2007 13:54:07 Цитата

Честно говоря, не понимаю к чему ты клонишь?

fantakt
Участник



Репутация: 2529700(???)

# Дата: 5 Фев 2007 14:18:57 Цитата

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

recon
Участник



Репутация: 2641710(???)

# Дата: 5 Фев 2007 14:35:05 Цитата

Deimon:то нельзя ли вообще отказаться от уровня физического представления и везде оперировать только логическими понятиями?
На карты Кохонена намекаешь?

Deimon
Кибердемон



Репутация: 2574090(600)
# Дата: 5 Фев 2007 15:05:30 Цитата

fantakt:надо, может, учить его на примере действий игроков? Собирать копилку идей, чтобы ИИ мог сравнивать ситуацию с хранящейся в памяти и решать, как себя вести.
Надо. Вот только для начала попробуй сформулировать какое-нибудь правило для действий ИИ и я покажу в чем проблема... =)
recon:На карты Кохонена намекаешь?
Не знаю такого. Но сейчас узнаю... =)

fantakt
Участник



Репутация: 2529700(???)

# Дата: 5 Фев 2007 15:53:25 Цитата

Хорошо, давай попробуем. Тот же случай с перешейком. В циве я всегда ставил юнит на проходе, по одной простой причине чтобы не бегали кому не попадя Улыбка даже если это были ничейные земли. Особенно это удобно, когда вдруг через тебя кто-то идет воевать еще кого-то. Перекрыл проход и война окончилась. Что делает комп в циве - пришел, увидел препятствие, ушел, или встал и стоит, иногда копит силы и потом вдруг нападает. То есть три варианта уже есть. Что делает человек? Да в общем-то тоже самое, правда есть вариант подогнать галеру и обойти по воде Улыбка или "отвлечь" как ты написал. Но обычно отвлечь не получается, так как ИИ стоит на месте, не размениваясь на мелочи. Так что проблема как я понимаю в данном случае в том, что комп в отличии от человека не может "додуматься" подогнать галеру и обойти по воде. Но в тоже самое время, комп просто сажает юнит на галеру и ползет мимо твоих берегов, что тоже раздражает Широкая улыбка То есть у него свое решение все же есть.

recon
Участник



Репутация: 2641710(???)

# Дата: 5 Фев 2007 16:03:35 Цитата

Deimon:Не знаю такого.
Я тебе как-то ссылку давал на А.Ю.ЗИНОВЬЕВ "ВИЗУАЛИЗАЦИЯ МНОГОМЕРНЫХ ДАННЫХ". Там о SOM (Self-Organizing Map) достаточно хорошо написано.
Пример логической карты:
здесь

Aku_Aku
Участник



Репутация: 1271430(???)
# Дата: 6 Фев 2007 11:02:15 Цитата

Вот в том и состоит моя идея про ИИ Подмигивание

Чтобы на уровне внутреннего представления оперировать уже осмысленными понятиями.
Что это значит? Deimon, как ты указывал, есть ситуация "противник накапливает войска на границе", но для того чтобы сформировать фактически такую ситуацию игрок должен дать команду "подготовить войска к нападению", которая в результата и формирует такую ситуацию.
Еще раз.. когда игрок хочет напасть, он не просто "а я вот хочу поставить свою армию сюда", а всегда, по правилам игры, на уровне внутреннего представления уже вызываеться приказ: логически осмысленный, понятный системе и отображающий намерения игрока.

Yorick
Реал-цивер


Репутация: 1994060(???)
# Дата: 6 Фев 2007 14:39:50 Цитата

Deimon:Второй вариант намного лучше – практика показывает, что игры с хорошо подобранным набором простых правил вполне могут быть интересными. Например таким путем пошел «Генерал». В любом случае набор правил полезно минимизировать.
Сравни: сколько народу играет в Циву - и сколько в Генерала (не в обиду авторам Генерала). ИМХО не только из-за разного временнОго жанра (походовка против реалтайма) (хоть это ИМХО основная причина), но и во многом из-за исчезновения таких оживляющих пейзаж деталей, которые если я правильно понял, предлагается минимизировать.

Deimon:Наиболее радикальным является третий вариант: если перевод логических понятий в физические эффективен лишь в одну сторону, то нельзя ли вообще отказаться от уровня физического представления и везде оперировать только логическими понятиями?
Можно подробнее?

Aku_Aku
Участник



Репутация: 1271430(???)
# Дата: 6 Фев 2007 14:42:55 Цитата

Yorick:Можно подробнее?
Что тут не понятного?
Это как в том же генерале -- не расставлять войска на карте, а напрямую указывать команду "атакую"

Deimon
Кибердемон



Репутация: 2574090(600)
# Дата: 6 Фев 2007 14:53:03 Цитата

Yorick:Сравни: сколько народу играет в Циву - и сколько в Генерала (не в обиду авторам Генерала). ИМХО не только из-за разного временнОго жанра (походовка против реалтайма) (хоть это ИМХО основная причина), но и во многом из-за исчезновения таких оживляющих пейзаж деталей, которые если я правильно понял, предлагается минимизировать.
Минимизация должна быть разумной. Правильный вариант лежит где-то между Генералом и Цивой. =)
Yorick:Можно подробнее?
Aku_Aku:Вот в том и состоит моя идея про ИИ
Чтобы на уровне внутреннего представления оперировать уже осмысленными понятиями.
Что это значит? Deimon, как ты указывал, есть ситуация "противник накапливает войска на границе", но для того чтобы сформировать фактически такую ситуацию игрок должен дать команду "подготовить войска к нападению", которая в результата и формирует такую ситуацию.
Еще раз.. когда игрок хочет напасть, он не просто "а я вот хочу поставить свою армию сюда", а всегда, по правилам игры, на уровне внутреннего представления уже вызываеться приказ: логически осмысленный, понятный системе и отображающий намерения игрока.

Aku_Aku прекрасно ответил... =)

recon, я пока поиграюсь с картами, но пока не уверен, что это то, что я имел в виду...

fantakt:Тот же случай с перешейком. В циве я всегда ставил юнит на проходе, по одной простой причине чтобы не бегали кому не попадя даже если это были ничейные земли. Особенно это удобно, когда вдруг через тебя кто-то идет воевать еще кого-то. Перекрыл проход и война окончилась.
Ключевой вопрос: ты перешейки, которые очень полезно занять, видишь на раз. Попробуй объяснить подробнее чем эти клетки отличаются от других, да так чтобы это компу стало понятно. Остальная часть твоего алгоритма реализуется достаточно легко...

recon
Участник



Репутация: 2641710(???)

# Дата: 6 Фев 2007 15:23:51 Цитата

Deimon:recon, я пока поиграюсь с картами, но пока не уверен, что это то, что я имел в виду...
Возможно, я тебя не понял.
Имелось в виду "Богу - Богово, кесарю - кесарево". Челу - физическую карту мира, компу - карту логическую.

fantakt
Участник



Репутация: 2529700(???)

# Дата: 6 Фев 2007 15:34:14 Цитата

Для меня перешеек - это проходимая клетка ведущая от одного проходимого массива в другой, и окруженная непроходимыми (горы, если они сделаны непроходимыми) или частично непроходимыми (море). Для суши - это проходимая клетка суши, для моря (пролив - тот же перешеек) - это клетка моря, соединяющая два массива морей и разделяющая два массива суши (смотря для каких юнитов рассматривать). С точки зрения компа - клетка "перешеек" должна быть занята своим юнитом для того, чтобы отсечь чужих (сделать ее непроходимой для врагов) и/или сделать ее проходимой для своих (поставить галеру в проливе).

Надеюсь я понятно написал Широкая улыбка

Aku_Aku
Участник



Репутация: 1271430(???)
# Дата: 6 Фев 2007 15:35:03 Цитата

Объектную карту или же объектно-ориентированную карту (ООК)
Где существенные, сложные области ландшафта (горы, реки) представленны в виде объектов. И тогда програме нету необходимости как-то анализировать\распознавать карту, а можно просто обратиться к обекту и спросить у него где легче пройти например.

Deimon
Кибердемон



Репутация: 2574090(600)
# Дата: 6 Фев 2007 15:59:25 Цитата

recon:Челу - физическую карту мира, компу - карту логическую.
А команды человек будет отдавать на какой карте? Если на физической, то перевод такого приказа на логическую карту - это та самая задача распознавания образов. Если на логической, то физическая нужна разве что как красивый интерфейс...
fantakt: клетка ведущая от одного проходимого массива в другой
массив суши - интуитивно понятная вещь для чела, для компа есть только двухмерный массив клеток. Определи, что есть массив суши и массив моря/гор...
Aku_Aku:Объектную карту или же объектно-ориентированную карту (ООК)
Где существенные, сложные области ландшафта (горы, реки) представленны в виде объектов. И тогда програме нету необходимости как-то анализировать\распознавать карту, а можно просто обратиться к обекту и спросить у него где легче пройти например.

Нечто подобное, кстати, упоминал где-то akasoft - про объект "лес" тогда речь шла...

Aku_Aku
Участник



Репутация: 1271430(???)
# Дата: 6 Фев 2007 16:03:03 Цитата

ну так...

Deimon
Кибердемон



Репутация: 2574090(600)
# Дата: 6 Фев 2007 16:04:46 Цитата

Кстати, fantakt, здесь есть кое-что по сложностям "понимания" карты ИИ (на англицком)...

Yorick
Реал-цивер


Репутация: 1994060(???)
# Дата: 6 Фев 2007 18:08:50 Цитата

Aku_Aku:Это как в том же генерале -- не расставлять войска на карте, а напрямую указывать команду "атакую"
Чем ИМЕННО? Где? Кого?

Именно отсутствие этих вкусных деталей меня прежде всего и отталкивает в Генерале.

Deimon:Минимизация должна быть разумной. Правильный вариант лежит где-то между Генералом и Цивой. =)
ИМХО если не выйти хоть на уровень детализации Цивы, вряд ли народ будет играть. По крайней мере, перед затратой сил стоило бы опросить циверов.

recon
Участник



Репутация: 2641710(???)

# Дата: 6 Фев 2007 20:30:46 Поправил: recon Цитата

Deimon:А команды человек будет отдавать на какой карте?
На физической само собой.
Deimon:Если на физической, то перевод такого приказа на логическую карту - это та самая задача распознавания образов. Если на логической, то физическая нужна разве что как красивый интерфейс...
Дык, вроде бы карты Кохонена и есть логическая интерпретация данных физической карты, более удобная для компа. Для чела ее визуализировать и не надо. Хотя, хз, мож чего и недопонял... Жаль потерял ссылку на одну гис, где прога расчитывала поиск оптимального пути и трассировку именно на основе карт Кохонена.
Deimon:Нечто подобное, кстати, упоминал где-то akasoft - про объект "лес" тогда речь шла...
Лоскутный мир. Улыбка Лучше чем akasoft тогда предложил и не придумаешь. Объекты-лоскутки рулят!
Deimon:массив суши - интуитивно понятная вещь для чела, для компа есть только двухмерный массив клеток. Определи, что есть массив суши и массив моря/гор...
И тут нужны "лоскуты" Подмигивание, чтоб и комп смог воспринимать материк.

Invictus
Участник


Репутация: 2565840(???)
# Дата: 7 Фев 2007 01:17:00 Цитата

http://www.all-ebooks.ru/index.php?m=book&id=500

Хорошая книга по основным принципам нейросетей и их применению, в том числе и для распознавания, классификации и прочей работы с образами.

Deimon
Кибердемон



Репутация: 2574090(600)
# Дата: 7 Фев 2007 08:04:31 Цитата

Yorick:Чем ИМЕННО? Где? Кого?
Именно отсутствие этих вкусных деталей меня прежде всего и отталкивает в Генерале.

Ну смотри. В Генерале ты даешь ответы на эти вопросы: чем - сколько солдат и каким генералом, кого - выбираешь гос-во для агрессии, вот только где определяется автоматически - по всей границе с супостатом. Другое дело, что число опций однозначно нужно увеличить - нападаем третьей дивизией с поддеркой третьей экскадрильей бомбардировщиков, удар нанесем по промышленной области через реку Поганку, основная задача - уничтожение промышленных и гражданских объектов. Так устроит? А вот если ты хочешь давать приказы типа "третий полк занимает высоту 2318" - тут я сильно не согласен. Это ФИЗИЧЕСКИЙ приказ и понимания его ЛОГИЧЕСКОГО смысла у ИИ не будет.
Yorick:ИМХО если не выйти хоть на уровень детализации Цивы, вряд ли народ будет играть. По крайней мере, перед затратой сил стоило бы опросить циверов.
Честно говоря, передо мной не стоит задача написать игру, в которую будет рубиться куча народу. Нет и задачи срубить бабла. Все что я хочу - найти возможность революционного изменения геймплея в стратегиях либо понять, что я это сделать не в состоянии. Сейчас детализация Цивы выдится мне скорее злом, чем благом, поэтому я предпочту держаться на максимально абстрактном уровне. И это будет продолжаться до тех пор, пока не заработает абстрактная модель. Вот только потом я согласен навешивать на нее фенечки и рюшечки - важные для интересности игры, но не важные СЕЙЧАС.
Да и еще один момент: детализация в Циве однобокая - с одной стороны она позволяет управлять каждым солдатиком, с другой стороны масса очень важных социальных являений в ней затронуты очень поверхностно. Надо исправлять... =)
recon:Дык, вроде бы карты Кохонена и есть логическая интерпретация данных физической карты, более удобная для компа. Для чела ее визуализировать и не надо. Хотя, хз, мож чего и недопонял... Жаль потерял ссылку на одну гис, где прога расчитывала поиск оптимального пути и трассировку именно на основе карт Кохонена.
Прежде чем начать использовать столь навороченные инструменты распознавания образов, я вначале хочу убедиться что нет пути обойти эту сложную задачу... =)

Invictus, спасибо, почитаю...

Deimon
Кибердемон



Репутация: 2574090(600)
# Дата: 7 Фев 2007 08:32:02 Цитата

Нечто близкое...
http://www.integro.ru/metod/topo_relations.htm

.   . 2 . 3 . 4 . 5 . >>   Версия для печати . Вверх

ОСТАВЛЯТЬ СООБЩЕНИЯ МОГУТ ТОЛЬКО ЗАРЕГИСТРИРОВАННЫЕ ПОЛЬЗОВАТЕЛИ!

Администрация форума: editors@civru.com
Rambler's Top100
XML [?]