Ước tính chi phí trong hệ thống GOAP


9

Tôi hiện đang phát triển một hệ thống GOAP trong Java. Có thể tìm thấy lời giải thích về GOAP tại http://web.media.mit.edu/~jorkin/goap.html . Về cơ bản, nó sử dụng A * để vẽ giữa các Hành động làm thay đổi trạng thái thế giới.

Để cung cấp cơ hội công bằng cho tất cả các Hành động và Mục tiêu được thực thi, tôi đang sử dụng chức năng heuristic để ước tính chi phí thực hiện một việc gì đó. Cách tốt nhất để ước tính chi phí này là gì để nó có thể so sánh với tất cả các chi phí khác?

Ví dụ, ước tính chi phí chạy trốn khỏi kẻ thù so với tấn công nó - làm thế nào để tính toán chi phí để có thể so sánh được?


Chúng tôi đang sử dụng GOAP cho trò chơi RTS của chúng tôi và sẽ sớm đăng thêm các hướng dẫn như thế này: indiedb.com/games/attack-of-the-gelatinous-blob/news/ Lỗi
Erlend

Câu trả lời:


4

Để làm cho tất cả các chi phí có thể so sánh, bạn chỉ cần sử dụng cùng một heuristic cho tất cả các hành động. Ví dụ: tất cả các hành động đều có một danh sách các kết quả tiềm năng và tất cả các kết quả có một giá trị nhất định đối với thực thể.

Ví dụ, có một vực sâu với nước và thực thể đang khát. Vì vậy, chúng tôi xem xét một hành động mà nhóm có sẵn để đáp ứng nhu cầu đó:

Đầu tiên các ưu tiên thực thể liên quan đến những nơi này, bạn có thể gọi đây là các sửa đổi. Một số trong số này sẽ thay đổi theo thời gian và phụ thuộc vào thực thể. Ví dụ, một con kiến ​​có thể bớt lo lắng về việc sống sót và nhiều hơn về các mối quan tâm thuộc địa. Hoặc nếu một thực thể đã đi một lúc mà không uống, ưu tiên khát thỏa mãn có thể ghi đè lên người khác.

Các ưu tiên thực thể :

Thỏa mãn cơn khát: 40
Giữ khô: 10
Sống sót: 100

Sau đó, những gì vị trí đại diện:

Địa điểm : Bể bơi
Hành động : Thu thập nước
* Kết quả tiềm năng: * :
Thỏa mãn cơn khát - (-95)
Bị ướt - 10
Đuối nước - 1

Vì vậy, chúng tôi có thể tính chi phí hành động đó tại: (40 * -95) + (10 * 10) + (100 * 1) = -3600

Nơi thu nước từ một con sông đang hoành hành có thể trông như:

Địa điểm : Dòng sông hoành
hành : Thu thập nước
* Kết quả tiềm năng: * :
Thỏa mãn cơn khát - (-95)
Bị ướt - 90
Đuối nước - 60

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

Vì vậy, rõ ràng đây là một lựa chọn tốt hơn để thu thập nước từ hồ bơi. Có lẽ nếu dòng sông đang hoành hành là lựa chọn duy nhất thì thực thể sẽ đợi cho đến khi mức độ ưu tiên khát thỏa mãn của nó tăng lên rất cao trước khi thử dòng sông.

Bạn có thể muốn giữ mọi thứ đơn giản hơn nhiều bắt đầu. Chỉ cần có một vài biến có thể áp dụng nhiều hơn trên toàn cầu. Thích sống, thỏa mãn nhu cầu. Trong ví dụ về chiến đấu hoặc chuyến bay của bạn, bạn cần đưa ra cho mỗi thực thể một xếp hạng chiến đấu, để họ có thể tự xếp hạng một cách hiệu quả so với thực thể khác cho mục đích ghi điểm.


Cảm ơn rất nhiều! Dự đoán về tất cả các kết quả tiềm năng nghe có vẻ là một ý tưởng tốt hơn những gì tôi đã có.
fullwall

0

Tôi biết, tôi biết, đã khá lâu rồi.

