RENDERING (KẾT XUẤT HÌNH ẢNH)

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 32)

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

1. RENDERING (KẾT XUẤT HÌNH ẢNH)

Unity hỗ trợ Windows đồ họa DirectX 11 API nhằm cải thiện hiệu suất tính toán shaders (bóng của vật thể), trong đó cung cấp khả năng sử dụng GPU nhƣ CPU song song và thêm chi tiết phong phú hơn với các mô hình và môi trƣờng thế giới game với tessellation.

Hình II.2: Minh họa Rendering

Để tạo nên vẻ hoang dã cho game, unity sử dụng kỷ thuật vƣợt truớc ánh sáng để cho ánh sang cao hơn và độ trung thực bóng tối của vật thể.

Các phiên bản gần đây nhất của Unity đƣợc xây dựng lại thuật toán nhằm cải thiện hiệu suất hình ảnh đồng thời tăng cƣờng chất lƣợng hình ảnh sau khi kết xuất.

Một số hỗ trợ:

 Unity cung cấp sẵn 100 Shaders với đầy đủ các loại phổ biến nhất.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 10

 Hỗ trợ LOD.

 Lighting (ánh sáng)

Ánh sáng là một điều thiết yếu giúp môi trƣờng trở nên đẹp và thực tế hơn. Unity cũng cung cấp nhiều giải pháp đa dạng cho phép chúng ta áp dụng ánh sáng một cách tốt nhất vào môi trƣờng trong trò chơi với nhiều loại nguồn sáng nhƣ ánh sáng có hƣớng (Directional Light), ánh sáng điểm (Point Light), ... Một số công nghệ và kỹ thuật về ánh sáng đƣợc Unity hỗ trợ: Lightmapping, Realtime Shadows, hiệu ứng Sunshafts và Lens Flares.

2. Terrains (địa hình)

Terrains còn gọi chung là địa hình bao gồm phần đất nền, đồi núi trong môi trƣờng trò chơi mà trên đó các đối tƣợng nhƣ cây, cỏ, các công trình đƣợc dựng lên.

Hình II.3: Minh họa công cụ tùy chỉnh địa hình

Unity cung cấp một công cụ điều chỉnh địa hình một cách tinh tế với khả năng chạm khắc, nâng hoặc hạ thấp địa hình. Bên cạch đó công cụ còn cung cấp các chổi vẽ (Brush) với các kích thƣớc khác nhau, có nhiều thông số tùy chỉnh để tạo hình và các loại kết cấu (Texture) cấu tạo nên địa hình. Cùng với Terrain Tools là Tree Creator, một công cụ mạnh mẽ cho phép chúng ta tạo ra cây cối với hình dạng, kích thƣớc và kiểu cách đa dạng.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 11

Hình II.4: Minh họa công cụ tùy chỉnh địa hình

3. Substances (Texture thông minh)

Substances có thể hiểu đơn giản là một dạng tùy biến Textures nhằm làm đa dạng chúng trong nhiều điều kiện môi trƣờng khác nhau. Unity cung cấp khả năng này thông qua các API dựng sẵn trong thƣ viện, hỗ trợ lập trình viên lập trình để tùy biến hình ảnh đƣợc kết xuất của Texture.

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 12

4. Physics (vật lí)

Hình II.6: Ảnh minh họa va chạm vật lý

PhysX là một Engine mô phỏng và xử lí vật lý cực kỳ mạnh mẽ đƣợc phát triển bởi nhà sản xuất card đồ họa hàng đầu thế giới NVIDIA. Unity đã tích hợp Engine này vào để đảm nhận mọi vấn đề vật lý. Một số vấn đề vật lý đƣợc hỗ trợ bởi Unity nhƣ: Rigidbody, Ragdolls, Joints, Colliders, Cloths…

SVTH:

Nguyễn Đức Trung 1101707

Trần Minh Trung 1101708 13

Hình II.7: Minh họa giao diện vật lý

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

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 32)

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

(183 trang)