ПрограммированиеФорумИгровая логика и ИИ

Элементы игрового ИИ на основе табличной логики и марковских цепей, часть 3 (комментарии)

Страницы: 1 2 Следующая »
#0
17:06, 6 авг 2012

Элементы игрового ИИ на основе табличной логики и марковских цепей, часть 3 (комментарии)

Это сообщение сгенерировано автоматически.

#1
17:06, 6 авг 2012

Спасибо за статью. Как это ни странно, но я впервые узнал про подобный метод, хотя ранее интересовался темой ИИ в играх и даже читал пару книжек.

#2
18:43, 6 авг 2012

Отличная статья, все понятно объяснено. Впервые узнал про этот метод.

#3
19:32, 6 авг 2012

Не проще ли вместо трёх статей по одной странице сделать 1 статью с тремя страницами? ;)

#4
6:15, 7 авг 2012

Отличная статья! Огромное спасибо. Скопировал себе в блог http://romanlovetext.blogspot.com/, чтоб другие читали, указал ваше авторство и источник статьи.

#5
10:13, 8 авг 2012

Я правильно понял, марковские цепи представляют собой конечный автомат с матрицей вероятностей перехода из состояния в состояние, или я попустил что-то важное?

#6
13:42, 8 авг 2012

dyvniy
Тогда имеет смысл говорить скорее о вероятностных автоматах.

Да, теория марковских цепей, определённо, имеет общие моменты с теорией автоматов. Однако, в основном, это касается описания множества состояний и переходов. В теории автоматов используется иная базовая терминология и несколько отличный набор методов.
По крайней мере, в источниках, на которых я основываюсь, подобный знак равенства между понятиями ставить не рискуют.

#7
17:05, 8 авг 2012

Любой ИИ основанный на вероятностном поведении практически не поддается отладке и может выдавать совершенно непредсказуемый вариант в релизе. В том числе многие отказались от использования НС для ИИ. Большинство до сих пор пользуются простым как бревно подходом с использованием конечных автоматов. Но в целом статья интересная, правда скорее академическая и на практике может найти применение разве что в экспериментальных проектах.

#8
17:32, 8 авг 2012

NavY
Сам сейчас пишу ИИ для своего домашнего проекта.
Реализовал вариант с конечным автоматом, но он меня мало радует, как слишком предсказуемый, и в тоже время слишком сильный.
Хочется, чтобы вражеские противники красиво сдавали свои позиции, а союзные компьютерные игроки брали не слишком много но себя, но без них было бы не справиться.

Персонаж может:
1. Оглядываться (по таймауту - начинает патрулировать территорию).
2. Патрулировать территорию (выбирая случайную точку в некотором радиусе, при достижении переходит в режим оглядыания).
3. Атаковать (стоя на месте, переход из 1 и 2 в случае попадания противника в поле зрения)
4. Преследовать (знает о цели, но цель за препятствием)
5. Убегать и прятаться за препятствием (если здоровье меньше определенного).

Конечный автомат в моем случае практически полносвязный и детерминированный.
Как в моем случае лучше сформировать марковскую цепь для ИИ?

#9
22:05, 8 авг 2012

Вообще - отвлекаясь от темы статьи и переходя ближе к конкретике - я бы в подобном случае начал с написания глобального контролирующего механизма AI (в теории управления используется термин "арбитр"). Это позволит качественно улучшить поведение больших групп персонажей. Определив количественные (сумма HP всех бойцов, процент занятых важных точек на карте и т.п.) критерии наступающего "выигрыша" и "проигрыша" для каждой из сторон, можно было бы парой относительно лёгких "подтасовок" (например, искусственно понижать меткость или увеличивать время реакции бойцов побеждающей группы на произвольные небольшие значения) переодически помогать то одной, то другой стороне.

Demiurg-HG
Конкретно по теме ответил в личку, а то больно объёмно для комментария вышло.

#10
23:37, 8 авг 2012

NavY
непонятно только зачем писать в "Рядах" и "Скалярных Функциях" - если вы можете такое использовать в программировании ,
то это означает только то , что вы не на том языке программируете (то есть создать полноценную игру вы не в состоянии) - и прямое использование "такого" вредно и это точно . Все должно быть адаптировано под нужды "циклов программирования" -
а то что нашкрябано здесь - это как "рекурсия"  , которую невозможно проконтролировать , а значит и пользы от этого очень и
очень немного .

