GOAP 시스템에서 비용 추정


9

현재 Java로 GOAP 시스템을 개발 중입니다. GOAP에 대한 설명은 http://web.media.mit.edu/~jorkin/goap.html 에서 찾을 수 있습니다 . 기본적으로 A *를 사용하여 월드 상태를 변경하는 동작 사이를 플롯합니다.

모든 행동과 목표를 실행할 수있는 공정한 기회를 제공하기 위해 휴리스틱 기능을 사용하여 무언가를 수행하는 비용을 추정하고 있습니다. 다른 모든 비용과 비교할 수 있도록이 비용을 추정하는 가장 좋은 방법은 무엇입니까?

예를 들어, 적으로부터 도망가는 비용과 공격하는 비용을 추정하는 방법-비용을 어떻게 비교할 수 있습니까?


우리는 RTS 게임에 GOAP를 사용하고 있으며 다음과 같은 더 많은 튜토리얼을 곧 게시 할 예정입니다 : indiedb.com/games/attack-of-the-gelatinous-blob/news/…
Erlend

답변:


4

모든 비용을 비교하려면 모든 작업에 대해 동일한 휴리스틱 만 사용하면됩니다. 예를 들어, 모든 행동에는 잠재적 인 결과 목록이 있으며 모든 결과에는 엔터티에 특정한 가치가 있습니다.

예를 들어, 물이있는 깊은 수영장이 있으며 개체는 목이 마르다. 따라서 우리는 풀이 그 요구를 충족시키기 위해 사용할 수있는 조치를 살펴 봅니다.

먼저 이러한 장소와 관련된 엔티티 우선 순위를 수정 자라고 부를 수 있습니다. 이들 중 일부는 시간이 지남에 따라 변경되며 엔티티에 따라 다릅니다. 예를 들어, 개미는 생존에 대한 걱정이 적고 식민지 문제에 대해 더 걱정할 수 있습니다. 또는 어떤 주체가 술을 마시지 않고 시간을 보낸 경우, 갈증을 충족시키는 우선 순위는 다른 사람들을 무시할 수 있습니다.

엔티티 우선 순위 :

갈증을 충족 시키십시오 : 40
건조한 상태를 유지하십시오 : 10
살아있는 상태를 유지하십시오 : 100

그런 다음 위치가 나타내는 것 :

위치 : 풀
동작 : 물 수집
* 잠재적 결과 : * :
갈증을 충족 시키십시오-(-95)
젖게-10
익사-1

따라서 (40 * -95) + (10 * 10) + (100 * 1) = -3600에서 해당 작업 비용을 계산할 수 있습니다.

성난 강에서 물을 모으는 곳은 다음과 같습니다.

위치 : 격노 한 강
행동 : 물 수집
* 잠재적 결과 : * :
갈증 충족-(-95)
젖기-90
익사-60

(40 * -95) + (10 * 90) + (100 * 60) = 3100

따라서 수영장에서 물을 수집하는 것이 더 나은 선택입니다. 성난 강이 유일한 선택이라면, 강을 시도하기 전에 갈증을 해소하는 우선 순위가 매우 높아질 때까지 기다릴 것입니다.

일을 훨씬 간단하게 시작하고 싶을 수도 있습니다. 더 전역 적으로 적용 할 수있는 몇 가지 변수 만 있습니다. 살아있는 것처럼 요구를 충족 시키십시오. 전투 또는 비행 사례에서 각 엔티티에 전투 등급을 부여해야 점수 목적으로 다른 엔티티와 효과적으로 순위를 지정할 수 있습니다.


고마워요! 모든 잠재적 결과에 대한 예측은 내가 가진 것보다 더 나은 아이디어처럼 들립니다.
fullwall December

0

꽤 오래 걸렸습니다.

실제로, FEAR에서 Jeff Orkin에 의해 2005 년에 구현 된 GOAP에서 (그리고 속편, 확장 및 ... 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}, {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}, {GotoTargetLost , 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}, {LongRecoilMelee {LookAtDisturbance, 1.5}, {LookAtDisturbanceFromView, 3}, {LopeToTargetUncloaked, 1}, {MountNodeUncloaked, 1}, {MountVehicle, 1}, {ReactToDanger, 1}, {Reload, 5}, {ReloadCovered, 1}, {ReloadCred, 1}, {ReloadCred, 1} , 5}, {ShortRecoilMelee, 4}, {Stunned, 1}, {SuppressionFire, 2}, {SuppressionFireFromCover, 1}, {SurveyArea, 1},{TraverseBlockedDoor, 1}, {TraverseLink, 2}, {TraverseLinkUncloaked, 1}, {Uncover, 1}, {UseSmartObjectNode, 3}, {UseSmartObjectNodeMounted, 1}}


그러나 모든 GOAP 구현에서는 그렇지 않으며, 예를 들어 툼 레이더에는 다양한 비용이 있습니다 (예 : Goto 작업 거리).

액션에는 전제 조건이 있으며 GOAP 아키텍처에도 불구하고 일부 액션을 수행해야합니다 (예 : "Kill Enemy"목표 및 GOAP가 해당 목표를 충족시키기 위해 반환하는 계획에도 불구하고 건강이 급격히 감소하는 반응으로 "조율 된"애니메이션 재생). 예를 들어 도망 치거나 공격하는 등의 경우 건강 수준은 전제 조건이 될 수 있습니다 (가변 비용은 필요 없음).

또는 Michael의 우선 순위를 기반으로 Check_Costs () 멤버 함수가 다른 것보다 먼저 실행되고 동적 비용을 반환합니다.

이제 Shadow Of Mordor 게임에서 개발자는 화면에서 실행될 항목에 영향을 미치기 위해 작업 비용을 처리하려고 시도했습니다. 그렇게 쉽고 값싼 행동이 그렇게 자주 나타나는 것은 아니라는 것이 밝혀졌습니다. 게임의 AI는 플레이어를 지원합니다. 플레이어가 예상 한 것을 수행하지 않으면 AI는이를 지원하고 화면에 표시되는 것은 게임 디자인이 아닌 것이됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.