Смекни!
smekni.com

Настоящий виртуальный противник (стр. 2 из 2)

Доминирующая мотивация просчитывается сразу за обстановочной афферентацией, поскольку в этот момент виртуальному противнику уже количественно известно, что ему угрожает, а что у него хорошо. Сложного здесь ничего нет, просто из хода в ход виртуальный противник ведет отдельную статистику по собственным достижениям и уровню угрозы от каждого врага. Если статистика достижений виртуального противника неуклонно растет, то есть повод решить, что он избрал верную стратегию поведения и доминирующую мотивацию менять не стоит. Также при падении достижений ниже заданного диапазона или при схожем возрастании уровня угроз возникает повод в изменении доминирующей мотивации, то бишь стратегии поведения.

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

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

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

В последнем варианте стека персонаж получает умение оперировать не забытыми, но отсроченными во времени мотивами. К примеру: "Сейчас не смогу подкупить третьего противника, но мне это крайне нужно, поэтому пока отложу мотив в памяти, и буду ждать лучшего времени. А вместо этого займусь сбором золота".

Принятие решений

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

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

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

Моделирование действия и его выполнение

Эти функции реализуется при помощи различных существующих алгоритмов поиска пути и тому подобных. Как вы понимаете, такие алгоритмы имеют множество модификаций и привязаны исключительно к сюжету игры. В Интернете достаточно информации по подобным алгоритмам. Кстати, большинство из них относятся именно к функции моделирования программы действия. Так, например, алгоритм поиска пути только лишь моделирует программу действия: через какие клетки карты персонаж пойдет в требуемое место. А вот только затем движок игры двигает персонаж, выполняя тем самым смоделированное действие.