Các loại nút trong cây hành vi (Simpson, 2014)

Một phần của tài liệu Thiết kế mô hình tri giác và nhận thức cho các npcs trong stealth game (Trang 58 - 60)

Có ba loại nút chính trong cây hành vi, đó là:

• Nút kết hợp (Composite). Nút kết hợp là một nút có thể có một hoặc nhiều nút con. Nó sẽ xử lý một hoặc nhiều nút con này theo thứ tự đầu tiên đến cuối cùng hoặc thứ tự ngẫu nhiên tùy thuộc vào từng loại nút kết hợp cụ thể và ở một lúc nào đó quá trình xử lý của nó sẽ hoàn tất và thông báo Success hay Failure cho nút cha của nó, mà sự thành công hay thất bại của nó sẽ được xác định bởi sự thành công hay thất bại của các nút con của nó. Trong thời gian nó đang xử lý các nút con của mình, nó sẽ trả về trạng thái Running cho nút cha. Nút kết hợp thường được sử dụng nhất là nút Sequence, nút này sẽ xử lý từng con của mình theo trình tự từ trái sang phải, trả về Failure khi bất kỳ nút con nào trả về Failure và trả về Success nếu tất cả con của nó trả về trạng thái Success.

• Nút trang trí (Decorator). Một nút trang trí, khác với nút tổng hợp là nó chỉ có thể có một nút con. Chức năng của nó là chuyển đổi kết quả mà nó nhận được từ trạng thái của nút con hoặc kết thúc việc xử lý nút con hoặc lặp lại việc xử lý nút con, tùy thuộc vào từng loại nút trang trí.

Một ví dụ thường được sử dụng của nút trang trí là nút đảo (Inverter) , nó sẽ đảo ngược kết quả của trạng thái mà nó nhận được từ nút con. Nếu nút con của nó không thành công thì nó sẽ trả về Success cho nút cha, còn nếu nút con của nó thành công thì nó sẽ trả về Failure cho nút cha.

• Nút lá (Leaf). Đây là những nút cấp thấp nhất và chúng không có nút con. Tuy nhiên, nút lá là loại nút được dùng nhiều nhất trong số các loại nút, vì chúng sẽ định nghĩa việc kiểm tra một điều kiện hoặc hành động cụ thể của nhân vật bất kỳ để làm cho cây hành vi thực sự làm được những việc hữu ích.

Một ví dụ cụ thể như đã được sử dụng ở trên là nút Đi bộ (Walk). Nút Đi bộ này sẽ làm cho nhân vật đi bộ đến một điểm cụ thể trên bản đồ và trả về Success hoặc Failure tùy thuộc vào kết quả của hành động đi bộ đó.

Chúng ta có thể tự mình tạo ra các nút lá với bất kỳ hành vi nào chúng ta muốn, từ đó cho phép ta tạo các cây hành vi khá mạnh mẽ có khả năng thực hiện các hành vi khá phức tạp bằng cách kết hợp với các nút kết hợp (composite) và nút trang trí (decorator).

Các nút lá cũng có thể sử dụng tham số (parameters). Ví dụ nút lá Đi bộ (Walk) sẽ cần một vị trí để đi đến. Các tham số này có thể được lấy từ các biến được lưu trữ bởi các NPC. Ví dụ, một vị trí để đi đến có thể được xác định bởi nút GetSafeLocation, được lưu trữ trong một biến, và sau đó nút Walk có thể sử dụng biến đó để xác định điểm đến. Thông qua việc sử dụng một biến được chia sẻ giữa các nút để lưu trữ và thay đổi dữ liệu liên tục trong quá trình xử lý cây làm cho cây hành vi trở nên vô cùng mạnh mẽ.

Nút kết hợp (Composite)

Nút chuỗi (Sequence)

Một nút chuỗi sẽ xử lý các con của nó theo thứ tự, bắt đầu với con bên trái cùng và khi nút con đó trả về Success sẽ xử lý nút con thứ hai và cứ tiếp tục như vậy cho đến hết nút con. Nếu bất kỳ nút con nào trả về Failure, thì nút chuỗi này sẽ ngay lập tức trả lại về Failure cho nút cha của nó. Nếu nút con cuối cùng của nút chuỗi trả về Success, thì nó sẽ trả về Success cho cha của nó.

Cách áp dụng nút chuỗi dễ thấy nhất là định nghĩa một chuỗi các tác vụ phải được hoàn thành toàn bộ và khi không hoàn thành một tác vụ bất kỳ thì việc xử lý tiếp tục chuỗi tác vụ đó trở nên thừa thãi. Ví dụ như hình bên dưới.

Một phần của tài liệu Thiết kế mô hình tri giác và nhận thức cho các npcs trong stealth game (Trang 58 - 60)