Общая постановка задачи моделирования стрельбы

В большинстве реалистичных игр, в которых действие происходит от первого лица, от средств ИИ не требуется осуществления каких-либо предсказаний, поскольку, в этих играх поражающими элементами являются пули, а пули летят почти мгновенно. Это означает, что разработчик игры обязан продумывать только один аспект поведения каждого несобственного персонажа (NonPlayer Character— NPC)— прицеливание. Одно из решений задачи прицеливания, которое предусматривает применение лишь векторной алгебры, является чрезвычайно простым. Сразу после обнаружения противника выстреливается пуля, летящая прямо в ту позицию, где находится противник.
Безусловно, такое решение является весьма несложным, а из этого следует, что объем программного обеспечения, предназначенный для решения задачи стрельбы, должен быть невелик (по крайней мере, по сравнению с тем, что требуется для решения задачи перемещения). Если же используются более сложные поражающие элементы, чем пули, то разработчикам средств ИИ приходится искать решения в учебниках по физике, чтобы иметь возможность предсказывать траектории этих поражающих элементов. В действительности управление огнем — не такая простая задача, как кажется, поскольку при прогнозировании траектории движения поражающего элемента приходится учитывать различные условия (например, наличие ветра или вращение снаряда).
Недавно было выпущено несколько статей, посвященных описанию различных аспектов ведения крупномасштабного боя, в основном требующих решения задачи прицеливания. Некоторые из этих статей перечислены ниже.
> В приведен превосходный обзор советов и рекомендаций, которые могут применяться во время имитации крупномасштабного боя. В частности, в этой статье описано, как вести из стрелкового оружия стрельбу пулями, траектория движения которых почти совпадает с осью канала ствола, определяя, происходит ли попадание или промах. Кроме того, в этой статье показано, как можно представить дело так, будто промах был случайным, наилучшим возможным способом, ведь мы промахиваемся лишь потому, что нам не нужно, чтобы игра закончилась слишком быстро!
> В обсуждается понятие кривых отклика и рассматривается возможность применения этих кривых для имитации процесса прицеливания, осуществляемого людьми. Используя функцию синуса вместе с кривыми отклика, имеющими разный наклон, можно достичь различных степеней точности.
> Статья посвящена обсуждению более развитых стратегий выбора оружия, в которых используется знание местности для определения идеального места подрыва гранаты. Данные, приведенные в этой статье, подчеркивают необходимость сбора информации о среде, даже в тех случаях, когда не требуется слишком сложное решение (например, не должно применяться планирование).
Вообще говоря, создается впечатление, что разработчиков игр устраивает даже такое решение, в котором на начальную ориентацию траектории полета пули накладывается случайный шум, что приводит к получению рассеянного огня. Тем не менее даже такое простое решение часто становится хорошим компромиссом, учитывая общую картину развития событий в игре и кажущуюся незначимость подробностей производства выстрела.
В литературе приведено чрезвычайно мало сведений о том, как должна проводиться разработка изначальных принципов поведения во время стрельбы. То же самое касается и формальных интерфейсов. Но эта ситуация не вызывает у нас беспокойства, поскольку является благоприятной с образовательной точки зрения, ведь она дает нам возможность испытать свои силы в проектировании спецификаций без посторонней помощи.