Finite State Machines (конечные автоматы)

Материал из xrWiki
(перенаправлено с «FSM»)
Перейти к: навигация, поиск

Finite State Machines (FSM) или конечные автоматы — распространенная и удобная техника для программирования поведения ботов (NPC) в компьютерных играх.

В основу FSM положен принцип того, что в каждый конкретный момент времени NPC находится в некотором четко определенном состоянии. Таких состояний конечное число, и все они известны заранее. Так, например, состояниями бота могут быть: ничего не деланье, хождение по маршруту, отыгрыш звука или анимации. Особым состоянием является нахождение NPC под контролем ИИ игры.

NPC может перейти из одного состояния в другое после выполнения некоторого условия перехода. При задании условия перехода из состояния A в состояние B мы фактически определяем, при каких условиях будет осуществлен переход из одного состояния в другое. При этом переход из B в A требует определения своего собственного условия перехода. Если условия перехода, между какими либо двумя состояниями не задано, то переход считается невозможным.

Структуру FSM можно представить в виде ориентированного графа, вершины которого (кружочки) – состояния, а ребра (стрелочки) – условия перехода.

fsm-dobronravin-illustrate.png


Пример

Состояния:

  • 0 – состояние солдата под контролем ИИ
  • 1 – солдат говорит «стой, стрелять буду!»
  • 2 – солдат говорит «ушел гад»

Условия перехода:

  • 0.1 – солдат первый раз видит актера
  • 1-0 – солдат закончил говорить фразу «стой стрелять буду!» и видит актера
  • 1-2 - солдат закончил говорить фразу «стой стрелять буду!» и потерял из виду актера
  • 2-0 - солдат закончил говорить фразу «ушел гад»

Юрий Добронравин

01.11.2003