Lo sé, lo sé, ha pasado bastante tiempo.
De hecho, en GOAP implementado en 2005 por Jeff Orkin en FEAR (y reutilizado en las secuelas, extensión y ... Shadow Of Mordor), las acciones tienen costos fijos, que van desde 0.5 a 8. En general, el costo de atacar es mucho más caro que el costo de defender. Se puede acceder a estos costos en la base de datos de juegos del Free FEAR SDK (2008); aquí están:
{{Animate, 1}, {Attack, 6}, {AttackBurstLimited, 5}, {AttackCrouch, 5}, {AttackFromAmbush, 4}, {AttackFromArmored, 4}, {AttackFromArmoredBounded, 4}, {AttackFromArmoredBounded, 4}, {AttackFromCover, 4}, { AttackFromVehicle, 1}, {AttackFromView, 4.5}, {AttackGrenadeFromCover, 2}, {AttackLunge3D, 1}, {AttackLungeMelee, 1}, {AttackLungeSuicide, 1}, {AttackLungeUncloaked, 1}, {AttackMelee, 3 }L, {AttackMelee, 3}, {Attack 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}, {GotoT , 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}, {LongRecoilMe, 3, {LongRecoilMe, {LookAtDisturbance, 1.5}, {LookAtDisturbanceFromView, 3}, {LopeToTargetUncloaked, 1}, {MountNodeUncloaked, 1}, {MountVehicle, 1}, {ReactToDanger, 1}, {Reload, 5}, {ReloadCovered, 1}, {Reloch , 5}, {ShortRecoilMelee, 4}, {Aturdido, 1}, {SuppressionFire, 2}, {SuppressionFireFromCover, 1}, {SurveyArea, 1},{TraverseBlockedDoor, 1}, {TraverseLink, 2}, {TraverseLinkUncloaked, 1}, {Uncover, 1}, {UseSmartObjectNode, 3}, {UseSmartObjectNodeMounted, 1}}
Pero no es el caso en todas las implementaciones de GOAP y, por ejemplo, los Tomb Raiders tienen costos variables (por ejemplo, la distancia para una acción Goto).
Las acciones también tienen condiciones previas y algunas acciones se deben jugar a pesar de la arquitectura GOAP (por ejemplo, reproducir una animación "aturdida" en reacción que disminuye rápidamente la salud, a pesar del objetivo "Kill Enemy" y el plan que GOAP regresa para satisfacer ese objetivo). En su ejemplo, es decir, huir frente a atacar, el nivel de salud puede ser una condición previa (y no es necesario tener costos variables).
O bien, una función miembro Check_Costs () se ejecuta antes que nada, según las prioridades de Michael, y devuelve el costo dinámico.
Ahora, tenga en cuenta que en Shadow Of Mordor los desarrolladores de juegos intentaron jugar con los costos de las acciones para influir en lo que se ejecutaría en la pantalla. Resulta que no es tan fácil e incluso la acción barata no aparece tan a menudo: la IA en un juego apoya al jugador; si el jugador no hace lo que se espera, la IA solo lo admitirá y ... lo que aparecerá en la pantalla no será el diseño del juego esperado.