Báo cáo Đồ án Phát triển game 2D trên Unity

BỘ CÔNG THƯƠNG  
TRƯỜNG CAO ĐẲNG KỸ THUẬT CAO THẮNG  
KHOA ĐIỆN TỬ - TIN HỌC  
…..  …..  
BÁO CÁO ĐỒ ÁN TỐT NGHIỆP  
Đề Tài: Phát Triển Game 2D trên Unity  
GVHD: Tôn Long Phước  
SVTH: Vũ Đức Duy  
LP: CĐTH12C  
TP.HCHÍ MINH, tháng 07 năm 2016  
LỜI MỞ ĐẦU  
Trong thời đại công nghệ thông tin như hiện nay, sản phẩm công nghệ ngày  
càng chịu sự đánh giá khắt khe hơn từ phía những người dùng, đặc biệt về sản phẩm  
Game được nhận rất nhiều sự đánh giá từ phía các Game thủ, hay chỉ những người  
chơi bình thường. Ngành công nghiệp Game hiện nay có thể nói là bùng nổ, với tốc độ  
phát triển đến chóng mặt, rất nhiều những Game hay và hấp dẫn đã được ra đời trong  
thời gian qua. Phía sau những Game phát triển nổi tiếng như vậy đều một Game  
Engine. Game Engine là một công cụ hỗ trợ, một Middleware giúp người phát triển  
viết Game một cách nhanh chóng và đơn giản, đồng thời cung cấp khả năng tái sử dụng  
các tài nguyên và mã nguồn cao do có thể phát triển nhiều Game từ một Game Engine.  
Từ xu hướng phát triển những bất cập trên, đồ án này sẽ khảo sát và nghiên  
cứu về Engine Unity – một Game Engine rất phổ biến và không kém mạnh mẽ hiện nay  
nhằm thực nghiệm việc phát triển một trò chơi (Demo) bắn máy bay 2D. Chuẩn bị kiến  
thức kỹ năng cho định hướng nghề nghiệp (phát triển Game) sau này của chúng em,  
góp phần vào sự phát triển của ngành công nghiệp Game nước nhà. Các chương đầu  
trong tài liệu sẽ trình bày lần lượt các khái niệm chung về Game Engine và thế giới 2D.  
Các chương tiếp theo sẽ giới thiệu về Engine Unity bao gồm các đặc điểm, tính  
năng, công cụ và thành phần trong Engine này. Sau những nội dung về thiết kế, tài liệu  
sẽ trình bày về việc lập trình trên Unity khi giới thiệu về ngôn ngữ lập trình cùng các  
lớp, hàm trong thư viện dựng sẵn của Unity thông qua các ví dụ thực tế khi phát triển  
một game bắn máy bay 2D. Cuối cùng là giới thiệu về bối cảnh, cốt truyện, tài liệu  
hướng dẫn sử dụng của trò chơi Demo cùng chương tổng kết vcác khó khăn những  
thành quả trong suốt quá trình phát triển trò chơi Demo trên Unity.  
LỜI CÁM ƠN  
Chúng em xin chân thành cảm ơn Khoa Công Nghệ Thông Tin, Trường Cao  
Đẳng Kỹ Thuật Cao Thắng đã tạo điều kiện tốt cho chúng em thực hiện đề tài này.  
Em xin chân thành cảm ơn Thầy Tôn Long Phước, người đã tận tình hướng  
dẫn em, chỉ bảo em trong suốt thời gian thực hiện đề tài. Em cũng xin cảm ơn Thầy Lê  
Quang Song đã những trao đổi, những chỉ dẫn giúp chúng em giải quyết các vấn đề  
và hoàn thiệ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 chúng em những kiến thức quí báu trong những năm học vừa  
qua.  
Chúng em xin gửi lòng biết ơn sâu sắc đến Ba, Mẹ, các anh chị bạn đã ủng  
hộ, giúp đỡ động viên chúng em trong những lúc khó khăn cũng như trong suốt thời  
gian học tập và nghiên cứu.  
Mặc dù chúng em đã cố gắng hoàn thành luận vă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.  
SV Thực Hiện : Vũ Đức Duy  
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN  
1. Mục đích nội dung của đồ án:  
………………………………………………………………………………  
………………………………………………………………………………  
………………………………………………………………………………  
2. Kết quả đạt được:  
………………………………………………………………………………  
………………………………………………………………………………  
………………………………………………………………………………  
3. Ý thức làm việc của sinh viên:  
………………………………………………………………………………  
………………………………………………………………………………  
………………………………………………………………………………  
Tp. Hồ Chí Minh, ngày…….tháng…….năm…….  
Giáo viên hướng dẫn  
(Ký và ghi rõ họ tên)  
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN  
4. Mục đích nội dung của đồ án:  
………………………………………………………………………………  
………………………………………………………………………………  
………………………………………………………………………………  
5. Kết quả đạt được:  
………………………………………………………………………………  
………………………………………………………………………………  
………………………………………………………………………………  
6. Ý thức làm việc của sinh viên:  
………………………………………………………………………………  
………………………………………………………………………………  
………………………………………………………………………………  
Tp. Hồ Chí Minh, ngày…….tháng…….năm…….  
Giáo viên phản biện  
(Ký và ghi rõ họ tên)  
Mục Lục  
ĐỒ ÁN TỐT NGHIỆP  
GAME BẮN MÁY BAY  
CHƯƠNG 1: TỔNG QUAN VỀ ENGINE UNITY VÀ  
KHÔNG GIAN 2D, 3D  
I. TỔNG QUAN VỀ ENGINE UNITY  
1.1.1. Unity Là Gì ?  
Đã qua rồi thời kỳ làm game trên nền Flash căn bản buồn chán với  
những chuyển động thật cứng nhắc. Unity 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 hiện nay, mang đến cho người chơi 1 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 2D, 3D  
huyền ảo.  
Unity được dùng để làm video game, 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 2D, 3D thời gian thực. Unity hao hao với  
Director, Blender game engine, Virtools hay Torque Game Builder 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 trò chơi đa nền. Trình  
biên tập thể chạy trên Windows và Mac OS, và có thể xuất ra game cho  
Windows, Mac, Wii, iOS, Android. Game cũng 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, cả Xbox 360, PlayStation 3.  
Vũ Đức Duy _306111271  
Trang 1  
     
