Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / С чего начинать AI в игре жанра 3D шутер?

С чего начинать AI в игре жанра 3D шутер?

Поделиться
zavod3DПользовательwww12 окт. 201713:28#0
У кого-нибудь есть ссылки на годные статьи по AI в шутерах жанра  "один против толпы"?
Хотелось бы сделать примерно как в Серьезном Сэме, но я не врубаюсь в код скриптов bison lexx.
nesПостоялецwww12 окт. 201714:59#1
глянь в скрипты blade of darkness, они на путоне.
zavod3DПользовательwww12 окт. 201715:49#2
Короче нашел пока книжку одну на инглише - почитаю.
zavod3DПользовательwww13 окт. 201717:16#3
Чет, не могу понять в чем суть fuzzy logic
kiparПостоялецwww13 окт. 201718:36#4
В том чтобы вместо жестких порогов if(hp < 0.2 && enemy_distance < 10 ) run_away;
задавать гладкие ограничения: "Если хитов мало - прятаться. Если хитов очень мало и враг близко - убегать."
RikkПостоялецwww13 окт. 201722:31#5
С чего начинать AI в игре жанра

с отрезка прямой пройти от тА до тВ

Daniil PetrovЗабаненwww14 окт. 20172:14#6
kipar
> "Если хитов мало - прятаться. Если хитов очень мало и враг близко - убегать."
А как это делается? Если на пальцах :)
БаберПостоялецwww14 окт. 20176:03#7
Rikk
> с отрезка прямой пройти от тА до тВ
  Трезвым пройти
loysoПостоялецwww14 окт. 201710:39#8
zavod3D
Fuzzy Logic в узком смысле - это избежать "резкого" переключения при переключениями между состояниями (петля гестерезиса)
В этом случае включение эффекта зависит от предыстории:

Если враг на home point в состоянии покоя, то чтобы он начал преследовать игрока - нужно подойти на distance 10 метров.
Если враг отстал от игрока и возвращается на home point то чтобы он переключился в состояние преследования - нужно подойти уже не на 10 метров, а на 5.

Fuzzy Logic в широком смысле - это когда у тебя есть декларативно "эффекты поведения" и предикаты [0..1], которые эти эффекты включают в зависимости от входных
параметров. И тогда предикаты можно композитить и есть логика предикатов - x AND y - это MIN(x,y); x OR y - это MAX(x,y), NOT x - это (1-x).

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

zavod3DПользовательwww14 окт. 201712:01#9
kipar
> "Если хитов мало - прятаться. Если хитов очень мало и враг близко - убегать."
loyso
> Если враг на home point в состоянии покоя, то чтобы он начал преследовать
> игрока - нужно подойти на distance 10 метров.
> Если враг отстал от игрока и возвращается на home point то чтобы он
> переключился в состояние преследования - нужно подойти уже не на 10 метров, а
> на 5.
Набор факторов для переключения стейта вместо одного фактора шталь?
loyso
> "В ширком смысле" я не рекомендую для начинающих...
>Если ты программер - проще закодить сценарии поведения в Lua.
Я пока FSM делаю, может и заскриптую.

loysoПостоялецwww14 окт. 201712:46#10
zavod3D
> Набор факторов для переключения стейта вместо одного фактора шталь?
Там нет готовых строгих рецептов - каждый готовит себе Fuzzy Logic "по вкусу", под ситуацию в проекте.
Можно комбинировать с императивными скриптами или FSM или CSP.
Вообще лучше хотя бы двух-уровневая система HFSM - Стратегия и Тактика.
Тактика - это FSM (тусоваться у homepoint, всполошиться, струсить, врукопашку, выбрать cover point и стрелять)
А Стратегия - это как тактические FSM переключать (и по каким факторам) и как взаимодействовать с другими юнитами (из взвода, там)
loysoПостоялецwww14 окт. 201712:48#11
zavod3D
p.s. "тусоваться у homepoint, всполошиться, струсить, врукопашку, выбрать cover point и стрелять" - это примеры. Каждая по отдельности может быть FSM.
FSM - деталь реализации. Это скорее компонентный конструктор должен быть.
kiparПостоялецwww14 окт. 201713:22#12
zavod3D
> Набор факторов для переключения стейта вместо одного фактора шталь?
и возможность задавать гладкую зависимость от этих факторов без ковыряния формул.
Ну т.е. в моем примере убегание сработает и при хп=0.25 но дистанции = 5, и при дистанции = 15 но хп = 0.05. А в более сложных примерах там и нелинейные зависимости будут. Конечно можно было бы задать хитрой функцией напрямую, но fuzzy logic позволяет вместо этого задавать в виде текстовых правил, а гладкие функции зависимости плучаются "сами".
zavod3DПользовательwww14 окт. 201714:30#13
loyso
kipar
Спасибо за разъяснение, слегка прояснилось.

/ Форум / Программирование игр / Игровая логика и ИИ

2001—2017 © GameDev.ru — Разработка игр