1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tìm hiểu engine unity và sử dụng unity để xây dựng game 2d cho điện thoại di động trên môi trường android

60 551 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 60
Dung lượng 5,41 MB

Nội dung

1.2 Cách thức ứng dụng C# hoạt động Các ngôn ngữ NET như C#, VB.NET, VJ#, VC++ .NET có cách thức hoạt động giống nhau và là một thành phần của .NET Framework do đó bạn không thể chạy cá

Trang 1

LỜI CẢM ƠN

Em xin chân thành cảm ơn khoa Công nghệ thông tin, Trường Đại học Công nghệ thông tin và truyền thông – Đại học Thái Nguyên đã tạo điều kiện tốt cho em thực hiện tốt đề tài này

Em xin chân thành cảm ơn thầy Phùng Thế Huân là người tận tình hướng dẫn, chỉ bảo em trong suốt thời gian thực hiện đề tài

Em cũng xin gửi lời cảm ơn sâu sắc đến quý thầy cô trong khoa đã tận tình giảng dạy, trang bị cho em những kiến thức quý báu trong những năm vừa qua

Em xin gửi lòng biết ơn sâu sắc đến ba, mẹ, các anh chị và bạn bè đã ủng hộ, giúp đỡ và động viên em trong những lúc khó khăn cũng như trong suốt thời gian học

và nghiên cứu

Mặc dù em đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép, nhưng chắc chắn sẽ không tránh khỏi những thiếu sót, kính mong sự cảm thông và tận tình chỉ bảo của quý thầy cô và các bạn

Em xin chân thành cảm ơn!

Trang 2

LỜI CAM ĐOAN

Sau thời gian nỗ lực thực hiện đồ án tốt nghiệp dưới sự dẫn dắt của giáo viên hướng dẫn em đã hoàn thành đúng thời gian quy định và hoàn thành được yêu cầu của

đồ án, bản thân em đã cố gắng tìm hiểu và nghiên cứu, học tập và thực hiện trong thời gian làm đồ án tốt nghiệp Em đã tham khảo một số tài liệu được nêu trong phần “Tài liệu tham khảo” và các website cùng các diễn đàn tin học trên Internet

Nội dung đồ án hoàn toàn không sao chép từ các đồ án khác, không vi phạm bản quyền tác giả Toàn bộ đồ án là do bản thân em tìm hiểu, nghiên cứu và sản phẩm của đồ án là chính bản thân em xây dựng nên

Em xin cam đoan những lời trên là đúng, nếu có thông tin sai lệch em xin hoàn toàn chịu trách nhiệm trước hội đồng

Thái nguyên, ngày 21 tháng 4 năm 2017

Sinh viên: Triệu Thanh Lam

Trang 3

MỤC LỤC

LỜI CẢM ƠN 1

LỜI CAM ĐOAN 2

MỤC LỤC 3

LỜI NÓI ĐẦU 5

Chương 1: TỔNG QUAN VỀ NGÔN NGỮ C# 6

1.1 Giới thiệu về C# 6

1.2 Cách thức ứng dụng C# hoạt động 7

1.3 Tổng Quan về phân tích thiết kế hướng đối tượng sử dụng UML 8

1.3.1 Các thành phần của UML 9

1.3.2 Biểu đồ Usecase 9

1.3.3 Biểu đồ lớp(class diagram) 10

1.3.4 Biểu đồ trình tự 10

Chương 2: TỔNG QUAN VỀ ENGINE UNITY 11

2.1 Tổng quan về Android 11

2.2 Tổng quan về unity 13

2.2.1 Sơ lược lịch sử hình thành và phát triển của Unity 15

2.2.2 Tính năng của engine Unity 16

2.2.3 Các khái niệm cơ bản trong Unity 17

2.2.4 Giao diện của Unity 21

2.2.5 Tổng quan kiến trúc engine Unity 24

2.3 Một số tiêu chí đánh giá game 26

2.4 Khảo sát sơ lược một số GAME ENGINE 31

2.5 Kết luận 36

Chương 3: KHẢO SÁT VÀ PHÂN TÍCH GAME VƯỢT CHƯỚNG NGẠI VẬT TRÊN UNITY 38

3.1 Khảo sát một số game cùng thể loại với game Vượt Chướng Ngại Vật 38

3.1.1 GAME FLAPPY BIRD 38

3.1.2 FLAPPY FLY 39

Trang 4

3.1.4 Đề xuất ý tưởng đề tài 39

3.2 Phân tích thiết kế 40

3.2.1 Biểu đồ use case 40

3.2.2 Biểu đồ Sequence 42

3.2.3 Biểu đồ lớp 43

Chương 4: XÂY DỰNG GAME VƯỢT CHƯỚNG NGẠI VẬT 44

4.1 Xây dựng game 44

4.1.1 Xây dựng Background 44

4.1.2 xây dựng nhân vật 45

4.1.3 Xây dựng chướng ngại vật 46

4.1.4 Xây dựng điểm 47

4.1.5 xây dựng sound 48

4.1.6 Xây dựng gameOver 51

4.2 Một số hình ảnh của game 53

KẾT LUẬN 58

TÀI LIỆU THAM KHẢO 59

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 60

Trang 5

LỜI NÓI ĐẦU

Ngày nay, điện thoại di động đã trở thành phương tiện không thể thiếu trong cuộc sống hàng ngày của chúng ta Điện thoại không còn đơn thuần là dành cho những cuộc gọi hay là nhắn tin nữa, nhu cầu sử dụng điện thoại ngày ngay rất đa dạng và phong phú, trong đó không thể bỏ qua nhu cầu giải trí Game trên điện thoại di động

