ARTIFICIAL INTELLIGENCE (TRÍ THÔNG MINH NHÂN TẠO)

Một phần của tài liệu nghiên cứu về unity3d game engine và thiết kế trõ chơi thể loại moba (Trang 36)

II. CÁC ĐẶC ĐIỂM VÀ TÍNH NĂNG CỦA UNITY

5. ARTIFICIAL INTELLIGENCE (TRÍ THÔNG MINH NHÂN TẠO)

Từ phiên bản Unity 3.5 tính năng PathFinding (khả năng tìm đƣờng) đƣợc thêm vào các đối tƣợng có trí thông minh nhân tạo . Với các phiên bản trƣớc, để phát triển khả năng tìm đƣờng cho trí thông minh nhân tạo (AI), nhà phát triển phải hoàn toàn tự xây dựng cho mình một hệ thống tìm đƣờng riêng biệt. Tuy nhiên ở phiên bản 3.5, Unity hỗ trợ cho chúng ta tính năng Pathfinding cho phép tạo ra khả năng tìm đƣờng cho AI nhờ vào khái niệm lƣới định hƣớng (NavMesh).

Với sự hỗ trợ NavMesh obstacles (vật cản trở trên lƣới định hƣớng) của Unity 4, các nhân vật trong game có thể phản ứng lại với những thay đổi của môi trƣờng một cách sinh động.

6. Audio (âm thanh)

Unity cung cấp công cụ mạnh mẽ cho những cảnh cộng hƣởng âm thanh. Trong game âm thanh đƣợc hỗ trợ bởi FMOD, một trong những thƣ viện rộng lớn nhất thế giới và những bộ công cụ cho việc tạo và phát ra âm thanh tích hợp.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 14

7. Scripting (lập trình)

Lập trình là một trong những yếu tố quan trọng nhất trong phát triển Game. Lập trình cho phép nhà phát triển tạo nên khả năng tƣơng tác, trí thông minh và yếu tố Gameplay cho trò chơi.

Unity cho phép chúng ta lập trình bằng nhiều ngôn ngữ mạnh mẽ và phổ biến với các lập trình viên nhƣ: C#, Java Script và Boo.

Unity hỗ trợ lập trình viện gỡ rối một cách dễ dàng bằng cách tích hợp đầy đủ trình gỡ rối kịch bản với MonoDevelop cho cả Windows và Mac. Logic game dựa trên nền tản OpenSource.net, MonoDevelop đƣợc coi nhƣ một công cụ với đầy đủ sức mạnh, tốc độ và linh hoạt của một trong những môi trƣờng lập trình hàng đầu thế giới.

8. Networking

Networking cho phép chúng ta tạo ra các trò chơi trực tuyến (online) – một trong những thể loại trò chơi thu hút đƣợc nhiều ngƣời chơi nhất. Tính năng này sẽ hỗ trợ đầy đủ để chúng ta tạo nên các khía cạnh phổ biến trong Game online nhƣ hệ thống điểm kinh nghiệm, chat và tƣơng tác thời gian thực, …

Một số tính tăng cung cấp bởi Networking nhƣ: đồng bộ hóa trang thái (State Synchronization), hệ thống mạng thời gian thực (Realtime Networking), gọi thủ tục từ xa (Remote Procedure Calls), kết nối Backend (Backend Connectivity), sự tích hợp trình duyệt web (Web Browser Integration), kết nối web (Web Connectivity).

9. Materials (Vật liệu, nguyên liệu)

Materials là vậy liệu để xây dựng nên các đối tƣợng trong game. Unity cho phép ngƣời dùng dễ dàng nhập vật liệu từ bên ngoài. Unity có thể tự động nhập các vật liệu đƣợc tạo ra trong các gói mô hình 3D và cài đặt chúng nhƣ tài nguyên tái sử dụng. Ngƣời viết game có thể tạo ra vật liệu trong unity hoặc mua trong Asset Store với hàng trăm kết cấu và vật liệu.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 15

Hình II.8: Minh họa vật liệu

III. CÁC THÀNH PHẦN TRONG UNITY

1. Assets

Assets là những tài nguyên xây dựng nên một dự án Unity. Từ những tập tin hình ảnh, kết cấu(Texture), vật liệu(Materials), mô hình 3D đến các tập tin âm thanh. Unity gọi các tập tin mà chúng ta dùng để tạo nên trò chơi là tài sản (Assets). Điều này lí giải tại sao tất cả các tập tin, thƣ mục của các dự án Unity đều đƣợc lƣu trữ trong một thƣ mục có tên là “Assets”.

Hình II.9: Thư mục Assets trong Unity

2. Scenes

Trong Unity, chúng ta cần hiểu một cảnh (hay một phân đoạn) nghĩa là một màn chơi riêng biệt hoặc một khu vực hay thành phần có trong nội dung của trò chơi (ví dụ nhƣ Game menu). Bằng cách tạo nên nhiều Scenes cho trò chơi, chúng ta có thể phân phối thời gian tải hoặc kiểm tra các phần khác nhau của trò chơi một cách riêng lẽ.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 16

Hình II.10: Các Scene

3. Game Object

Khi Assets đƣợc sử dụng trong Scene, chúng trở thành Game Object – một thuật ngữ đƣợc sử dụng trong Unity (đặc biệt là trong mảng lập trình). Tất cả các Game Object đều chứa ít nhất một thành phần là Transform. Transform là thông tin về vị trí, góc xoay và tỉ lệ của đối tƣợng, tất cả đƣợc mô tả bởi bộ 3 số X, Y, Z trong hệ trục tọa độ. Thành phần này có thể đƣợc tùy biến lại trong quá trình lập trình nhằm thay đổi vị trí, góc quay và tỉ lệ của đối tƣợng qua các đoạn mã. Từ các thành phần cơ bản này, chúng ta sẽ tạo ra Game Object với các thành phần khác, bổ sung chức năng cần thiết để xây dựng nên bất kỳ một thành phần nào trong kịch bản Game mà chúng ta đã tƣởng tƣợng.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 17

Hình II.11: GameObject trong cửa sổ Hierarchy

4. Components

Components có nhiều hình thức khác nhau. Chúng có thể xác định hành vi, cách xuất hiện,… hay ảnh hƣởng đến các khía cạnh khác trong chức năng của Game Object trong trò chơi.

Bằng cách “gắn” chúng vào trong Game Object, chúng ta ngay lập tức có thể áp dụng tác động của chúng lên đối tƣợng. Những Components phổ biến trong quá trình phát triển trò chơi đều đƣợc Unity hỗ trợ sẵn. Ví dụ nhƣ thành phần Rigidbody đã đƣợc đề cập hay các yếu tố đơn giản khác nhƣ ánh sáng, Camera và nhiều thành phần khác. Để tạo nên các yếu tố tƣơng tác trong trò chơi, chúng ta sẽ sử dụng Script (mã kịch bản), chúng cũng đƣợc xem nhƣ là một Components trong Unity.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 18

Hình II.12: Các Component của Camera

5. Scripts

Đƣợc Unity xem nhƣ một Components, Script là một thành phần thiết yếu trong quá trình phát triển trò chơi và đáng đƣợc đề cập đến nhƣ một khái niệm “chìa khóa”. Unity cung cấp cho chúng ta khả năng viết Script bằng cả 3 loại ngôn ngữ là: JavaScript, C# và Boo (một dẫn xuất của ngôn ngữ Python).

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 19

Hình II.13: Một đoạn Script được gắn vào GameObject

Unity không đòi hỏi chúng ta phải học làm thế nào để lập trình trong Unity, nhƣng hầu nhƣ chúng ta phải sử dụng Script tại mỗi thành phần trong kịch bản mà chúng ta phát triển. Unity đã xây dựng sẵn một tập hợp đa dạng các lớp, hàm mà chúng ta hoàn toàn có thể ứng dụng trong quá trình lập trình cho trò chơi của mình. Để viết script, chúng ta sẽ làm việc với một trình biên tập Script độc lập của Unity, hoặc với chƣơng trình Mono Developer đƣợc tích hợp và đồng bộ với Unity trong những phiên bản mới nhất hiện nay.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 20

Mono developer là một IDE khá tốt để lập trình khi cung cấp nhiều chức năng tƣơng tự nhƣ Visual studio. Mã nguồn viết trên Mono Developer sẽ đƣợc cập nhật và lƣu trữ trong dự án Unity.

Hình II.14: Giao diện Mono Developer

6. Prefabs

Prefabs cho phép chúng ta lƣu trữ các đối tƣợng với những Components và những thiết đặt hoàn chỉnh. Có thể so sánh với khái niệm cơ bản là MovieClip trong Adobe Flash, Prefabs chỉ đơn giản là một Container (một đối tƣợng chứa) rỗng mà chúng ta có thể đƣa bất kì một đối tƣợng hay dữ liệu mẫu nào mà chúng ta muốn tái sử dụng về sau.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 21

Hình II.15: Prefabs và các thành phần trong nó

IV. GIAO DIỆN CỦA UNITY

1. Cửa số làm việc của Unity

Giao diện của Unity có khả năng tùy chỉnh bố trí tƣơng tự nhƣ nhiều môi trƣờng làm việc khác. Dƣới đây là một kiểu bố trí điển hình trong Unity:

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 22

2. Cửa sổ Scene và Hierarchy

Cửa sổ Hierarchy bao gồm các GameObject (Các đối tƣợng làm nên một game hoàn chỉnh) trong Scene (một cảnh / một phân đoạn / một màn chơi riêng...) hiện hành. Nó bao gồm các tài nguyên nhƣ model 3D, prefabs (các gói tài nguyên), các đối tƣợng tự tạo góp phần tạo nên một game hoàn chỉnh. Bạn có thể lựa chọn các đối tƣợng trong thẻ Hierarchy và kéo nó vào một đối tƣợng khác để tạo mối liên hệ cha con cho đối tƣợng. Khi một đối tƣợng đƣợc thêm hay xóa trong scene, nó sẽ xuất hiện hoặc biến mất trong thẻ Hierarchy.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 23

Hình II.18: Cửa sổ game

Khung nhìn Scene là nơi để bạn chọn và bố trí các đối tƣợng nhƣ cảnh quan, ngƣời chơi, camera, kẻ địch và mọi đối tƣợng khác trong game. Sự bố trí hoạt cảnh với khung nhìn Scene là một chức năng quan trọng nhất của Unity, vì thế chúng ta có thể thực hiện việc này một cách nhanh chóng. Unity cung cấp các phím tắt cho hầu hết các chức năng thông dụng.

Khi kéo thả Asset vào cửa sổ Scene, Assets sẽ trở thành Game Object. Cửa sổ Scene đƣợc ràng buộc cùng với cửa sổ Hierarchy, cửa sổ Hierarchy liệt kê danh sách các Game Object có trong Scene và đƣợc sắp xếp theo thứ tự alphabe.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 24

Cửa sổ Scene còn đi kèm với 4 bốn nút chức năng hữu ích đƣợc hiển thị dƣới dạng hình ảnh nhƣ trên. Chúng có thể đƣợc lựa chọn thông qua các phím tắt Q, W, E và R. Những nút này có các chức năng nhƣ sau:

Công cụ bàn tay (Q): Công cụ này cho phép chúng ta di chuyển đến một

khu vực nào đó trong Scene bằng thao tác kéo thả chuột trái.

Công cụ di chuyển (W): Công cụ này cho phép chúng ta chọn một đối

tƣợng trong cảnh và thực hiện thao tác di chuyển, thay đổi vị trí của đối tƣợng đó. Khi chọn, tại vị trí của đối tƣợng sẽ hiển thị các trục và mặt phẳng gắn liền với đối tƣợng cho phép chúng ta di chuyển đối tƣợng trƣợt theo các trục, mặt phẳng hoặc di chuyển một cách tùy ý.

Công cụ xoay (E): Công cụ này có đặc điểm và cách sử dụng giống với

