Я знаю, я знаю, это было довольно давно.
Действительно, в GOAP, реализованном в 2005 году Джеффом Оркиным в FEAR (и повторно использованным в сиквелах, расширении и ... Shadow Of Mordor), действия имеют фиксированную стоимость, варьирующуюся от 0,5 до 8. В общем, стоимость атаки очень высока. дороже, чем стоимость защиты. С этими затратами можно ознакомиться в базе данных игр Free FEAR SDK (2008); они здесь:
{{Animate, 1}, {Attack, 6}, {AttackBurstLimited, 5}, {AttackCrouch, 5}, {AttackFromAmbush, 4}, {AttackFromArmored, 4}, {AttackFromArmoredBounded, 4}, {AttackFromCover, 4}, { AttackFromVehicle, 1}, {AttackFromView, 4.5}, {AttackGrenadeFromCover, 2}, {AttackLunge3D, 1}, {AttackLungeMelee, 1}, {AttackLungeSuicide, 1}, {AttackLungeUncloaked, 1}, {AttackMeleee, 3}, AttackMelee, 3 1}, {AttackMeleeUncloaked, 3}, {AttackReady, 7}, {AttackTurret, 6}, {AttackTurretCeiling, 6}, {BlindFireFromCover, 2}, {Charge, 1}, {DeathOnVehicle, 1}, {DismountNodeUncloaked, 1} , {DismountVehicle, 1}, {DodgeCovered, 1}, {DodgeOnVehicle, 1}, {DodgeRoll, 2}, {DodgeRollParanoid, 2}, {DodgeShuffle, 3}, {DrawWeapon, 1}, {EscapeDanger, 0.5}, { FaceNode, 1}, {FlushOutWithGrenade, 3}, {Follow, 3}, {FollowHeavyArmor, 2}, {FollowPlayer, 2}, {FollowPlayerFidget, 1.8},{FollowWaitAtNode, 4}, {GetOutOfTheWay, 1}, {GotoNode, 1}, {GotoNode3D, 1}, {GotoNodeDirect, 1}, {GotoNodeOfType, 1}, {GotoTarget, 4}, {GotoTarget3D, 4}, {Перейти к , 8}, {GotoValidPosition, 1}, {HolsterWeapon, 1}, {Idle, 2}, {IdleFidget, 1}, {IdleOnVehicle, 1}, {IdleTurret, 2}, {InspectDisturbance, 2}, {InstantDeath, 1 }, {InstantDeathKnockDown, 1}, {KnockDownBullet, 2}, {KnockDownExplosive, 2}, {KnockDownMelee, 2}, {LongRecoilBullet, 3}, {LongRecoilExplosive, 3}, {LongRecoilHelmetPiercing, 3}, 3}, 3}, 3}, 3}, 3}, 3}, 3}, 3}, 3}, 3}, 3}, 3}, {} {LookAtDisturbance, 1.5}, {LookAtDisturbanceFromView, 3}, {LopeToTargetUncloaked, 1}, {MountNodeUncloaked, 1}, {MountVehicle, 1}, {ReactToDanger, 1}, {Reload, 5}, {ReloadCovered, 1}, {ReloadCrouch , 5}, {ShortRecoilMelee, 4}, {Stunned, 1}, {SuppressionFire, 2}, {SuppressionFireFromCover, 1}, {SurveyArea, 1},{TraverseBlockedDoor, 1}, {TraverseLink, 2}, {TraverseLinkUncloaked, 1}, {Uncover, 1}, {UseSmartObjectNode, 3}, {UseSmartObjectNodeMounting, 1}}
Но это не так во всех реализациях GOAP, и, например, Tomb Raiders имеют переменные затраты (например, расстояние для действия Goto).
Действия также имеют предварительные условия, и некоторые действия должны выполняться, несмотря на архитектуру GOAP (например, воспроизводить «ошеломленную» анимацию в реакции, быстро снижающей здоровье - несмотря на цель «Убить врага» и план, который GOAP возвращает для достижения этой цели). В вашем примере, то есть в бегстве от атак, уровень здоровья может быть предварительным условием (и нет необходимости иметь переменные затраты).
Или функция-член Check_Costs () выполняется раньше всего на основе приоритетов Майкла и возвращает динамическую стоимость.
Теперь обратите внимание, что в Shadow Of Mordor разработчики игр пытались поиграть со стоимостью действий, чтобы повлиять на то, что будет выполняться на экране. Оказывается, это не так просто, и даже дешевые действия не так часто появляются: ИИ в игре поддерживает игрока; если игрок не сделает то, что ожидается, AI просто поддержит это, и ... то, что появится на экране, не будет тем, что ожидал дизайн игры.