ĐỒ ÁN TỐT NGHIỆP  
GAME BẮN MÁY BAY  
Hình 1.1.1 Hình minh họa đa nền  
Chỉ với khoản tiền bỏ ra khá khiêm tốn (1.500 USD) là phiên bản pro đã  
nằm trong tay của chúng ta, nhiê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 tầm 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, 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ới diễn đàn riêng. Bất cứ điều gì không  
hiểu chúng ta đều thể thoải mái hỏi 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 từ các phần mềm 3DSMax, Maya,  
Cinema4D... rất nhanh chóng. Sức mạnh sự tiện lợi của Unity là vô cùng  
lớn.  
Sức mạnh: Unity có thể tạo ra được nhiều loại game 2D, 3D đa dạng, dễ sử  
Vũ Đức Duy _306111271  
Trang 2  
ĐỒ ÁN TỐT NGHIỆP  
GAME BẮN MÁY BAY  
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 lợi: nếu chúng ta một người chuyên dùng 3Dmax, hay Maya hoặc  
phần mềm nguồn mở Blender thì quả thật tuyệt, chúng ta sẽ một lợi  
thế lớn khi viết game trên Unity này, bởi công việc tạo các mô hình 2D, 3D sẽ  
trở lê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ế sẽ thiết kế hoàn thiện tiếp nếu chưa  
xong trong khi đó 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 sẽ phải xuất chúng ra  
một dạng nào đó mỗi lần sửa lại phần mô hình chúng ta lại phải import lại,  
như thế là quá mất thời gian trong việc tạ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.  
1.1.2. Sơ Lược Lịch Sử Hình Thành Và Phát Triển Của Unity  
a. 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 với 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ó hỗ trợ Android vào tháng 9/2010 và bây giờ là phiên bản  
Unity 5. Có thể thấy tốc độ phát triển của Unity khá nhanh.  
b. Giải Thưởng  
Unity đã đoạt được nhiều giải lớn với những giải chính sau:  
Năm 2006, Unity đạt "Best Use of Mac OS X Graphics" tại  
Apple's WWDC. Đây 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.  
Vũ Đức Duy _306111271  
Trang 3  
     