công cụ di chuyển, tuy nhiên thay vì để di chuyển vị trí của đối tƣợng thì công cụ này giúp chúng ta xoay đối tƣợng xoay quanh trục hay tâm của đối tƣợng.

Công cụ điều chỉnh tỉ lệ(R): Cũng tƣơng tự nhƣ công cụ di chuyển và xoay, công cụ này cho phép chúng ta tùy chỉnh kích thƣớc, tỉ lệ của đối tƣợng một cách tùy ý.

Hình II.20: Thanh điều khiển khung nhìn

Thanh điều khiển khung nhìn Scene giúp bạn xem dƣới nhiều chế độ hiển thị nhƣ Textured, Wireframe, RGB, Overdraw và nhiều loại khác. Nó còn có thể xem các ánh sáng, các tác động hay nghe các âm thanh trong game. Để rõ hơn các bạn hãy xem trong bài tìm hiểu về giao diện phần Góc nhìn trong game.

Hình II.21: Thanh công cụ

Toolbar (Thanh công cụ) bao gồm 5 phần điều khiển cơ bản. Mỗi phần đều liên quan đến các mục đích khác nhau của Unity Editor.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 25

: Bộ công cụ biến đổi -- sử dụng với Cửa sổ Scene.

: Biến đổi chốt Gizmo -- ảnh hƣởng đến hiển thị khung nhìn Scene.

: Các nút Chạy/Ngƣng/Chạy từng bƣớc -- sử dụng để chạy thử game.

: Thanh xổ Layer -- điều khiển các đối tƣợng đƣợc hiển thị trong khung nhìn Scene.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 26

3. Cửa sổ Inspector

Hình II.22: Cửa sổ Inspector

Games trong Unity đƣợc tạo ra bởi tập hợp rất nhiều GameObject, trong đó bao gồm meshes, scripts, âm thanh, hay những đối tƣợng graphic nhƣ nguồn sáng v..v... Inspector sẽ hiển thị mọi thông tin về đối tƣợng đang làm việc một cách chi tiết, kể cả những Components đƣợc đính kèm và những thuộc tính của nó. Tại đây bạn có thể điều chỉnh, thiết lập mọi thông số chức năng của những mối liên kết GameObject-Component.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 27

Mọi thuộc tính thể hiện trong Inspector đều có thể đƣợc tùy biến một cách trực tiếp. Ngay cả với những biến trong script cũng có thể đƣợc hiệu chỉnh mà không cần xem mã. Trong script, ngƣời viết game định nghĩa một giá trị là public cho một kiểu đối tƣợng (nhƣ GameObject hay Transform), họ có thể drag-drop một GameObject hay một Prefab vào trong Inspector để gán giá trị cho nó.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 28

4. Cửa sổ Project

Hình II.24: Cửa sổ Project

Phần bảng bên trái là nơi hiển thị các thƣ mục theo cấu trúc cây thƣ mục. Khi nhấp chọn một thƣ mục ở bên cây thƣ mục thì các dữ liệu sẽ đƣợc hiển thị ở phần bảng bên phải. Các tài nguyên khác nhau sẽ hiển thị các biểu tƣợng khác nhau tùy thuộc vào định dạng của chúng (script, vật liệu, thƣ mục cha,...). Các biểu tƣợng có thể thay đổi kích cở bằng cách sử dụng thanh trƣợt nằm ở góc dƣới bên phải. Nếu con trƣợt chạy về phía bên trái thì các biểu tƣởng sẽ đƣợc hiển thị dƣới dạng cây thƣ mục. Phần khoảng trống phía bên trái con trƣợt giúp hiển thị đƣờng dẫn đầy đủ của file đang đƣợc chọn.

Phía trên danh sách cây thƣ mục là mục Favorite, đây là nơi bạn có thể truy cập nhanh đến các dữ liệu bạn thƣờng xuyên sử dụng. Bạn có thể kéo thả dữ liệu từ trong danh sách cây thƣ mục vào mục Favourite và cũng có thể lƣu trữ các tệp đƣợc tìm kiếm ở đó.

