Finite State Machines (конечные автоматы)
Finite State Machines (FSM) или конечные автоматы — распространенная и удобная техника для программирования поведения ботов (NPC) в компьютерных играх.
В основу FSM положен принцип того, что в каждый конкретный момент времени NPC находится в некотором четко определенном состоянии. Таких состояний конечное число, и все они известны заранее. Так, например, состояниями бота могут быть: ничего не деланье, хождение по маршруту, отыгрыш звука или анимации. Особым состоянием является нахождение NPC под контролем ИИ игры.
NPC может перейти из одного состояния в другое после выполнения некоторого условия перехода. При задании условия перехода из состояния A в состояние B мы фактически определяем, при каких условиях будет осуществлен переход из одного состояния в другое. При этом переход из B в A требует определения своего собственного условия перехода. Если условия перехода, между какими либо двумя состояниями не задано, то переход считается невозможным.
Структуру FSM можно представить в виде ориентированного графа (рис.1), вершины которого (кружочки) – состояния, а ребра (стрелочки) – условия перехода.
Пример
Состояния:
- 0 – состояние солдата под контролем ИИ
- 1 – солдат говорит «стой, стрелять буду!»
- 2 – солдат говорит «ушел гад»
Условия перехода:
- 0.1 – солдат первый раз видит актера
- 1-0 – солдат закончил говорить фразу «стой стрелять буду!» и видит актера
- 1-2 - солдат закончил говорить фразу «стой стрелять буду!» и потерял из виду актера
- 2-0 - солдат закончил говорить фразу «ушел гад»
Юрий Добронравин
01.11.2003