Một ví dụ về nút chọn (Selector)(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 61 - 63)

Ở đây chúng ta có thể xử lý trường hợp cửa bị khóa một cách thông minh, chỉ với việc sử dụng một số ít các nút mới. Khi nút chọn được xử lý, đầu tiên nó sẽ xử lý nút Open Door. Vì đó là hành động đầu tiên mà chúng ta sẽ làm nếu không có gì bất thường xảy ra. Nếu việc đó thành công thì nút chọn sẽ trả về Success và công việc mở cửa đã xong. Không cần phải xử lý thêm bất kỳ nút con nào khác của nút chọn đó. Tuy nhiên, nếu cửa không mở được vì có người đã khóa nó, thì nút Open Door sẽ bị thất bại, trả về Failure cho nút chọn cha. Tại thời điểm này, nút chọn sẽ thử nút con thứ hai đó là cố gắng mở khóa cửa. Hành động này là một chuỗi vì nó cần phải mở khóa rồi mở cửa thì hành động mở cửa mới được xem là thành công. Nếu một trong hai bước mở khóa cửa không thành công (có lẽ

do nhân vật không có chìa khóa, hoặc kỹ năng mở khóa cần thiết, hoặc có lẽ nhân vật đã tìm cách mở khóa, nhưng phát hiện thấy cánh cửa bị đóng đinh khi cố gắng mở nó) sẽ trả về Failure cho nút chọn, sau đó sẽ thử hành động thứ ba, đó là phá cửa vào. Nếu nhân vật không đủ mạnh, thì việc phá cửa có thể không thành công. Trong trường hợp này, không còn hành động nào để thử nữa và nút chọn sẽ trả về Failure, và điều này sẽ khiến nút chuỗi cha của nút chọn không thành công, từ bỏ ý định đi qua cửa.

Nút chọn/nút chuỗi ngẫu nhiên (Random Selector/Sequence)

Nút chọn/nút chuỗi ngẫu nhiên hoạt động giống hệt như nút chọn/nút chuỗi bình thường, ngoại trừ thứ tự mà các nút con được xử lý là ngẫu nhiên. Những nút này có thể được sử dụng để tăng thêm tính khó đoán cho một nhân vật NPC trong những trường hợp không có thứ tự thích hợp rõ ràng để thực hiện hành động có thể xảy ra.

Nút trang trí (Decorator Node)

Nút đảo (Inverter)

Nói một cách đơn giản, nút này sẽ đảo ngược hay phủ định kết quả của nút con của nó. Success trở thành Failure và Failure trở thành Success. Nút này thường được sử dụng nhất trong các trường hợp kiểm tra điều kiện trước khi hành động.

Nút thành công (Succeeder)

Nút thành công sẽ luôn trả về Success, bất kể nút con thực sự trả về gì đi nữa. Nút này hữu ích trong trường hợp chúng ta vẫn muốn xử lý các nút con của một nút chuỗi kể cả khi nút con trước đó thất bại. Nút ngược lại với nút này là không cần thiết, vì nút đảo sẽ biến nút thành công thành nút "thất bại" (failer).

Nút lặp (Repeater)

Một nút lặp sẽ xử lý lại nút con của nó mỗi khi nút con của nó trả về một kết quả. Nút này thường được sử dụng ở gốc cây của cây hành vi, để làm cho cây chạy liên tục.

Nút lặp cho đến khi thất bại (Repeat Until Fail)

Giống như nút lặp, nút này sẽ tiếp tục xử lý lại con của chúng. Nhưng cho đến khi nút con của nó trả về Failure, lúc đó nút lặp sẽ trả về Success cho nút cha của nó.

6.2 Behavior Designer

Mô hình hành vi của NPC sẽ được hiện thực bằng cách sử dụng Behavior Designer. Behavior Designer là một asset có thể tải về từ Unity Asset Store. Behavior Designer cung cấp một editor trực quan với một API mạnh mẽ

cho phép chúng ta dễ dàng xây dựng một cây hành vi từ đơn giản đến phức tạp. Asset này đã bao gồm hàng trăm hành vi được định nghĩa sẵn, giúp chúng ta có thể tạo ra các AI phức tạp mà không cần phải viết một dòng code nào, nếu muốn chúng ta có thể tự viết code cho hành vì mới hoặc chỉnh sửa các hành vi sẵn có tùy theo ý muốn của mình.

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 61 - 63)

Tải bản đầy đủ (PDF)

(125 trang)