NavY
> искусственно понижать меткость или увеличивать время реакции бойцов побеждающей
> группы на произвольные небольшие значения) переодически помогать то одной, то другой стороне.
это можно делать с помощью Морали или , как в Космических Рейнджерах (там тоже есть указание , но не используется)
Воли Лидера : Железный Роджер (железная воля) , Статус Компетент и т.д. - Атака Отряда зависит от воли лидера , а прикрыть отступление может даже тот у кого она повыше (на сейчас) , но он , к примеру , ниже званием и его поинты временны или
влияют только на Тактику в данной Позиции .

#11
8:36, 9 авг 2012

^ морфия

#12
9:30, 9 авг 2012

  Для создания ИИ лучше подойдет книга Ламота.
Реалистичное поведение больше зависит от запоминания и обучения, плюс планирование.
  Случайное действие, построенное на КА с вероятностным распределением это лишь случайное действие, а не оптимальное в данной игровой ситуации.

NavY
> относительно лёгких "подтасовок" (например, искусственно понижать меткость
Еще можно опрос клавиш делать через случайные промежутки времени - тоже хороший раздражающий фактор, чтоб отбить охоту играть.
Правила игры должны быть понятны и одинаковы для всех сторон от начала до конца - как в шахматах.

#13
20:26, 9 авг 2012

Morphia
Одно из двух - либо я не понял Ваш пост, либо Вы не знаете истории вычислительной техники и не понимаете сути программирования. Увы.

Подавляющее большинство современных языков программирования происходят или, по крайней мере, имеют какие-то общие корни с основными, базовыми, образовавшими ответвления и собственные семейства языками былых времён... О нет, я не предлагаю же какой-нибудь Фортран или чего ещё похлеще - посмотрите хотя бы на тот же Си. Си по природе своей создавался универсальным, однако, одно из первейших и основных его предназначений - расчёты, разные и много. Это математика.
А математика, опять же, бывает разной.
Кому-то из игроделов, возможно, дальше сложения и вычитания идти вообще кажется вредным - есть же умные фреймворки и готовые движки, написанные большеголовыми дядьками... надеюсь, никто из читателей себя к таким не относит? :)

Про контроль рекурсии толком не понял. Рекурсия уже лет эдак 200 успешно контролируется просвещённым человечеством.
Задача программиста тут - составить алгоритм и прогнать его в голове или на бумажке. После этого, конечно, результат ещё надо перенести в код и отлаживать (что, согласен, может быть нелегко в случае рекурсии). Ну, а если на рекурсию просто имеется стойкая аллергическая реакция, то никто не мешает заменить рекурсивный алгоритм итерационным с определённой глубиной просмотра. Решение, конечно, жутко не изящное, но если очень уж противиться рекурсии во всех её проявлениях...

#14
20:26, 9 авг 2012

Grettir
Запоминание, обучение, планирование - тоже хорошо, но...
На самом деле, принятие решения живым человеком - штука весьма тонкая. Для этого мозгом (немалой частью подсознательно) делаются прикидки, анализируются свои и чужие возможности. Когда человек, к примеру, прикидывает, сможет ли он перепрыгнуть через канаву, он оценивает сразу ряд факторов - как внешних (ширина канавы, влажность почвы, сыпучесть берегов), так и внутренних (самое простое - хочу ли я, могу ли я, как я выгляжу в глазах прохожих). В зависимости хотя бы от настроения у человека по иному начинают восприниматься в разных ситуациях как внешние, так и внутренние факторы... впрочем, я ушёл от главной мысли.

Действие тут - отнюдь не случайное. Марковская цепь позволяет, в числе прочего, делать персонажу такие вот "прикидки". Прочтите текст чуть внимательнее, пожалуйста.

P.S.
> Правила игры должны быть понятны и одинаковы для всех сторон от начала до конца - как в шахматах.
Играли в серию Need for Speed, к примеру? Да, "пошлые аркадные гоночки для детворы" - не лучший пример, но играть в них бывает интересно.
Возможно, в процессе игры Вы замечали работу catch-up механизма?
Это - система помощи отстающим водителям-ботам. Если игрок сильно оторвался от ботов, то движок начинает мягко и ненавязчиво "подкручивать" для них параметры. В итоге боты, не притормаживая, успешно входят в повороты на космических скоростях; разгонные возможности машин соперников заметно повышаются; игровые ловушки и препятствия причиняют ботам минимум ущерба. Отрыв ботов от игрока (даже если тот идеально ведёт гонку) начинает стремительно сокращаться.
Правила не одинаковы для всех игроков? Да.
Это отбивает охоту играть? Нет.
Так что не согласен до конца с Вашей идеей.

Страницы: 1 2 Следующая »
ПрограммированиеФорумИгровая логика и ИИ

Тема в архиве.