Моторика

Моторика (motor actions) необходима для того, чтобы представлять перемещения на разных уровнях абстракции. Например, должны ли средства ИИ управлять перемещениями анимата шаг за шагом, каждый раз определяя направление следующего шага, или же сразу прокладывать ему маршрут к заданной точке? На нижнем уровне абстракции находятся простые команды, такие как "повернуть налево" или "сделать шаг вперед". Они могут быть представлены в программном коде простыми функциями с соответстнующими именами (TurnLef t (), StepForward ()) или же более сложными, неявно выраженными функциями, получающими ахшлггствующие параметры (MotorAct ion (Turn, Left), MotorAct ion (Step, Forward)). Ha верхнем уровне абстракции моторика должна обеспечивать целенаправленные действия по типу "подойти к такому-то объекту" или "повернуть в направлении такого-то объекта".
Можно спроектировать анимат таким образом, чтобы он перемещался в игровом пространстве, не применяя поворотов. Такой подход можно реализовать в неявной форме в функции перемещения (в этом случая сама функция будет выполнять поворот автоматически, если этого требует ситуация) или же путем применения постоянной ориентации в одном направлении. Понятно, что второй вариант сильно уступает первому по реалистичности, однако выигрывает по простоте реализации.
Естественно, на практике всегда приходится искать компромисс между простотой реализации (чем сложнее модель, тем хуже для игровой машины) и простотой использования (чем больше "умеет" модель, тем лучше для системы ИИ), поэтому в каждом конкретном случае уклон в одну или другую сторону при кодировании игровой машины или модуля ИИ неизбежен.
Проблема выбора уровня абстракции представления моторики в чем-то подобна проблеме принятия архитектурно-проектного решения о наборе команд, предоставляемых собственным персонажам. Так, чтобы организовать управление собственным персонажем от первого лица, обычно требуется найти сбалансированное решение, которое, с одной стороны, обеспечивает гибкость управления, а с другой, — является интуитивно понятным. Теоретически, интерфейс, отвечающий за перемещения и обеспечивающий взаимодействие системы ИИ с игровой машиной, лучше всего вырабатывать с использованием тех же подходов, которые применяются для разработки интерфейса управления собственными персонажами. Это позволяет значительно снизить объем работ, необходимых для интеграции системы ИИ в программный код игры.