Я знаю, я знаю, минув досить довго.
Дійсно, у 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}, {AttackMuneee, AttackMongee 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}, {GotoTarget3D, 4}, {GotoTarget3D, 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}, {LongRecoilHelmet, 3}, {LongRecoilHelmet {LookAtDisturbance, 1.5}, {LookAtDisturbanceFromView, 3}, {LopeToTargetUncloaked, 1}, {MountNodeUncloaked, 1}, {MountVehicle, 1}, {ReactToDanger, 1}, {Перезавантажити, 5}, {ReloadCovered, 1} , 5}, {ShortRecoilMelee, 4}, {приголомшений, 1}, {SuppressionFire, 2}, {SuppressionFireFromCover, 1}, {SurveyArea, 1},{TraverseBlockedDoor, 1}, {TraverseLink, 2}, {TraverseLinkUncloaked, 1}, {Розкрити, 1}, {UseSmartObjectNode, 3}, {UseSmartObjectNodeMount, 1}}
Але це не так у всіх реалізаціях GOAP, і, наприклад, Tomb Raiders мають змінні витрати (наприклад, відстань для дії Goto).
Дії також мають передумови, і деякі дії повинні бути відіграні, незважаючи на архітектуру GOAP (наприклад, відтворити "приголомшену" анімацію в реакції, що швидко знижує здоров'я - незважаючи на ціль "Вбити ворога" та план, який GOAP повертає для задоволення цієї мети). У вашому прикладі, тобто втеча від нападу, рівень здоров'я може бути передумовою (і не потрібно мати змінних витрат).
Або функція члена Check_Costs () виконується раніше всього іншого, виходячи з пріоритетів Майкла, і повертає динамічну вартість.
Тепер зауважте, що в Shadow Of Mordor розробники ігор намагалися пограти з витратами на дії, щоб вплинути на те, що буде виконуватися на екрані. Виявляється, це не так просто і навіть дешеві дії проявляються не так часто: AI в грі підтримує гравця; якщо гравець не зробить того, що очікується, AI просто підтримає це і ... те, що з'явиться на екрані, не буде тим, що очікував ігровий дизайн.