Я пытаюсь реализовать GOAP в своей игре. Игра представляет собой симуляционную игру, которая не только выиграет от GOAP, но и является практически обязательным требованием, зависящим от того, что может делать агент.
У меня есть следующий код. Здесь нет планировщика, только определения действий, состояния и т.д. положение, подняв предмет и переместив его в другое положение. Позже целью может быть перемещение n предметов или что-то в этом роде.
Действия будут такими:
- Goto (ставит агента на позицию)
- PickUp (помещает предмет во владение)
- Goto (ставит агента на позицию)
- Drop (помещает предмет в нужное место) Цель достигнута!
Но как сделать Я использую здесь действие Goto
дважды? Эффект тот же, установка переменной isAtPosition. Нужно ли мне создавать новую переменную состояния для «isAtItemPosition» или «isAtDestinationPosition»?
Потому что это похоже на то, что я мог бы эффективно создавать определенные c действия для каждой возможной цели, в результате чего я определяю все возможные последовательности действий.
Как мне закодировать информацию о состоянии таким образом, чтобы одни и те же действия из пула можно было применять на разных этапах с разным эффектом? (Перейти к положению элемента или перейти к положению назначения).