ĐỒ ÁN TỐT NGHIỆP  
GAME BẮN MÁY BAY  
Năm 2009, Unity Technologies có tên trong "Top 5 công ty  
game của năm" do Gamasutra tổ chức.  
Năm 2010, Unity đoạt giải Best Engine Finalist do Develop  
Magazine bình chọn, giải Technology Innovation Award của  
Wall Street Journal ở thể loại phần mềm.  
c. Khách Hàng  
Unity được trên 250.000 người đăng sử dụng gồm Bigpoint, Cartoon  
Network, Coca-Cola, Disney, Electronic Arts, LEGO, Microsoft, NASA,  
Ubisoft, Warner Bros, các hãng phim lớn nhỏ, các chuyên gia độc lập, sinh  
viên và những người đam mê.  
1.1.3. Tính Năng Của Engine Unity  
Môi trường phát triển được tích hợp với 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, đặc biệt 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:  
Chương trình độc lập trên Windows và Mac OS.  
Trên web, thông qua Unity Web Player plugin cho Internet  
Explorer, Firefox, Safari, Opera, Chrome, cho cả Windows và  
Mac OS.  
Trên Mac OS Dashboard widget.  
Cho Nintendo Wii (cần mua license thêm.)  
Cho iPhone, iPad application (cần mua license thêm.)  
Cho Google Android (cần mua license thêm.)  
Cho Microsoft Xbox 360 (cần mua license thêm.)  
Cho Sony PlayStation 3 (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 kiểu định dạng  
Vũ Đức Duy _306111271  
Trang 4  
   
ĐỒ ÁN TỐT NGHIỆP  
GAME BẮN MÁY BAY  
từ 3DS Max, Maya, Blender, Cinema 4D và Cheetah3D.  
Graphics engine sử dụng Direct3D (Windows), OpenGL (Mac, Windows),  
OpenGL ES (iPhone OS), và các API khác trên Wii.  
Hỗ trợ bump mapping, reflection mapping, parallax mapping, Screen Space  
Ambient Occlusion v...v...  
Unity Asset Server: Đây 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à cả  
script. Đây một kho chứa các 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 ngay lập tức được cập nhật.  
Server chạy trên database opensource PostgreSQL và có thể truy cập trên cả  
Mac lẫn Windows, Linux. 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.  
Vũ Đức Duy _306111271  
Trang 5  
ĐỒ ÁN TỐT NGHIỆP  
GAME BẮN MÁY BAY  
II. TỔNG QUAN VỀ GAME ENGINE  
2.1.1. Khái Niệm  
Một Game Engine (hay công cụ tạo Game / động cơ Game) là một phần  
mềm được viết cho mục đích thiết kế và phát triển video Game. Có rất nhiều  
loại Game Engine dùng để thiết kế Game cho các hệ máy như hệ Consoles hay  
máy tính cá nhân (PC). Chức năng cốt lõi của Game Engine phần lớn nằm  
trong công cụ dựng hình (kết xuất đồ họa) cho các hình ảnh 2 chiều (2D) hay 3  
chiều (3D), công cụ vật lý (hay công cụ tính toán và phát hiện va chạm), âm  
thanh, mã nguồn, hình ảnh động (Animation), trí tuệ nhân tạo, phân luồng, tạo  
dòng dữ liệu xử lý, quản bộ nhớ, dựng ảnh đồ thị, kết nối mạng. Quá trình  
phát triển Game tiết kiệm được rất nhiều thời gian và kinh phí vào việc tái sử  
dụng và tái thích ứng một Engine để tạo nhiều Game khác nhau.  
2.1.2. Mục Đích  
Game Engine cung cấp một bộ các công cụ phát triển trực quan và có thể tái  
sử dụng từng thành phần trong đó. Nói chung các bộ công cụ này cung cấp một  
môi trường phát triển tích hợp được đơn giản hóa. Phát triển ứng dụng nhanh  
(Rapid Application Development) cho Game theo cách lập trình hướng dữ liệu.  
Những Game Engine này đôi khi còn được gọi là các "phần mềm trung gian  
cho Game" (Game Middleware), như ý nghĩa của thuật ngữ, chúng cung cấp  
một nền tảng phần mềm linh hoạt dễ dàng sử dụng lại với mọi chức năng cốt  
lõi cần thiết ngay trong nó để thể phát triển một ứng dụng Game đồng thời  
giảm giá thành, độ phức tạp, kịp thời hạn phát hành - tất cả các yếu tố quan  
trọng trong ngành công nghiệp Game đầy cạnh tranh. Giống như các phần mềm  
trung gian khác, Game Engine thường cung cấp một nền tảng trừu tượng hóa,  
cho phép một Game có thể chạy trên nhiều hệ máy bao gồm các hệ console  
hoặc máy tính cá nhân với một vài thay đổi (nếu cần) trong mã nguồn của  
Game đó. Thông thường, phần mềm trung gian cho Game được thiết kế với  
Vũ Đức Duy _306111271  
Trang 6  
     
ĐỒ ÁN TỐT NGHIỆP  
GAME BẮN MÁY BAY  
một nền tảng kiến trúc dựa trên các thành phần khác, cho phép các hệ thống  
khác nhau trong Engine có thể thay thế hoặc mở rộng với các phần mềm trung  
gian khác chuyên biệt hơn như là Havok cho hệ thống vật lý trong Game, Miles  
Sound System cho âm thanh, hay Bink cho các đoạn video. Một số Game  
Engine chỉ cung cấp khả năng dựng hình (kết xuất) 3D thời gian thực hay một  
khả năng riêng biệt nào khác thay vì rất nhiều chức năng trong phạm vi rộng  
mà Game yêu cầu. Loại Engine này thường được gọi là: "Graphics Engine",  
"Rendering Engine," hay "3D Engine" thay vì thuật ngữ bao quát hơn là "Game  
Engine”. Một vài ví dụ cho các Engine đồ họa là: RealmForge, Truevision3D,  
OGRE, Crystal Space, Genesis3D, Vision Engine, Irrlicht và JMonkey Engine.  
2.1.3. Ảo hóa phần cứng (trừu tượng hóa phầncứng - Hardware  
Abstraction)  
Thông thường, Engine 3D hay hệ thống kết xuất đồ họa trong Game Engine  
thường được xây dựng trên một nền tảng giao diện lập trình ứng dụng đồ họa  
như Direct3D hay OpenGL cung cấp sẵn một hệ ảo hóa cho GPU hay card đồ  
họa. Thư viện nguồn cấp thấp (cấp cơ bản) như DirectX, SDL, và OpenAL  
(thư viện âm thanh mã nguồn mở) cũng thường được sử dụng trong các Game  
khi chúng cung cấp khả năng truy cập phần cứng độc lập.  
2.1.4. Lịch sử  
Thuật ngữ "Game Engine" xuất hiện vào giữa những năm 90, đặc biệt là  
trong mối quan hệ giữa Game 3D. Như các thuơng hiệu nổi tiếng của id  
Sortware: Doom và Quake, thay vì phải làm việc từ đầu, các nhà phát triển  
khác (nếu được cấp phép) sẽ quyền truy nhập vào phần lõi (mã nguồn) của  
Game và thiết kế các hình ảnh, nhân vật, vũ khí, và các màn chơi của riêng họ -  
gọi là Game Content (nội dung Game) hay "Game Assets" (tài sản Game). Các  
Game sau này, như Quake III Arena và sản phẩm năm 1998 của Epic Games:  
Vũ Đức Duy _306111271  
Trang 7  
   
ĐỒ ÁN TỐT NGHIỆP  
GAME BẮN MÁY BAY  
Unreal được thiết kế với cách tiếp cận mới này, Game Engine và nội dung  
Game được chia thành các phần riêng biệt để phát triển. Engine có thể tái sử  
dụng khiến việc phát triển Game tiếp theo nhanh hơn dễ dàng hơn, một  
thuận lợi to lớn trong ngành công nghiệp cạnh tranh này. Game Engine hiện đại  
một trong những ứng dụng được viết ra (bằng các ngôn ngữ lập trình) phức  
tạp nhất, thường xuyên phải rất nhiều tinh chỉnh trong hệ thống để đảm bảo  
kiểm soát chính xác trải nghiệm người dùng. Sự phát triển liên tục của Game  
Engine đã tạo ra một sự phân chia mạnh mẽ giữa các công việc dựng hình, viết  
kịch bản, thiết kế hình ảnh, thiết kế màn chơi. Hiện nay thông thường một  
đội ngũ phát triển Game điển hình phải số lượng họa sĩ gấp vài lần số lượng  
lập trình viên.  
2.1.5. Xu hướng hiện tại  
Với công nghệ tạo Game Engine càng phát triển trở nên thân thiện hơn  
với người sử dụng, ứng dụng của nó càng được mở rộng, giờ đây được sử  
dụng để tạo các Game mang mục đích khác với giải trí đơn thuần như: mô  
phỏng, huấn luyện ảo, y tế ảo, và mô phỏng các ứng dụng quân sự. Nhiều  
Game Engine đang được tạo ra bằng các ngôn ngữ lập trình cấp cao như Java  
và C# hay .NET (ví dụ: TorqueX, và Visual3D.NET) hay Python (Panda3D).  
hầu hết các Game 3D hiện nay đều giới hạn cho GPU (giới hạn bởi sức  
mạnh của card đồ họa), khả năng gây chậm máy của các ngôn ngữ lập trình cấp  
cao trở nên không đáng kể, trong khi việc tăng năng suất được cung cấp bởi các  
ngôn ngữ này lại lợi cho các nhà phát triển Game Engine.  
2.1.6. Phần mềm trung gian  
Một số hãng hiện nay chuyên tập trung vào phát triển các bộ phần mềm gọi  
phần mềm trung gian (Middleware). Các nhà phát triển Middleware cố gắng  
phát triển một bộ phần mềm mạnh mẽ bao gồm hầu hết các yếu tố một nhà  
phát triển Game cần đến để xây dựng một Game. Phần lớn các Middleware  
Vũ Đức Duy _306111271  
Trang 8  
   
ĐỒ ÁN TỐT NGHIỆP  
GAME BẮN MÁY BAY  
cung cấp các cơ sở để phát triển game một cách dễ dàng, như hình ảnh, âm  
thanh, hệ thống vật lý và chức năng AI. Gamebryo và RenderWare là hai phần  
mềm trung gian được sử dụng khá rộng rãi. Một số Middleware chỉ làm một  
chức năng nhưng nó còn hiệu quả hơn cả toàn bộ Engine. Ví dụ, SpeedTree  
được sử dụng để dựng hình ảnh cây cối thêm thực tế trong Game nhập vai The  
Elder Scrolls IV: Oblivion. Bốn gói phần mềm trung gian được sử dụng rộng  
rãi nhất, thường được cung cấp dưới dạng một chức năng bổ trong một hệ  
thống Engine gồm có Bink của hang RAD Game Tools, hãng Firelight với  
FMOD, Havok, và GFx của Scaleform. RAD Game Tools phát triển Bink cho  
dựng hình video cơ bản, đi cùng với âm thanh Miles, và dựng hình 3D Granny .  
FMOD của Firelight là một thư viện bộ công cụ phần mềm âm thanh mạnh  
mẽ giá rẻ. Havok cung cấp một hệ thống phỏng vật mạnh, cùng với các  
bộ phần mềm về hình ảnh động và mô phỏng hành vi. Scaleform đem lại GFx  
dùng cho các biểu diễn cao cấp trên nền giao diện Flash, cùng với các giải pháp  
trình chiếu video chất lượng cao, và một Input Method Editor (IME) phần bổ  
sung nhằm hỗ trợ trò chuyện trong Game bằng ngôn ngữ Châu Á.  
2.1.7.Phân loại Game Engine theo mức độ chuyên biệt  
a. Roll-your-own Game Engine  
Roll-your-own Engine có thể được xem như những Engine ở mức thấp  
nhất. Ngày nay rất nhiều công ty tự tạo ra Engine cho riêng họ với những  
thứ thể. Họ tận dụng những gói ứng dụng phổ biến, các API như XNA,  
DirectX, OpenGL, các API và SDL của Windows và Linux. Ngoài ra, họ có  
thể dùng những thư viện từ nhiều nguồn khác nhau, được mua hoặc Open-  
Source. Những thư viện đó thể bao gồm cả những thư viện vật như  
Havok và ODE, những thư viện Scene-Graph như OpenSceneGraph và các  
thư viện GUI như AntTweakBar. Thực tế, những hệ thống “tự sản xuất” đó  
cho phép những lập trình viên dễ tương tác hơn rất nhiều họ biết cần gì  
chọn những thành phần phù hợp từ đó tạo nên chính xác thứ cần thiết.  
Nhưng cũng vậy tốn rất nhiều thời gian. Thêm vào đó, những lập  
trình viên thường gặp rất nhiều lỗi khi các thư viện từ nhiều nguồn không  
tương thích với nhau. Điều này đã góp phần làm cho những Engine dạng  
này kém hiệu quả và không được ưa chuộng ngay cả với Engine được thiết  
kế một cách chuyên nghiệp.  
Vũ Đức Duy _306111271  
Trang 9  
   
ĐỒ ÁN TỐT NGHIỆP  
GAME BẮN MÁY BAY  
b. Mostly-ready Game Engine  
Mostly-ready Game Engine, những Engine nằm ở tầng trung. Các nhà  
thiết kế Game nghiệp dư rất thích những Engine dạng này. Chúng được  
thiết kế rất đầy đủ với mọi tính năng cần thiết, vẽ, tương tác, GUI, vật lý…  
ngoài ra chúng còn kèm theo rất nhiều tool mạnh. Những Engine tầng này  
khá phong phú từ ORGE và Genesis3D (open-source), rẻ tiền như Torge  
hoặc đắc tiền như Unreal, id Tech và Gamebryo. Về mức độ, những Engine  
kể trên đều cần lập trình thêm để gắn kết mọi thứ với nhau nhằm tạo nên  
một Game hoàn chỉnh. Hầu như mọi Mostly-ready Game Engine đều có  
phần hạn chế một ít so với roll-your-own Engine. mặc dù nó là sản phầm  
của rất nhiều người tham gia phát triển trải qua thời gian dài nhằm mang  
đến cho khách hàng những “tiện nghi” tốt nhất nhưng không phải khách  
hàng nào cũng giống nhau và phát triển những Game tương tự nhau.  
c. Point-and-click Game Engine  
Point-and-click Engine được xếp ở tầng cao nhất. Những Engine này  
ngày càng trở nên phổ biến. Nó có tất cả mọi tool với đầy đủ chức năng cho  
phép chúng ta chỉ việc chọn, click và chọn để tạo ra Game. Những Engine  
như vậy, kể cả GameMaker, Torque Game Builder, và Unity3D được thiết  
kế để càng thân thiện với người dùng càng tốt. cũng yêu cầu ít lập trình  
hơn. Điều này không có nghĩa việc lập trình không cần, nhưng nếu so với 2  
loại Engine kể trên trên thì loại Engine này cần ít nhất. Nhược điểm rất lớn  
của những Engine point-and-click này đến từ việc những nhà phát triển bị  
hạn chế rất nhiều, với loại Engines này, chúng chỉ thể cho ra một loại  
giao diện như tương tự nhau hoặc khác nhau một ít. Nhưng điều này không  
nghĩa chúng vô dụng. Vì khi đối mặt với những hạn chế đó, những sáng  
tạo của con người sẽ càng được kích thích cao. Ngoài ra, Engine này cho  
phép chúng ta có thể làm việc nhanh hơn, làm ra Game nhanh hơn mà  
không phải làm quá nhiều.  
III. TỔNG QUAN KIẾN TRÚC GAME ENGINE  
3.1.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 nhiều đối tượng game. Mỗi đối tượng này có  
thể 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ũ Đức Duy _306111271  
Trang 10  
       
ĐỒ ÁN TỐT NGHIỆP  
GAME BẮN MÁY BAY  
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 1.1.2 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.  
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 thể gắn vào  
đối tượng.  
Vũ Đức Duy _306111271  
Trang 11  
Tải về để xem bản đầy đủ
docx 75 trang yennguyen 30/03/2022 5640
Bạn đang xem 20 trang mẫu của tài liệu "Báo cáo Đồ án Phát triển game 2D trên Unity", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • docxbao_cao_do_an_phat_trien_game_2d_tren_unity.docx