đã trở thành thú vui số 1 của giới trẻ

Game trên điện thoại di động có những tiện ích rất rõ nó có thể chơi được ở mọi lúc mọi nơi, chính vì vậy mà nhu cầu chơi game trên di động ngày càng tăng cao, các hãng sản xuất liên tục cho ra đời những thể loại game 3D hình ảnh đẹp mắt, âm thanh sống động chạy trên các thiết bị di động Song song đó, các game Engine 2D cũng không ngừng phát triển và hỗ trợ làm game cho các thiết bị di động với những hệ điều hành khác nhau như Android, iOS

Unity: là một trong những game engine khá phổ biến hiện nay, có khả năng

phát triển trò chơi đa nền, trình biên tập có thể chạy trên Windows và Mac OS, và có thể xuất ra game cho Windows, Mac, iOS, Android, Wii, Web, Xbox 360, Play station3 Unity tạo ra nhiều loại game 3D đa dạng, hỗ trợ import rất nhiều mô hình định dạng khác nhau, hỗ trợ tạo mô hình trực tiếp Lượng tài liệu hướng dẫn nhiều, cộng đồng lớn và diễn đàn riêng Unity có 2 phiên bản là Unity Pro có tính phí và Unity Free để người dùng dễ dàng lựa chọn, vì vậy mà Unity không chỉ dành cho một công ty lớn chuyên nghiệp, mà kể cả giới làm game không chuyên cũng có thể sử dụng một cách dễ dàng

Bởi các tính năng tuyệt vời và phổ biến của Unity, nên trong báo cáo này em xin được tìm hiểu về Unity và xây dựng game “Vượt chướng ngại vật”

Game “Vượt chướng ngại vật” là thể loại game đang được ưa chuộng hiện nay Game có khả năng phát triển cao và cũng để thử sức xây dựng được game như Nguyễn

Hà Đông

Nội dung báo cáo em thực hiện bao gồm việc tìm hiểu Engine Unity và sử dụng Unity để xây dựng game 2D cho điện thoại di động trên môi trường Android

Trang 6

Chương 1: TỔNG QUAN VỀ NGÔN NGỮ C#

1.1 Giới thiệu về C#

Hình 1.1: hình ảnh biểu tưởng của C#

C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft, là phần khởi đầu cho kế hoạch NET của họ Tên của ngôn ngữ bao gồm ký tự thăng theo Microsoft nhưng theo ECMA là C#, chỉ bao gồm dấu số thường Microsoft phát triển C# dựa trên C++ và Java C# được miêu tả là ngôn ngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java C# được thiết kế chủ yếu bởi Anders Hejlsberg kiến trúc sư phần mềm nổi tiếng với các sản phẩm Turbo Pascal, Delphi, J++, WFC Tuy nhiên, ngôn ngữ C# có ý nghĩa cao khi nó thực thi những khái niệm lập trình hiện đại C# bao gồm tất cả những hỗ trợ cho cấu trúc, thành phần component, lập trình hướng đối tượng

Từ khi chiếc máy tính có thể lập trình đầu tiên (First freely programmable computer) ra đời vào năm 1936 hàng nghìn ngôn ngữ lập trình đã được tạo ra Có những ngôn ngữ chết đi vì sự thiếu tâm huyết của người tạo ra nó, sự hạn chế của chính ngôn ngữ hay không được cộng đồng sử dụng rộng rãi và cũng có cả những ngôn ngữ trở nên thành công Với sự “chống lưng” của Microsoft tháng giêng năm

