Другие языки программирования и технологии

Как реализуют работу искуственого интелекта в играх?

Типо это можно рассмотреть с математической точки зрения.
"Не сошла с трассы":
Просто трасса представляется как участок, который имеет четкие границы. Машина это объект на этом участке, который тоже имеет свои координаты. Объект движется в этом пространстве. Если объект выходит за границы, то выдается сообщение о том, что машина сошла с трассы.
Место я бы определила так:
Когда гонка начинается, то машины уже стоят на своих условных местах, под номерами. Следовательно, это порядок машин можно представить в виде массива. Далее, в функции имеется условие, что если две передние точки объекта (условно, бампер машины) располагаются на участке выше, чем две точки другого объекта, то эти два объекта меняются местами в массиве (т. е. один обгоняет другого)
С ботом уже сложнее.
Типо есть такое понятие как "компьютерное зрение". Но тут я уже не очень разбираюсь, лучше в инете почитать.
Дмитрий Толкачев
Дмитрий Толкачев
65 542
Лучший ответ
Сразу хотелось бы отметить, что в данной области я имею очень и очень поверхностные знания.

Ну например в той же CS:GO для работы ботов, насколько я знаю и могу судить, применяются:

Сетки навигации для передвижения ботов по карте (где бежать, где прыгнуть, где пригнуться и т. д.) (например, если играл в старые версии CS 1.5, 1.6, то наверное помнишь такие вещи, как PODBot, ZBot и т. д. А так же можно было найти сетки навигации для этих ботов, одно время даже были популярны сетки навигации с турниров по CS, они содержали в себе информацию о передвижениях про-игроков.)

У каждого персонажа имеется своя система Hit-боксов, для головы, для рук, ног, туловища и т. д. По ней рассчитывается нанесенный игроку урон, например выстрел в голову по такой системе убивает игрока мгновенно, если мощность оружия это позволяет, а так же если каска отсутствует.

А система определения "свой-чужой" не думаю, что так уж сложно реализована, если отбросить систему распознавания ботом других ботов или реальных игроков, то для определения "свой-чужой" возможно будет достаточно иметь всего-лишь один атрибут (attrTeamId, что-то типа такого), например если его значение 0 - бот\игрок принадлежит к команде "Террористы", а если его значение 1 - к команде "Контр-террористы". В таком случае, если бот встречает другого бота или игрока и его attrTeamId совпадает со своим - игнорирует его, в ином случае открывает огонь.

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

Не скажу, что мои слова являются правильным описанием работы искусственного интеллекта в играх, но по крайней мере я представляю себе это как-то так. Если более компетентные в этой области люди будут уверены, что я несу чушь - буду рад услышать более правильное объяснение данной системы.
А причём здесь AI? Какое отношение он имеет к гонкам и стрелялкам ?
В шашках или шахматах создаётся дерево перебора, лишние варианты отсекаются такими механизмами, как альфа-бета-процедура, для дебютов и эндшпилей есть специальные справочные информсистемы. А ещё есть такие вещи, как обдумывание ходов за счёт времени противника и механизмы самообучения...
Например боты в кс го
Boris Borev
Boris Borev
1 051

Похожие вопросы