Организация рефлексов у аниматов

Нетрудно догадаться, что существует великое множество способов объединения разрозненных компонентов в единую систему. Собственно, для выбора наилучшего способа в каждой конкретной ситуации и существует такая дисциплина, как программная архитектура, поскольку взаимоотношения между компонентами зависят от выбранного архитектурного решения. На рис. 3.4 показаны три варианта таких решений с различной внутренней организацией многокомпонентной системы.
Система с монолитной архитектурой (monolithic architecture) состоит из единого компонента.
Простая архитектура (flat architecture) системы означает, что такая система состоит из нескольких параллельных (т.е. слабо связанных между собой) компонентов.
Если компоненты вложены один в другой, тогда мы говорим об иерархической архитектуре (hierarchical architecture).
В качестве примера реализации иерархической архитектуры в играх можно привести модель работы мозга, представляющую собой набор поведенческих реакций (например, охота, бегство, патрулирование), имеющих вид отдельных компонентов. В свою очередь, каждая из таких форм поведения может зависеть от компонентов перемещений и стрельбы. Таким образом, мы получаем трехуровневую иерархию, на верхнем уровне которой находится компонент, моделирующий мозг анимата.
Как правило, выбор того или иного архитектурного решения зависит от сложности решаемой проблемы. Для простых проблем можно обойтись монолитной архитектурой, для проблем средней сложности уже лучше гфибегнуть к простой архитектуре, ну а проблемы высокой и очень высокой сложности лучше решать с использованием системы, основанной на иерархической архитектуре, поскольку только такой подход позволит выполнить декомпозицию сложной проблемы на составляющие ее подзадачи.
Декомпозиция
Итак, вместо того чтобы пытаться осмыслить сложную проблему в целом (и выстраивать архитектуру снизу вверх, складывая ее из отдельных компонентов), мы можем попробовать разделить ее сначала на крупные блоки, затем каждый из них разбить на несколько мелких блоков и так далее, превращая каждый из блоков в отдельный компонент архитектуры. Именно такой подход, который в подавляющем большинстве случаев является стержневым для разработки систем ИИ, и называется декомпозицией (decomposition).
Декомпозиция может выполняться разными методами, однако суть их одна — разделение общей сложной проблемы на более простые, частные проблемы по определенным критериям. Критерии, естественно, выбираются такими, чтобы в максимальной степени упростить решение задачи. Этот подход зарекомендовал себя как очень надежный как при проектировании обычных программных систем любой сложности, так и при создании систем ИИ игрового программного обеспечения.
> При структурной декомпозиции (structural decomposition) разделение проблемы происходит в соответствии с функциональностью каждого компонента.
> Поведенческая композиция (behavioral decomposition) означает, что разделение системы на компоненты выполняется по типам действий, проявляемых системой. Применительно к системе ИИ компьютерных игр такими действиями могуг быть охота, бегство, поиск оружия или празднование победы. При проведении поведенческой декомпозиции каждой поведенческой реакции соответствует отдельный компонент.
> при целевой декомпознцин (goal decomposition) в качестве критерия разделения системы на компоненты используется их вклад в достижение основной цели этой системы, в игровых средствах ИИ цели часто зависят от поведенческих реакций (например, для того чтобы раздобыть оружие, необходимо заняться его поиском). Хотя цели не всегда позволяют получить строгие правила для декомпозиции, они все же могуг использоваться в качестве основного критерия при принятии решений о разделении системы на компоненты .
Естественно, декомпозиция на разных уровнях иерархии может проводиться по разным критериям. Например, для основной проблемы сначала можно применить поведенческую декомпозицию. Затем каждую отдельную поведенческую реакцию можно "разложить" по функциональности, используя при этом разные критерии. Такая декомпозиция называется гибридной (hybrid decomposition) в противовес чистой декомпозиции (pure decomposition), которая для всей архитектуры выполняется по единому критерию.
в наибольшей степени задачам, стоящим перед системами ИИ для компьютерных игр, соответствует поведенческая декомпозиция. Кроме того, в таких системах часто используется структурная, или функциональная, декомпозиция, поэтому мы ей также уделим внимание в этой книге, когда будем говорить об общих возможностях, используемых всеми несобственными персонажами, которыми управляет система ИИ.