Эскизный проект исходного кода

Для того чтобы задействовать перечисленные выше интерфейсы, нужно просто организовать вызовы соответствующих функций. Конкретная реализация зависит от выбранного подхода к моделированию ИИ, но даже сейчас можно представить эскизный проект исходного кода, в котором будут представлены все такие вызовы.
void Think{) {
// Проверка контакта
bool col = physics->Collision{);
// Выявление препятствий прямо по курсу
float front_obstacle = vision->TraceWalk{ O.Of );
// Принятие решения о том, какую моторику использовать motion->Move{ Forward ); if (col II front_obstacle < 2.Of) motion->Turn{ orientation );
}
> Существует много различных методов формального решения задачи навигации.
> Очень важно рассматривать определение состояния анимата в игровом пространстве (т.е. в текущем контексте).
> Входы предоставляют системе ИИ информацию об игровом пространстве, хотя система не обязана использовать эту информацию.
> Выходы позволяют системе ИИ управлять перемещениями и тем самым гибко воздействовать на получаемый исход.
> При выборе конкретной модели мы должны учитывать высокоуровневые формулировки, изложенные в технических требованиях.
> в результате эскизного проектирования необходимо создать эскизный проект исходного кода, который не будет привязан к конкретной проблеме (т.е. будет пригоден для моделирования перемещений любого типа).
Итак, в этой главе мы рассмотрели процесс эскизного проектирования. Это очень важный этап производственного цикла создания системы ИИ, поскольку в ходе эскизного проектирования конкретизируется стоящая перед разработчиками проблема и устанавливается информация, которая должна предоставляться системе ИИ. Понятно, что некачественно проведенное эскизное проектирование может на финальных этапах привести к "развалу" всего проекта. Верно также обратное утверждение: при качественно проведенном эскизном проектировании собственно разработка системы ИИ может оказаться достаточно тривиальной задачей. В следующей главе мы уделим внимание следующему этапу— техническому проектированию, а также поговорим о методах представления знаний, которые нужны при моделировании систем ИИ.
На стадии разработки технического проекта и его реализации мы примем решение о том, нужны ли нам все эти функции, а также рассмотрим, как они соотносятся с выбранными методами моделирования ИИ.
Как всегда, прежде чем ознакомиться с теоретическими постулатами очередной концепции, вы можете посмотреть, как выглядит их реализация на практике. Среди демонстрационных примеров, приведенных на Web-узле этой книги по адресу http://AiGameDev.com, имеется анимат Pinbot. (Его выполняемый и исходный коды находятся в разделе примеров части II.) На Web-узле вы найдете подробные указания о том, как подключить его к коду игры. Анимат Pinbot обладает способностью при столкновении со стеной определять ее ориентацию в пространстве. Этот анимат умеет по направлению столкновения определять направление рикошета, что позволяет ему отскакивать от стены подобно бильярдному шару. Как и в предыдущих примерах, этот анимат не представляет собой ничего необычного — скорее, это своего рода развлечение перед тем, как мы перейдем к разговору о техническом проектировании и представлении знаний.