Суббота, 20.04.2024, 00:39
Главная Регистрация RSS
Приветствую Вас, Гость
Поиск по сайту
Авторизация

Меню сайта
Game Maker
Если вы только-только начали изучать игрострой и еще даже не успели скачать сам Game Maker, предлагаем вам на выбор следующие версии программы:

Game Maker 8.1
Классика. Идеально подходит для создания простых 2D игр на PC. Требует активации.
Game Maker for Mac
Абсолютно та же программа, но только для пользователей Mac. Требует активации.
Game Maker Studio
Самая новая версия с возможностью кроссплатформенной разработки. Бесплатна.
Топ 5 игр
Агент Green 4.2 / 5.0
FeDo 4.2 / 5.0
To Mars: Sec... 4.2 / 5.0
To Mars+MapE... 3.9 / 5.0
Paintball 3.8 / 5.0

Топ игр составлен путем пользовательского голосования.

Если вы не согласны с какой-либо оценкой, примите участие и поставьте свой балл игре. Ваша оценка очень важна для нас ;)
Статистика



На сайте: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Разработка игр

Пишем ИИ для врага в TDS. Часть 1

И так начнём.
Я хочу показать как реализовать 2 вида ИИ, собственно о них.

1. Мысль бота "Я крутой, поэтому просто буду стрейфиться и стрелять в тебя"

2. Мысль бота "Нее чувак, я ещё пожить хочу, у меня дома жена и дети, сяду ка я вот за тот ящик и буду переодически отстреливаться, авось попаду.."

Сегодня мы разберём первый вид.

Теория.

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

Начнём практику.

Создаём в событии Create 2 переменные XX и YY и засекаем будильник.

XX=x
YY=x
alarm[0]=room_sped+random(100)

Эти переменные отвечают за выбор координат в которые и будет стрейфиться враг.
Будильник же отвечает за то, когда враг начнёт стрейф.

В событии будильника:

XX=x+choose(+random(60),-random(60));
YY=y+choose(+random(60),-random(60));

alarm[0]=room_speed+random(100)

Что здесь:

Сначала мы выберем в какую сторону по иксу и по игреку выбирать координату, а потом какой радиус. и снова засекаем будильник.

В степ:

mp_potential_step(XX,YY,1,0);
direction=point_direction(x,y,Игрок.x,Игрок.y)

Враг должен постоянно двигаться в координаты и быть направлен к игроку.

Конечно можно проверять достиг враг координат, или нет и только потом засекать аларм, но это уже сами.

И код стрельбы тоже сделаете сами (думаю руки прямые).

На этом всё, встретимся на следующем уроке.
Категория: Разработка игр | Добавил: GoodWin (14.07.2014)
Просмотров: 5733 | Комментарии: 4 | Рейтинг: 4.0/9
Всего комментариев: 4
4 baryhalive   (25.01.2016 21:29) [Материал]
baryhalive Я лично делаю ИИ проще
просто беру кидаю чтобы скрипт чтобы следовал за игроком
чтобы если видел зомбака он бросал человека и убил зомби!

2 Анонимус   (30.08.2014 02:59) [Материал]
Цитата
alarm[0]=room_sped+random(100)
Ошибка.
#room_speed

0
3 BRESS   (30.08.2014 08:12) [Материал]
BRESS У всех бывает smile

0
1 BRESS   (21.07.2014 16:24) [Материал]
BRESS Имхо, подход у большинства разработчиков к AI несколько неправильный. Система ветвлений с кучей рандома выглядит как-то неказисто, да и ожидать таким образом от бота интересных тактических решений просто не приходится. А ведь изначальная задача AI состоит не в натягивании игрока, а в красивом проигрыше.

По поводу самой статьи. Код в Степе крайне сомнительный. direction надо использовать исключительно для направления движения бота. Для остальных случаев, вроде направления выстрела и т.д., лучше использовать отдельную переменную.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]