Phía trên mục bảng chọn hiển thị các tệp chính là đƣờng dẫn hiển thị đƣờng dẫn đến thƣ mục chứa tệp đang xem. Các thƣ mục đƣợc phân chia rỏ rệt để dễ dàng truy cập. Khi tìm kiếm, thanh này sẽ đƣợc thay thế để hiển thị khu vực đang tìm kiếm (thƣ mục chủ của tài nguyên, thƣ mục đang đƣợc chọn hoặc Kho tài nguyên) tùy thuộc vào tài nguyên trả phí hay miễn phí trong kho tài nguyên. Ở mục General

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 29

trong Preferences của Unity có thể tắt hiển thị số lƣợt đếm của Kho tài nguyên nếu nó không cần thiết đối với bạn.

5. Cửa sổ Game

Hình II.25: Cửa sổ Game

Cửa sổ Game sẽ đƣợc gọi khi chúng ta nhấn vào nút Play (là một hành động thực hiện test trò chơi). Cửa sổ này cho phép chúng ta tùy chọn về thiết đặt tỉ lệ màn hình, nó phản ánh phạm vi trong Scene mà ngƣời chơi có thể thấy đƣợc với mỗi tỉ lệ màn hình tƣơng ứng, ví dụ nhƣ với mỗi tỉ lệ màn hình 4:3, 16:9 thì ngƣời chơi sẽ có một phạm vi nhìn thấy khác nhau. Sau khi nhấn vào nút Play, chúng ta sẽ ở chế độ Testing, lúc này mọi thay đổi về các thuộc tính, Components, … của đối tƣợng sẽ chỉ là tạm thời. Tức là chúng sẽ trở về nhƣ ban đầu (trƣớc khi nhấn nút Play) sau khi kết thúc chế độ Testing.

V. TỔNG QU N IẾN TRÖC GAME ENGINE UNITY

1. Kiến trúc tổng quan

Engine Unity hỗ trợ cho chúng ta UnityAPI để viết script game. UnityAPI là API lập trình game trong Unity rất mạnh. UnityAPI chứa các đối tƣợng và phƣơng thức hỗ trợ hầu hết các đối tƣợng và các loại thành phần trong Unity.

Trong một scene thƣờng có nhiều đối tƣợng game. Mỗi đối tƣợng này có thể có hoặc không có đoạn script nào gắn lên đó. Nếu muốn gắn script vào đối tƣợng, ta bắt buộc phải kế thừa class đó từ lớp MonoBehaviour của UnityAPI và tên class

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 30

phải trùng với tên file script. Mỗi script khi gắn lên đối tƣợng game đều đƣợc đối tƣợng game xem nhƣ một thành phần bên trong và đƣợc cấp phát vùng nhớ khi chạy game.

Bên trong UnityAPI chứa rất nhiều lớp hỗ trợ lập trình game, trong đó có một số lớp quan trọng nhƣ :

MonoBehaviour: tất cả các script muốn gắn vào một đối tƣợng game bắt

buộc phải kế thừa từ lớp này.

GameObject: lớp cha của tất cả các thực thể trong scene.

Component: lớp cha của tất cả các thành phần có thể gắn vào đối tƣợng.

Transform: giúp thay đổi vị trí, xoay, biến đổi tỉ lệ mô hình.

Input: hỗ trợ lập trình với chuột, cảm ứng đa điểm, cảm biến gia tốc.

Camera: giúp lập trình camera.

Light: giúp tạo ánh sáng trong game.

Projector: giúp chiếu texture lên bề mặt vật thể.

ParticleEmitter: hỗ trợ tạo các hiệu ứng particle đẹp mắt.

Audio: hỗ trợ lập trình với âm thanh.

Animation: chạy chuyển động của mô hình nhân vật.

Rigidbody: giúp tạo hiệu ứng vật lý liên quan đến trọng lực nhƣ bóng

Một phần của tài liệu nghiên cứu về unity3d game engine và thiết kế trõ chơi thể loại moba (Trang 36)

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

(183 trang)