Các khái niệm sử dụng để cài đặt AI Agent:

Một phần của tài liệu Xây dựng trò chơi bắn súng trực tuyến 3d (FPS multiplayer online game) (Trang 74 - 79)

- Các tính năng khác

CHƯƠNG V I XÂY DỰNG ỨNG DỤNG 6.1 Xây dựng mơ hình 3D:

6.5.1. Các khái niệm sử dụng để cài đặt AI Agent:

Agent:

- Agent là 1 hình thể vật thể được mơ phỏng ra để định hình cho AI biết về các đặc tính của vật thể mà nó điều khiển. Agent được quy ước là 1 hình trụ. Agent có một số thơng số cơ bản để điều chỉnh như sau:

● Radius: bán kính cơ thể của vật ● Height: chiều cao của vật thể

● Step Height: chênh lệch độ cao tối đa mà vật có thể di chuyển lên được (bậc cầu thang).

● Max Slope: độ dốc tối đa mà vật có thể di chuyển lên được (sườn dốc).

Báo cáo Đề tài Đồ án 2 - lớp SE122.M11 Xây dựng trị chơi bắn súng trực tuyến 3D

Hình 6.5.1.1 Giao diện chỉnh sửa Agent

- Khi 1 object sử dụng chung Agent cùng với các component liên quan đến kích cỡ object khác (Character Controller, Rigidbody, Collider, ...), developer phải đảm bảo các thông số trên trùng khớp nhau để AI có thể hoạt động mà khơng gặp tình trạng vướng mắc.

Unity NavMesh:

- Unity NavMesh là một tính năng trong Unity giúp người dùng tạo ra một nhóm các mặt phẳng ấn định rằng với loại Agent đó, những phần nào được xác định là “di chuyển được”.

Báo cáo Đề tài Đồ án 2 - lớp SE122.M11 Xây dựng trò chơi bắn súng trực tuyến 3D

- Mỗi NavMesh chỉ được render cho một loại Agent.

- Các NavMesh được tạo bởi các điểm góc (corner) là cơ sở để các NavMeshAgent tính tốn đường đi đến điểm đích.

Hình 6.5.1.2 NavMesh được tạo ra trên bản đồ

Báo cáo Đề tài Đồ án 2 - lớp SE122.M11 Xây dựng trò chơi bắn súng trực tuyến 3D

Hình 6.5.1.3 Bảng điều khiển của component Nav Mesh Agent

- Nav Mesh Agent là component chính dùng để điều khiển hành vi di chuyển của AI. AI có một số thơng số cơ bản để điều chỉnh như sau:

● Agent Type: loại Agent sử dụng cho object, Agent chỉ di chuyển được trên NavMesh dành cho chỉnh Agent đó.

● Speed: tốc độ di chuyển ● Angular Speed: tốc độ xoay

● Acceleration: gia tốc của vật, thể hiện bằng khả năng thay đổi tốc độ di chuyển nhanh/chậm của object.

● Stopping distance: khoảng cách mà object sẽ dừng lại trước điểm đích.

● Auto Braking: object tự động giảm tốc độ để không vượt quá điểm đích.

● Radius: bán kính thân object ● Height: chiều cao object

● Quality: chất lượng xử lý việc object tránh vật cản, với chất lượng cao thì hành vi tránh vật cản sẽ mượt hơn tuy nhiên máy phải xử lý nặng hơn.

● Priority: thứ tự ưu tiên của object với các object sử dụng NavMeshAgent khác. Object sẽ khơng tính tốn va chạm với các object có priority cao hơn.

● Auto traverse off mesh: object sẽ tìm cách di chuyển qua lại các phần Navmesh không liên thông với nhau bằng cách nhảy. (Các vùng nhảy được render từ trước qua Nav Mesh).

● Auto repath: tự thay đổi đường đi nếu có biến cố làm đường đi hiện tại khơng thể di chuyển được nữa (ví dụ: thay đổi địa hình).

Báo cáo Đề tài Đồ án 2 - lớp SE122.M11 Xây dựng trò chơi bắn súng trực tuyến 3D

● Area Mask: lựa chọn các vùng object được phép ghi nhận để di chuyển.

Thuật tốn tìm đường của AI

- Như đã nói ở trước, các điểm góc (corner) là cơ sở để NavMeshAgent tạo ra đường đi tới điểm đích.

- Unity Nav Mesh Agent sử dụng thuật toán A* để tạo ra đường đi ngắn nhất tới điểm đích (được biểu diễn ở trong hình). Đường đi đó bao gồm các điểm (gọi số lượng điểm là N):

- Điểm 1: vị trí hiện tại của vật

- Từ điểm 2 đến điểm N - 1: các điểm góc (corner) được chọn ra bằng thuật toán A*, sao cho giữa điểm i và i+1 được xem là “có thể đi được”.

* Chú thích: điều kiện “có thể đi được” được xác định đúng khi 1 trong 2 điều kiện sau đúng:

+ 2 điểm thuộc chung 1 phần NavMesh (không bị chia cắt) - Có ít nhất 1 đường Off Mesh nối 2 phần NavMesh chứa

2 điểm. Khi đó Object sẽ đi theo đường OffMesh (nhảy) để tới điểm tiếp theo.

Báo cáo Đề tài Đồ án 2 - lớp SE122.M11 Xây dựng trò chơi bắn súng trực tuyến 3D

- Một chuỗi thứ tự các điểm trên được gọi là Nav Path (navigation path)

Hình 6.5.1.4 Một Nav Path được biểu diễn trên Nav Mesh

Đường đi hiện trên có thể xem như đường đi “cứng” của AI khi di chuyển tới 1 điểm. Tuy nhiên với sự can thiệp của các thuộc tính Speed, Angular Speed, Acceleration, Stopping Distance, cùng với tác động va chạm giữa các object với nhau thì AI sẽ khơng thể đi sát hồn toàn với đường đi được biểu thị như trên. Do đó các AI khơng cố gắng đi đúng theo đường đi được biểu diễn trên mà chỉ đảm bảo chúng hướng đến các điểm mốc đã được tạo trên đường. Cũng vì thế mà hành động di chuyển của AI được diễn ra tự nhiên hơn.

Một phần của tài liệu Xây dựng trò chơi bắn súng trực tuyến 3d (FPS multiplayer online game) (Trang 74 - 79)

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

(90 trang)