Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11653
Последний выпуск: 19.06.2015

Алгоритмы используемые в играх.

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

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

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

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

{ если i-й игрок команды Command_A за шестьюметрами от корзины ...}
if (BackMan[ Command_A, i ].X 6) and
{ и если i-й игрок команды Command_A решает бросить из-за
шестиметровой зоны - порог вероятности Six_Goal_Value
пропорционален индивидуальному качеству i-го игрока - у кого-то
лучше получаются броски из-за шести метров, у кого-то хуже }
(Random( 100 ) < BackMan[ Command_A, i ].Six_Goal_Value) and { и игрок успешно попал в корзину - порог вероятности
Six_Point_Value - опять-таки индивидуальная величина }
(Random( 100 ) < BackMan[ Command_A, i ].Six_Point_Value) then
begin
{ засчитать три очка }
end;

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

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

  1. Инициализация параметров игры. Выбрать некоторого спортсмена для управления.
  2. Если игрок нажал клавишу, то выбрать действие:
    • перемещение: переместить выбранного спортсмена;
    • дриблинг: перемещать спортсмена с проверкой сопротивления игроков противника; при необходимости отдать мяч;
    • пас: в соответствии с длиной паса и индивидуальными характеристиками спортсмена определить точку приземления мяча;
    • оборона: рассчитать вероятность отбора мяча у игрока противника в соответствии с индивидуальными характеристиками;
    • удар по воротам: с учетом положения игрока по отношению к воротам и их защищенностью игроками противника рассчитать вероятность попадания в створ ворот; по индивидуальным характеристикам вратаря рассчитать вероятность ловли мяча.
  1. Для i-го игрока, управляемого компьютером, выполнить простейшие действия:
    • если мяч или игрок команды соперников с мячом в зоне контроля данного игрока, то перемещаться к нему и попытаться отобрать мяч;
    • если мяч у игрока своей команды, то перемещаться вперед до границы своей зоны;
    • если мяч у игрока чужой команды, то перемещаться назад до границы своей зоны;
    • если мяч у самого игрока, то в зависимости от функций (нападающий, защитник) и распределения вероятностей рассчитать необходимость паса/дриблинга/удара по воротам.
  1. Вернуться к п.2.

Сложность программирования - 5 из 10.

[ Назад ] [ Оглавление ] [ Далее ]

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог