Thứ Tư, 22 tháng 1, 2014

AI 1.4 - CÂY HÀNH VI - BEHAVIOR TREES


  1.4 - Cây hành vi - Behavior Trees

Cây hành vi - Behavior Trees
Cây hành vi là các kỹ thuật dùng để thể hiện và điều khiển tính logic phía sau các nhân vật AI. Nó trở nên nổi tiếng đối với các trình ứng dụng trong các game AAA, chẳng hạn như Halo và Spore.


http://www.7outof10.co.uk/wp-content/uploads/2011/11/HaloAnniversary_banner1.jpg
Ảnh trong game Halo

Trước đây, chúng ta chỉ nói ngắn gọn về FSM. FSM đưa ra một cách rất đơn giản để định tính logic của một nhân vật AI, dựa vào trạng thái (state) và sự thay đổi trạng thái (transition) khác nhau của chúng.

Tuy nhiên, FSM được cho là khó khăn trong việc sắp xếp và tái sử dụng logic. Chúng ta cần thêm các trạng thái (state) và nhiều sự thay đổi trạng thái (transition), để hỗ trợ tất cả các kịch bản, mà chúng ta muốn cân nhắc cho nhân vật AI của mình. Vì thế, chúng ta cần tiến gần đến sự co giãn khi giải quyết vấn đề rắc rối này. Cây hành vi là cách hay hơn để thực thi các nhân vật AI có khả năng sẽ trở nên càng ngày càng phức tạp.

Các thành phần cơ bản của một cây hành vi chính là nhiệm vụ (task), đối với FSM thì các trạng thái chính là các thành phần chủ yếu. Có vài nhiệm vụ (task) khác nhau chẳng hạn như Chuỗi sự kiện (Sequence), Bộ chọn (Selector), Người trang trí (Decorator) và Song song (Parallel). Điều này rất ư là lộn xộn. Cách tốt nhất để hiểu nó chính là nhìn vào một ví dụ cụ thể. Chúng ta hãy thử chuyển ví dụ của chúng ta từ phần FSM bằng cách dùng một cây hành vi nhé. Chúng ta sẽ phá bỏ tất cả các bộ chuyển trạng thái (transition) cùng các trạng thái (state) để tạo thành các nhiệm vụ (task).

Task
Chúng ta hãy nhìn vào một nhiệm vụ của Bộ chọn nhiệm vụ (Selector task) của cây hành vi này. Bộ chọn (Selector) thể hiện bằng một hình tròn với một dấu chấm hỏi bên trong. Đầu tiên, nó sẽ chọn tấn công người chơi. Nếu nhiệm vụ tấn công (Attack) thành công, bộ chọn (Selector) hoàn tất và sẽ trở lại nút cha, nếu nó chỉ có một nút thôi. Còn nếu nhiệm vụ Attack thất bại, nó sẽ thử đến nhiệm vụ Đuổi theo (Chase). Nếu nhiệm vụ Chase thất bại nữa, nó sẽ thử nhiệm vụ Do thám (Patrol).


Selector task

Vậy còn các trận đấu thử nghiệm (test) thì sao? Chúng cũng là một phần của các nhiệm vụ (task) trong cây hành vi đấy.

Biểu đồ bên dưới sẽ chỉ ra cách dùng các nhiệm vụ Chuỗi sự kiện (Sequence task), được biểu thị bằng một hình vuông có mũi tên bên trong. Gốc của bộ chọn có thể chọn hành động của Chuỗi sự kiện đầu tiên (Sequence).

Nhiệm vụ đầu tiên của hành động Chuỗi sự kiện (Sequence) chính là kiểm tra nhân vật của người chơi có Đủ gần để tấn công hay không? (Close enough to attack?).

- Nếu chính là thế, nó sẽ bắt đầu thực hiện nhiệm vụ tiếp theo, đó chính là tấn công người chơi (Attack). Nếu nhiệm vụ tấn công (Attack) cũng trả về kết quả thành công, toàn bộ chuỗi sự kiện (Sequence) sẽ trả về kết quả thành công, và bộ chọn (Selector) được hoàn tất với hành vi này, và nó sẽ không tiếp tục các nhiệm vụ của Chuỗi sự kiện (Sequence task) khác nữa.

- Nếu không phải, thì hành động Chuỗi sự kiện (Sequence) sẽ không bắt đầu nhiệm vụ tấn công (Attack), và trả về cho bộ chọn cha trạng thái thất bại. Rồi bộ chọn sẽ chọn nhiệm vụ kế tiếp trong chuỗi sự kiện, Người chơi Mất dấu hoặc Bị giết? (Lost or Killed Player?).


Sequence Tasks

Hai thành phần chung khác chính là Song song (Parallel) Người trang trí (Decorator).

Một nhiệm vụ Song song (Parallel) sẽ thực thi tất cả các nhiệm vụ con của nó cùng một lúc đấy, trong khi Chuỗi sự kiện (Sequence) cùng nhiệm vụ Bộ chọn (Selector) chỉ thực thi các nhiệm vụ con của nó từng cái một mà thôi.

Người trang trí (Decorator) là một kiểu nhiệm vụ khác, nó chỉ có một con thôi. Nó có thể thay đổi hành vi của các nhiệm vụ của chính đứa con của nó, bao gồm việc có vận hành nhiệm vụ của con nó hay không, bao nhiêu lần nên vận hành,...

Chúng ta sẽ nghiên cứu cách thực hiện một hệ thống cây hành vi cơ bản trong AI 9. Cây hành vi - Behavior Trees. Có một bộ tích hợp miễn phí dành cho Unity với tên gọi là Behave in the Unity Asset Store. Hành vi (Behave) là một công cụ hữu ích, GUI editor miễn phí để cài đặt cây hành vi cho các nhân vật AI, và chúng ta sẽ tìm hiểu chi tiết của nó sau nhé.


Không có nhận xét nào:

Đăng nhận xét