1999 Anders Hejlsberg trở thành người phụ trách xây dựng ngôn ngữ lập trình Cool (C-like Object Oriented Language tiền thân của C#) , ngày 12/2/2002 C# ra đời cùng với NET Framework 1.0 Kế thừa và phát triển từ các ngôn ngữ lập trình trước được

sự ưu ái từ hệ điều hành Window, sau đây là một số điểm nổi bật của ngôn ngữ C#

Trang 7

Cú pháp C# hàm ý, nhưng nó cũng đơn giản và dễ dàng để học Nếu có kinh nghiệm với C, C++ hoặc Java thì bạn có thể bắt đầu làm việc hiệu quả trong C# với một thời gian rất ngắn vì C# có cú pháp tương tự, tuy nhiên C# đơn giản hơn so với C++ và cung cấp các tính năng mạnh mẽ như các loại giá trị nullable, enumerator, delegate, biểu thức lambda và việc truy cập bộ nhớ trực tiếp (unsafe code) mà bạn không tìm thấy trong ngôn ngữ Java C# hỗ trợ kiểu dữ liệu và phương thức chung (giống Java), ứng dụng C# nhanh bảo mật và mã nguồn có thể tái sử dụng

Là một ngôn ngữ hướng đối tượng, C# hỗ trợ các khái niệm về đóng gói ncapsulation, thừa kế inheritance và đa hình polymorphism Tất cả các biến và phương thức, bao gồm cả phương thức override virtual methods, được đóng gói trong Class Một lớp có thể kế thừa trực tiếp từ một lớp cha, nhưng nó có thể có thực hiện nhiều interfaces khác nhau… Ngoài những nguyên tắc cơ bản của ngôn ngữ hướng đối tượng, C# còn có những sáng tạo riêng: Encapsulation, Properties, Attribute, XML, Language-Integrated Query (LINQ)

Việc sử dụng đối tượng COM hoặc Win32 DLLs thông qua "Interop" trở nên dể dàng Thậm chí C# hỗ trợ con trỏ và các khái niệm của mã "không an toàn" đối với những trường hợp mà trong đó truy cập bộ nhớ trực tiếp là tuyệt đối quan trọng Quy trình xây dựng ứng dụng C# đơn giản hơn so với C và C++ và linh hoạt hơn trong Java

1.2 Cách thức ứng dụng C# hoạt động

Các ngôn ngữ NET như C#, VB.NET, VJ#, VC++ NET có cách thức hoạt động giống nhau và là một thành phần của NET Framework do đó bạn không thể chạy các ứng dụng này trên các máy không chạy cài đặt NET Framework version thích hợp

Trước hết cần có cái nhìn khái quát về NET Framework nó gồm 2 phần chính: The common language runtime (CLR) and The NET Framework class library

Trang 8

Trong hình trên những gì bạn viết ra sẽ là custom object libraries, class libarary

sẽ chứa những class chung Có thể sử dụng nhiều lần các class này định nghĩa console, window hay button thứ mà bạn cần có để ứng dụng chạy mà không cần viết lại

Runtime chính là nền tảng của NET Framework cách dễ hiểu nhất là coi nó như máy ảo có nhiệm vụ quản lý bộ nhớ, quản lý luồng, cho phép truy cập các Dll khác để chương trình có thể hoạt động trơn tru

Khi bạn viết xong một chương trình, qua quá trình biên dịch sẽ cho ta cùng một kết quả, đó là Microsoft Intermediate Language (MSIL code), Sau đó JIT compiler

sẽ chuyển mã MSIL code sang mã máy thứ mà CPU có thể hiểu và thực thi

1.3 Tổng Quan về phân tích thiết kế hướng đối tượng sử dụng UML

Ngôn ngữ mô hình hóa thống nhất (Unifield Modeling Language – UML) là một ngôn ngữ để biểu diễn mô hình theo hướng đối tượng được xây dựng bởi ba tác giả trên với chủ đích là:

- Mô hình hoá các hệ thống sử dụng các khái niệm hướng đối tượng

- Thiết lập một kết nối từ nhận thức của con người đến các sự kiện cần mô hình hoá

- Giải quyết vấn đề về mức độ thừa kế trong các hệ thống phức tạp, có nhiều ràng buộc khác nhau

- Tạo một ngôn ngữ mô hình hoá có thể sử dụng được bởi người và máy

Trang 9

1.3.1 Các thành phần của UML

Ngôn ngữ UML bao gồm một loạt các phần tử đồ họa (graphic element) có thể được kếp hợp với nhau để tạo ra các biểu đồ Bởi đây là một ngôn ngữ, nên UML cũng

có các nguyên tắc để kết hợp các phần tử đó

Một số những thành phần chủ yếu của ngôn ngữ UML:

Hướng nhìn (view):Hướng nhìn chỉ ra những khía cạnh khác nhau của hệ thống cần phải được mô hình hóa Một hướng nhìn không phải là một bản vẽ, mà là một sự trừu tượng hóa bao gồm một loạt các biểu đồ khác nhau Chỉ qua việc định nghĩa của một loạt các hướng nhìn khác nhau, mỗi hướng nhìn chỉ ra một khía cạnh riêng biệt của hệ thống, người ta mới có thể tạo dựng nên một bức tranh hoàn thiện về hệ thống Cũng chính các hướng nhìn này nối kết ngôn ngữ mô hình hóa với quy trình được chọn cho giai đoạn phát triển

Biểu đồ(diagram): Biểu đồ là các hình vẽ miêu tả nội dung trong một hướng nhìn UML có tất cả 9 loại biểu đồ khác nhau được sử dụng trong những sự kết hợp khác nhau để cung cấp tất cả các hướng nhìn của một hệ thống

Phần tử mô hình hóa (model element):Các khái niệm được sử dụng trong các biểu đồ được gọi là các phần tử mô hình, thể hiện các khái niệm hướng đối tượng quen thuộc Ví dụ như lớp, đối tượng, thông điệp cũng như các quan hệ giữa các khái niệm này, bao gồm cả liên kết, phụ thuộc, khái quát hóa Một phần tử mô hình thường được

sử dụng trong nhiều biểu đồ khác nhau, nhưng nó luôn luôn có chỉ một ý nghĩa và một

kí hiệu

Cơ chế chung: Cơ chế chung cung cấp thêm những lời nhận xét bổ sung, các thông tin cũng như các quy tắc ngữ pháp chung về một phần tử mô hình; chúng còn cung cấp thêm các cơ chế để có thể mở rộng ngôn ngữ UML cho phù hợp với một phương pháp xác định (một quy trình, một tổ chức hoặc một người dùng)

1.3.2 Biểu đồ Usecase

Một biểu đồ Usecase chỉ ra một số lượng các tác nhân ngoại cảnh và mối liên kết của chúng đối với Usecase mà hệ thống cung cấp Một Usecase là một lời miêu tả của một chức năng mà hệ thống cung cấp Lời miêu tả Use case thường là một văn bản tài liệu, nhưng kèm theo đó cũng có thể là một biểu đồ hoạt động Các Use case được miêu tả duy nhất theo hướng nhìn từ ngoài vào của các tác nhân (hành vi của hệ thống

Trang 10

theo như sự mong đợi của người sử dụng), không miêu tả chức năng được cung cấp sẽ hoạt động nội bộ bên trong hệ thống ra sao

1.3.3 Biểu đồ lớp(class diagram)

Một biểu đồ lớp chỉ ra cấu trúc tĩnh của các lớp trong hệ thống Các lớp là đại diện cho các “vật” được xử lý trong hệ thống Các lớp có thể quan hệ với nhau trong nhiều dạng thức: liên kết (associated - được nối kết với nhau), phụ thuộc (dependent - một lớp này phụ thuộc vào lớp khác), chuyên biệt hóa (specialized - một lớp này là một kết quả chuyên biệt hóa của lớp khác), hay đóng gói ( packaged - hợp với nhau thành một đơn vị) Tất cả các mối quan hệ đó đều được thể hiện trong biểu đồ lớp, đi kèm với cấu trúc bên trong của các lớp theo khái niệm thuộc tính (attribute) và thủ tục (operation)

Biểu đồ được coi là biểu đồ tĩnh theo phương diện cấu trúc được miêu tả ở đây

có hiệu lực tại bất kỳ thời điểm nào trong toàn bộ vòng đời hệ thống Một hệ thống thường sẽ có một loạt các biểu đồ lớp – chẳng phải bao giờ tất cả các biểu đồ lớp này cũng được nhập vào một biểu đồ lớp tổng thể duy nhất – và một lớp có thể tham gia vào nhiều biểu đồ lớp

1.3.4 Biểu đồ trình tự

Một biểu đồ trình tự chỉ ra một cộng tác động giữa một loạt các đối tượng Khía cạnh quan trọng của biểu đồ này là chỉ ra trình tự các thông điệp (message) được gửi giữa các đối tượng Nó cũng chỉ ra trình tự tương tác giữa các đối tượng, điều sẽ xảy ra tại một thời điểm cụ thể nào đó trong trình tự thực thi của hệ thống Các biểu đồ trình

tự chứa một loạt các đối tượng được biểu diễn bằng các đường thẳng đứng Trục thời gian có hướng từ trên xuống dưới trong biểu đồ, và biểu đồ chỉ ra sự trao đổi thông điệp giữa các đối tượng khi thời gian trôi qua Các thông điệp được biểu diễn bằng các đường gạch ngang gắn liền với mũi tên (biểu thị thông điệp) nối liền giữa những đường thẳng đứng thể hiện đối tượng Trục thời gian cùng những lời nhận xét khác thường sẽ được đưa vào phần lề của biểu đồ

Trang 11

Chương 2: TỔNG QUAN VỀ ENGINE UNITY

2.1 Tổng quan về Android

Sự phát triển của Android

Vào tháng 10/2008 hệ điều hành Android đã xuất hiện lần đầu tiên trên di động Trong suốt năm 2009 thì điện thoại chạy trên hệ điều hành Android chỉ đếm trên đầu ngón tay Nhưng thật sự kinh ngạc khi trong năm 2010 thì hàng trăm thiết bị sử dụng nền tảng Android đã xuất hiện rầm rộ, từ các hãng có tên tuổi lớn cho đến các điện thoại vô danh từ Trung Quốc

Các phiên bản mới liên tục được cập nhật, nhờ vậy mà các nhà phát triển tự do xây dựng các ứng dụng trên hệ điều hành mở là điểm làm cho android phát triển nhanh chóng Lôi kéo đầy đủ các tên tuổi lớn như Samsung, LG, Sony,HTC,Motorola…trong

đó, tất cả đều coi Androi là nền tảng chính cho thấy Google rất khôn khéo Và cũng chính Android đã giúp Motorola thoát khỏi giai đoạn khủng hoảng

Android đã trở thành hệ điều hành hàng đầu và rất phổ biến trên thế giới hiện nay Rất nhiều hãng sản xuất đã cho ra đời nhiều mẫu máy cũng như chủng loại sử dụng hệ điều hành Android từ phổ thông cho đến siêu cấp

(a) T-Mobile G1 (HTC Dream) (b) Motorola-DROID

(Nguồn:http://www.htc.com) (Nguồn:http://www.htc.com)

Trang 12

(c) Samsung Glaxy S (d) Sony Ericsson Xperia X1 (Nguồn:http://www.samsung.com) (Nguồn:http://www Sony Ericsson.com)

Hình 2.1 Một số hình ảnh điện thoại chạy hệ điều hành Android

Canalys, là một công ty phân tích hị trường lớn tại Mỹ mới đây đã đưa ra những báo cáo chứng minh hệ điều hành Android đã vượt xa Symbian trên thị trường điện thoại thông minh Đây là một sự kiện quan trọng của thị trường di động bởi hơn 10 năm trở lại đây, chưa hề có bất kì hệ điều hành nào có thể vượt mặt được hệ điều hành Symbian của Nokia Điều đáng nói, tốc độ tăng trưởng của Android diễn ra rất nhanh

và vẫn chưa hề có dấu hiệu giảm lại

Game 2D trên Android

Thị trường game đã sôi nổi từ nhiều năm nay Trong thời gian gần đây với sựu

hỗ trợ của công nghệ tiên tiến, thế giới game 2D đã thật hơn và diễn tả được khá đầy

đủ những gì tồn tại của cuộc sống thật

Việc ứng dụng các cấu hình phần cứng dựng sẵn là xu chung khi phát triển game mobile Từ ứng dụng màn cảm ứng đa điểm cho tới hệ cảm biến hành vi giúp xoay ngang, xoay dọc để điều khiển nhân vật trong game đã trở thành mặc định trong các tựa game 2D cao cấp

Năm 2010 kết thúc đánh dấu một nấc thang vượt bậc của các tựa game di động cùng

sự bùng nổ của các nền tảng tiên tiến Và chắc chắn, trong năm 2017 này hứa hẹn sẽ là thời khắc cao trào của sựu cạnh tranh, phát triển và người dùng sẽ được chứng kiến một thời kì sôi động chưa từng thấy của những tựa game, cỗ máy di động đỉnh cao

Trang 13

Hiện nay, có rất nhiều Engine hỗ trợ làm game 3D trên Android Do đó em cần tìm một game engine đủ tốt để có thể xây dựng game Tiêu chí khảo sát của em đó là engine đó phải render nhanh và nhiều mô hình cùng lúc trên màn hình, có thể làm mô hình nhân vật chuyển động, hỗ trợ va chạm giữa các vật thể, hỗ trợ hiệu ứng particle tốt Sau đây là một số game engine cho Android

 jPCT-AE: jPCT-AE là một bản port từ engine jPTC sang cho Android Đây là một engine miễn phí, nhỏ gọn, tính năng tương đối ít

 libGDX: là thư viện được viết chủ yếu bằng NDK (công cụ cho phép gọi thực thi code C/C++ từ java) nên cho tốc độ xử lí nhanh Một ưu điểm của game này là nó cho phép chúng ta viết game và test hoàn toàn ngay trên nền Desktop Tuy nhiên, libGDX được phát triển lúc đầu chủ yếu dành cho nền 2D nên cho tới thời điểm này thư viện này vẫn chưa hỗ trợ kiểm tra va chạm giữa các vật thể trên nền 3D

 Unity: là một trong những game engine khá phổ biến hiện nay, có khả năng phát triển trò chơi đa nền Trình biên tập có thể chạy trên Windows Mac OS, và có thể xuất ra game cho Windows, Mac, iOS, Android Game có thể chơi trên trình duyệt web thông qua plugin Unity Web Player Unity mới bổ sung khả năng xuất ra game trên widget cho Mac

và cả Xbox 360, PlayStation 3 Unity tạo ra được nhiều loại game 3D đa dạng , hỗ trợ import rất nhiều mô hình định dạng khác nhau, hỗ trợ tạo

mô hình trực tiếp Lượng tài liệu hướng dẫn nhiều, cộng đồng lớn với diễn đàn riêng Unity có 2 phiên bản là Unity Pro có tính phí và Unity Free để người dùng lựa chọn, vì vì vậy mà Unity không chỉ dành cho một công ty lớn chuyên nghiệp, mà kể cả giới làm game không chuyên cũng có thể sử dụng một các dễ dàng

2.2 Tổng quan về unity

Unity là gì?

Đã qua rồi thời kì làm game trên nền flash căn bản và buồn chán với những chuyện động thật cứng nhắc Unity 3D mang lại sức mạnh kì diệu cho nhân vật mà chúng ta muốn thể hiện sống động hơn trong không gian 3 chiều đầy huyền ảo Công nghệ cao này tạo ra một bước đột phá mới về sự khác biệt trong công nghệ làm game

Trang 14

3D hiện nay, mang đến cho người chơi một cảm giác rất khác lạ và hào hứng trong từng chuyển động, tương lai công nghệ này được áp dụng vào game Việt Nam sẽ mở

ra một trang mới trong thế giới game 3D huyền ảo

Unity 3D được dùng để làm video game 3D, hoặc những nội dung có tính tương tác như thể hiện kiến trúc, hoạt hình 3D thời gian thực Unity hao hao giống Director, Blender game engine, Virtools hay Torque Game Buider trong khía cạnh dùng môi trường đồ họa tích hợp ở quá trình phát triển game là chính

Unity là một trong những engine được giới làm game không chuyên cực kỳ ưa chuộng bởi khả năng tuyệt vời của nó là phát triển chò trơi đa nền Trình biên tập có thể chạy trên Windows Mac OS, và có thể xuất ra game cho Windows, Mac, iOS, Android Game có thể chơi trên trình duyệt web thông qua plugin Unity Web Player Unity mới bổ sung khả năng xuất ra game trên widget cho Mac và cả Xbox 360, PlayStation 3

Hình 2.2: Hình mình họa đa nền

Chỉ với khoản tiền bỏ ra khá khiêm tốn (1.500USD) là phiên bản pro đã nằm trong tay của chúng ta, dĩ diên tại Việt Nam số tiền này vẫn là quá lớn nhưng thật may là đã có phiên bản Unity Free Tuy nhiên, nhiều tính năng quan trọng (Network) bị cắt giảm nhưng

đó không phải vấn đề quá lớn nếu muốn phát triển một tựa game phần trung

Vào năm 2009, Unity nằm trong top 5 game engine tốt nhất cho việc sản xuất game với chỉ sau 4 năm phát triển Unity đứng thứ 4, xếp sau Unreal Engine 3,

Trang 15

Gamebryo Engine (được VTC Studio mua về phát triển SQUAD) và Cry Engine 2 Lượng tài liệu hướng dẫn Unity rất phong phú Hơn thế nữa nó còn có sẵn một cộng đồng cực lớn về diễn đàn riêng Bất cứ điều gì không hiểu chúng ta có thể thoải mái hỏi và nhận được câu trả lời nhanh chóng, tận tâm

Quá trình tạo địa hình cũng như truy xuất các phần mềm 3DSMax, Maya, Cinema4D… rất nhanh chóng Sức mạnh và sự tiện lợi của Unity là vô cùng lớn

 Sức mạnh: unity có thể tọa được nhiều loại game đa dạng, dễ sử dụng với người làm game chưa chuyên nghiệp, chất lượng cao, chạy hầu hết trên các hệ điều hành

 Sự tiện ích: nếu chúng ta là một một người chuyên dùng 3DMax, hay Maya hoặc phần mềm mã nguồn mở Blender thì quả thật là tuyệt, chúng ta sẽ có một lợi thế lớn khi viết game trên Unity này, bởi công việc tạo mô hình 3D sẽ trở nên dễ dàng hơn rất nhiều, việc kết hợp giữa người lập trình và người thiết kế các mô hình sẽ nhanh và hiệu quả hơn Trong Unity chúng ta có thể import trực tiếp các file mô hình đang thiết

kế và sẽ thiết kế hoàn thiện tiếp nếu chưa xong trong đó công việc import chỉ diễn ra một lần Không như việc phải dùng các công cụ khác để thực hiện viết game chúng ta phải xuất chúng ra một dạng nào đó và mỗi lần sửa lại phần mô hình chúng ta lại phải import lại, và như thế là quá trình mất thời gian trong việc tạo vào chỉnh sửa các mô hình theo ý muốn Ngoài ra Unity còn cho chúng ta trực tiếp tạo các mô hình nếu muốn Việc đặt các thuộc tính vật lý trong Unity cũng cực kì dễ dàng và hỗ trợ sẵn nhiều chức năng

2.2.1 Sơ lược lịch sử hình thành và phát triển của Unity

 Hình thành

Phần lõi của Unity ban đầu được viết bởi Joachim Ante vào năm 2001 Sau đó công ty được hình thành vào năm 2005 và bắt đầu phiên bản 1.0 Đến năm 2007, Unity được nâng lên phiên bản 2.0 unity bắt đầu hỗ trợ iPhone vào năm 2008 Vào tháng 6/2010, Unity chính thức hỗ trợ Android và cho ra đời phiên bản 3.0 Có thể thấy tốc

độ phát triển của Unity khá nhanh

 Giải thưởng

Unity đã đạt được nhiều giải thưởng lớn với những giải chính thức sau:

o Năm 2006, Unity đạt “Best Use of Max OS X Graphics” tại Apple’s WWDC Đây là lần đầu tiên một công cụ phát triển game đạt được chất lượng do giải thưởng uy tín này đưa ra

Trang 16

o Năm 2009, Unity technologies có tên trong “Top 5 công ty game của năm”

2.2.2 Tính năng của engine Unity

 Môi trường phát triển được tích hợp với những tính năng kế thừa, khả năng chỉnh sửa đồ họa, chức năng kiểm tra chi tiết, và đặc biệt là tính năng xem trước game ngay trong lúc xây dựng (live game preview)

 Triển khai được trên nhiều nền tảng:

o Chương trình độc lập trên windows và Mac OS

o Trên web, thông qua Unity Web Player Plugin cho Internet Explorer, Firefox, Safari, Opera, Chrome, cho cả Windows và Mac OS

o Trên Max OS Dashboard widget

o Cho Nitendo Wii (cần mua license thêm)

o Cho iPhone, iPad application (cần mua license thêm)

o Cho google Android (cần mua license thêm)

o Cho Microsoft Xbox 360 (cần mua license thêm)

o Cho Sony PlayStation (cần mua license thêm)

 Tài nguyên (model, âm thanh, hình ảnh, …) được tải vào trong Unity và tự động cập nhật nếu tài nguyên có sự thay đổi Unity hỗ trợ các loại định dạng từ 3DS Max, Maya, Blender, Cinema, 4D, và Cheetah 3D

 Graphics engine sử dụng Direct (Windows), OpenGL (Mac, Windows), OpensGL ES (iphone OS), và các API trên Wii

 Hỗ trợ bump mapping, reflection mapping, parallax mapping, Screen Space Ambient Occlusion …

Trang 17

 Unity Asset Server: Đây là một tính năng khá mới của Unity, theo đó Unity

sẽ cung cấp một hệ thống quản lí theo dạng phiên bản cho tất cả Asset và Script Đây

là một kho chứa những tài nguyên cần thiết cho việc làm game Khi Import cũng như sửa chữa, trạng thái của asset cũng ngay lập tức được cập nhật Server chạy trên Database opensource postgreSQL và có thể truy nhập trên Mac lẫn Windows, Lunix Asset server đòi hỏi một khoản phí phụ trội là 499$ cho mỗi bản copy Unity, và một license Unity Pro

2.2.3 Các khái niệm cơ bản trong Unity

Hình 2.3: Asset trong Unity

Trang 18

Hình 2.4: Các scene trong Unity

Khi một tài nguyên được sử dụng trong một scene, khi đó chúng ta có thể coi tài nguyên này là một “Game Object” mới Mỗi GameObject phải chứa ít nhất một thành phần, đó là thành phần “Transform” Transform chứa các phép để biến đổi góc quay,

tỷ lệ hay tịnh tiến của đối tượng Từ đây trong báo cáo này em sẽ gọi Game Object

trong cửa sổ Hierachy là đối tượng game

Hình 2.5: kéo tài nguyên vào Scene để sử dụng

 Component

Component là các thành phần trong một Game Object của Unity Bằng cách đính kèm các thành phần vào cho một đối tượng, chúng ta có thể áp dụng ngay các phần mới của game engine vào đối tượng Thông thường các thành phần này được Unity xây dựng sẵn như ánh sáng, camera, particle, hiệu ứng vật lý…

Trang 19

Hình 2.6: Các thành phần trong đối tượng Camera

 Script

Script là thành phần quan trọng nhất trong Unity, có thể xem scripts như là linh hồn của game Chúng ta có thể viết kịch bản cho game bằng C#, Java scripts Theo nhiều người đã sử dụng Unity thì code bằng C# sẽ giúp game chạy nhanh hơn và giúp kiểm soát code tốt hơn do tất cả các biến phải được khai báo rõ ràng Mặt khác ngôn ngữ C# rất tiện dụng để lập trình, nên em dùng ngôn ngữ C# để viết kịch bản cho game Mỗi file script C# là một class bắt buộc kế thừa từ lớp MonoBehaviour, có tên class phải trùng với tên file script

Hình 2.7: Cách tọa file Script mới

Trang 20

Một đoạn Script muốn thực thi được thì nó phải được gắn vào một đối tượng

Hình 2.8: Một file Script đang gắn vào đối tượng

 Prefab

Hãy tưởng tượng Prefab là một cái thùng rỗng, mà bên trong nó chúng ta có thể chứa đựng các thành phần hay đối tượng khác nhau, chúng ta có thể viết kịch bản cho hành động của Prefab (khởi tạo, di chuyển, hay hủy đối tượng) Chúng ta có thể sử dụng đối tượng này nhiều lần trong trò chơi, và cũng có thể sử dụng lại cho project khác Prefab cho phép chúng ta lưu trữ cá đối tượng, toàn bộ thành phần bên trong và cấu hình hiện tại

 Material và Shader

Shader là đoạn script qui định cách thức render của chất liệu trên bề mặt vật thể Material sử dụng shader để làm chất liệu cho mô hình Giữa materials và shaders có mối liên hệ với nhau Shaders qui định các thuộc tính cần để shader làm việc Còn material cho phép gán hình ảnh vào các thuộc tính đó từ Asset

Trang 21

Hình 2.9: Material và Shader 2.2.4 Giao diện của Unity

Giao diện Unity, giống như nhiều môi trường làm việc khác, layout có thể tùy chỉnh Layout của Unity bao gồm nhiều tab khác nhau và có thể bật tắt Chúng ta hãy xem xét một cách bố trí giao diện Unity điển hình:

Hình 2.10: Giao diện Editor của Unity

Như hình trên chúng ta thấy có 5 khung khác nhau:

1 Scene – nơi xây dựng trò chơi

2 Hierarchy – danh sách các đối tượng trong một cảnh game

3 Inspector – màn hình cài đặt cho tài nguyên/đối tượng đang được chọn

Trang 22

4 Game – cửa sổ xem trước game, chỉ hoạt động ở chế độ chơi (khi nhấn Play)

5 Project– danh sách các tài nguyên trong project, đóng vai trò như một thư viện Cửa sổ Scene và Hierarchy :

Cửa sổ Scene là nơi chúng ta sẽ xây dựng toàn bộ các đối tượng trong game Cửa sổ cung cấp nhiều góc nhìn khác nhau, có thể nhìn dạng phối cảnh hoặc dạng song song Chúng ta có thể kéo thả đối tượng trên cửa sổ này, di chuyển, xoay…

Hình 2.11: Các nút điều khiển

Cửa sổ Scene cũng kèm theo năm nút điều khiển tiện lợi như hình trên Truy cập từ bàn phím bằng cách sử dụng các phím Q, W, E, R và T Các phím thực hiệncác hoạt động sau đây:

+ Công cụ bàn tay [Q]: công cụ này cho phép di chuyển trong cửa sổ Scene, xoay góc nhìn, phóng to, thu nhỏ góc nhìn

+ Công cụ di chuyển [W]: Công cụ này dùng để di chuyển một đối tượng

+ Công cụ xoay [E]: Công cụ này cho phép chúng ta xoay nhân vật theo một trục nào

đó trong không gian

+ Công cụ tỷ lệ [R]: Công cụ này cho phép chúng ta tăng giảm tỷ lệ kích thước của đối tượng Khi chọn một đối tượng trong cửa sổ Scene, đối tượng này sẽ được tự động chọn trong cửa sổ Hierarchy và ngược lại

Hình 2.12: Chọn đối tượng trên Scene và Hierrarchy

Trang 23

Inspector:

Inspector sẽ hiển thị tất cả thông tin, các thành phần trong đối tượng game đang chọn, và cho phép điều chỉnh các biến của các thành phần này Có thể xem cửa sổ này như cửa sổ Properties khi design giao diện Winform trên Visual Studio

Hình 2.13: cửa sổ Inspector hiển thị thông tin một đối tượng

Cửa sổ Game:

Cửa sổ này sẽ hiển thị những gì có trong cửa sổ Scene và sẽ hoạt động khi nhấn nút Play Trong cửa sổ này chúng ta có thể chọn các kích cỡ hiển thị khác nhau để build cho các loại máy khác nhau Chúng ta có thể chơi thử game trên cửa sổ này khi

đã nhấn nút Play Lưu ý rằng khi cửa sổ này hoạt động rồi thì mọi chỉnh sửa trên cửa

sổ Scene và cài đặt cho các đối tượng chỉ là tạm thời và khi nhấn nút Stop, cửa sổ này

về lại trạng thái tĩnh thì mọi chỉnh sửa trước đó là không còn

Cửa sổ Project:

Cửa sổ Project thể hiện nội dung bên trong thư mục Assets của project chúng

ta Khi thêm tài nguyên vào thư mục Assets ngay lập tức chúng sẽ tự động được cập nhập vào project Unity của chúng ta

Trang 24

2.2.5 Tổng quan kiến trúc engine Unity

 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 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

Hình 2.14: Tổng quan kiến trúc Unity

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

Trang 25

* 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 nẩy, lăn, …

* CharacterController: giúp điều khiển nhân vật di chuyển theo độ cao địa hình

* Collider: hỗ trợ lập trình va chạm giữa các vật thể

* GUI: giúp lập trình giao diện người dùng trên Unity Từ phiên bản 4.6 trở đi, Unity

hỗ trợ một bản uGUI cho giao diện đẹp hơn

Chu kỳ sống của thành phần script gắn trên đối tượng game

Chu kỳ sống của một thành phần script được tính kể từ khi scene được chạy cho đến lúc scene bị tắt hoặc chuyển sang scene khác

Trang 26

Tùy theo trạng thái của scene mà sự kiện tương ứng sẽ được gọi

* Awake: được gọi khi script được load xong

* Start: được gọi khi script được load xong nếu thành phần script đó không bị disable

* Update: đây là sự kiện thường sử dụng nhất và được gọi liên tục từng frame để vẽ

lại màn hình

* LateUpdate: sự kiện này chạy sau sự kiện Update và được gọi liên tục từng frame

* OnGUI: sự kiện này dùng để vẽ GUI và được gọi liên tục từng frame, chỉ trong sự

kiện này ta mới có thể sử dụng các lớp hỗ trợ tạo giao diện người dùng của UnityAPI

* OnDestroy: được gọi khi thành phần script bị hủy khỏi bộ nhớ

2.3 Một số tiêu chí đánh giá game

Trong thời đại công nghệ bùng nổ hiện nay, có rất nhiều game engine khác nhau Tùy theo nhu cầu, mục tiêu của mỗi cá nhân (nhóm/studio/côngty) sẽ chọn Game Engine khác nhau

Để chọn ra một game engine phù hợp để lập trình cho riêng mình thì chúng ta

sẽ dựa trên một số tiêu chí đánh giá sau:

Trang 27

Một số nền tảng phần mềm (hệ điều hành) phổ biến mà một engine “hợp thời” phải có: Window, iOS, Android

API (8/10):

Hình 2.17: Lập trình C# trên IDE Mono develop

Application Programming Interface – Một công cụ chp phép người dùng có thể lập trình trên các Game Engine bằng những ngôn ngữ có sẵn Thư viện dựng sẵn hỗ trợ về đồ họa, vật lý, …

Game features (8/10):

Game features – nó thể hiện khả năng hỗ trợ về một số tính năng cơ bản của game như:

MMO (Multi massive online): Hỗ trợ đa trực tuyến

Path Finding: Tìm đường

Unlimited Size Words: Khả năng xâ dựng thế giới/bản đồ in-game rộng lớn đến mức vô hạn

Editors (8/10):

Trang 28

Hình 2.18: Worlds/scence Editor trong unity

Editor – những công cụ/khả năng hỗ trợ về mặt biên tập, xây dựng như:

World Editor: Hỗ trợ về xây dựng thế giới, môi trường trong game

World Editor Collaborative Editing: Khả năng hỗ trợ về việc biên tập, thế giới trong game mà nhiều người có thể thực hiện cùng một lúc trong một màn chơi (một world map)

Version Control: Hệ thống quản lí phiên bản

GUI Editor: Hỗ trợ thiết kế gia diện

Graphic features (6/10):

Trang 29

Hình 2.19 Deffered shading

Graphic feature có tính năng hỗ trợ về đồ họa như: Deffered Render, Forward render, Ambient Collision, Parallx Mapping, Per Object Motion Blur…

Physic features (7.5/10):

Hình 2.20: Physic trong game Cell Factor

Bao gồm những hỗ trợ về vật lý trong game như:

- Physical Clothing

- Ragdolls

Trang 30

Price/license (8.5/10):

+ Có hình thức phân phối như nào?

+ Giá cả ra sao?

+ Có bản Free cho người sử dụng không?

License: cơ chế license đa dạng, linh hoạt là một trong những yếu tố ảnh

hưởng lớn đến quy mô của cộng đồng người dùng engine Engine có nhiều phiên bản miễn phí dùng được cho mục tiêu thương mại hay những gói lựa chọn với giá phải chăng sẽ dễ trở thành mục tiêu cảu người hơn Ở phương diện của một người đang tìm engine thích hợp, thì mặc nhiên nó sẽ trở thành một vấn đề cần phải quan tâm

Community (9/10):

Hình 2.21: Ví dụ cộng đồng người sử dụng Game Engine

Community tức là cộng đồng người dùng engine và một thứ liên quan như tài nguyên (hình ảnh, mã nguồn…)

Đây là một trong những yếu tố hàng đầu để quyết định nó có nên chọn engine Lựa chọn một engine với một cộng đồng người dùng càng lớn nghĩa là bạn càng có nhiều cơ hội được hỗ trợ, đồng thời sẽ có nhiều nguồn tài nguyên cho bạn lựa chọn

Ngày đăng: 02/11/2017, 14:44

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w