Thật vậy, trong GOAP được thực hiện vào năm 2005 bởi Jeff Orkin trong FEAR (và được sử dụng lại trong các phần tiếp theo, phần mở rộng và ... Shadow Of Mordor), các hành động có chi phí cố định, từ 0,5 đến 8. Nói chung, chi phí tấn công là rất nhiều đắt hơn chi phí phòng thủ. Các chi phí này có thể được truy cập trong cơ sở dữ liệu trò chơi của SDK FEAR miễn phí (2008); họ đây rồi:


{{Animate, 1}, {Attack, 6}, {AttackBurstLrict, 5}, {AttackCrouch, 5}, {AttackFromAmbush, 4}, {AttackFromArmored, 4}, {AttackFromArmoredBounded, 4}, {AttackFromArmoredBounded, 4}, {AttackFromArmored AttackFromVehicle, 1}, {AttackFromView, 4.5}, {AttackGrenadeFromCover, 2}, {AttackLunge3D, 1}, {AttackLungeMelee, 1}, {AttackLungeSu killer, 1}, {AttackLungeUncloilt, 1 1}, {AttackMeleeUncloaken, 3}, {AttackReady, 7}, {AttackTurret, 6}, {AttackTurretCading, 6}, {BlindFireFromCover, 2}, {Charge, 1}, {DeathOnVehicle, 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}, {GotoT, 4 , 8}, {GotoValidP vị trí, 1}, {HolsterWeapon, 1}, {Idle, 2}, {IdleFidget, 1}, {IdleOnVehicle, 1}, {IdleTurret, 2}, {InspectDisturbance, 2}, {InspectDisturbance, 2} }, {InstantDeathKnockDown, 1}, {KnockDownBONS, 2}, {KnockDownExplosive, 2}, {KnockDownExplosive, 2}, {KnockDownMelee, 2}, {LongRecoilBONS, 3}, {LongRecoilBpl, 3 {LookAtDisturbance, 1.5}, {LookAtDisturbanceFromView, 3}, {LopeToTargetUncloaken, 1}, {MountNodeUncloaken, 1}, {MountVehicle, 1}, {ReactToDanger, 1}, Tải lại , 5}, {ShortRecoilMelee, 4}, {Choáng váng, 1}, {SuppressionFire, 2}, {SuppressionFireFromCover, 1}, {SurveyArea, 1},{TraverseBlockedDoor, 1}, {TraverseLink, 2}, {TraverseLinkUncloaken, 1}, {Unpack, 1}, {UseSmartObjectNode, 3}, {UseSmartObjectNodeMounted, 1}}


Nhưng đó không phải là trường hợp trong tất cả các triển khai GOAP và, ví dụ, Tomb Raiders có chi phí biến đổi (ví dụ: khoảng cách cho một hành động Goto).

Các hành động cũng có các điều kiện tiên quyết và một số hành động phải được thực hiện mặc dù kiến ​​trúc GOAP (ví dụ: phát hoạt hình "choáng váng" trong phản ứng làm giảm sức khỏe nhanh chóng - bất chấp Mục tiêu "Tiêu diệt kẻ thù" và kế hoạch mà GOAP quay trở lại để đáp ứng Mục tiêu đó). Trong ví dụ của bạn, tức là chạy trốn và tấn công, mức độ sức khỏe có thể là điều kiện tiên quyết (và không cần phải có chi phí biến đổi).

Hoặc hàm thành viên Check_Costs () được thực thi trước mọi thứ khác, dựa trên các ưu tiên của Michael và trả về chi phí động.

Bây giờ, xin lưu ý rằng trong Shadow Of Mordor, các nhà phát triển trò chơi đã cố gắng chơi với chi phí cho các hành động để ảnh hưởng đến những gì sẽ được thực hiện trên màn hình. Hóa ra đó không phải là hành động dễ dàng và thậm chí rẻ tiền thường không xuất hiện thường xuyên: AI trong trò chơi hỗ trợ người chơi; Nếu người chơi không làm những gì được mong đợi, AI sẽ chỉ hỗ trợ điều đó và ... những gì sẽ xuất hiện trên màn hình sẽ không phải là những gì thiết kế trò chơi mong đợi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.