Ộ
ƯƠ
B CÔNG TH
NG
ƯỜ
Ẳ
Ậ
Ắ
Ỹ
TR
NG CAO Đ NG K THU T CAO TH NG
Ọ
Ệ Ử
KHOA ĐI N T TIN H C
….. a & b …..
Ố
Ệ
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
L PỚ : CĐTH12C
Ồ
6
TP.H CHÍ MINH, tháng 07 năm 201
Ờ Ở Ầ
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 là 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 là
ữ ườ ơ ườ ệ ệ ể 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 và n i ti ng
ụ ỗ ợ ư ậ ề ộ ộ ộ
nh v y đ u có 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 và 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 và 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 v các
ữ ể ả ơ ố
khó khăn và 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, là 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 đã có 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 và b n bè đã
ủ ữ ư ỡ ộ ộ ng h , giúp đ và đ 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
ụ ụ
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. 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 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 có 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 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.
ứ Vũ Đ c Duy _306111271 Trang 6
Ố
Ắ
Ệ
ĐỒ Á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, dĩ 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 là 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 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 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.ớ
ứ Vũ Đ c Duy _306111271 Trang 7
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ể ạ ứ ạ ượ ề ạ ạ S c m nh: Unity có th t o ra đ c nhi u lo i game 2D, 3D đ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 l i: n u chúng ta là m t ng i chuyên dùng 3Dmax, hay Maya
ẽ ệ ề ậ ả ầ ặ ồ ở ho c ph n m m mã ngu n m Blender thì qu là th t 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 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 và 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 đó 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á m t th i gian trong vi c t o
ử ố ỉ ự
và 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. 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:
ứ Vũ Đ c Duy _306111271 Trang 8
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ạ
ạ ượ ể ộ ưở ạ
ấ ượ
c ch t l i Apple's WWDC. Đây là
ả
ng uy ng do gi i th
Năm 2006, Unity đ t "Best Use of Mac OS X Graphics" t
ụ
ầ
ầ
l n đ u tiên m t công c phát tri n game đ t đ
tín này đ aư ra.
ủ
Năm 2009, Unity Technologies có tên trong "Top 5 công ty game c a năm" do
Gamasutra tổ ch c.ứ
ạ ả ọ
i Best Engine Finalist do Develop Magazine bình ch n,
c. Khách Hàng
ả ủ ở ể ạ ề ầ Năm 2010, Unity đo t gi
gi i Technology Innovation Award c a Wall Street Journal th lo i ph n m m.
ượ ườ ử ụ Unity đ c trên 250.000 ng ồ
i đăng ký s d ng g m Bigpoint, Cartoon
Network, CocaCola, 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ê.
ủ
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, và đ 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,
OS.
Opera, Chrome, cho c Windows và Mac
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.)
ứ Vũ Đ c Duy _306111271 Trang 9
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ả 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 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 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à c script. Đây là 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 10
Ố
Ắ
Ệ
ĐỒ Á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 lý b nh , d ng nh đ th , và
ể ạ ế ượ ấ ờ ế ố
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 và 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ó đ có th phát tri n m t
ứ ờ ạ ứ ạ ụ ả ồ ộ ờ ị ng d ng Game đ ng th i gi m giá thành, đ ph c t p, và 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
ứ Vũ Đ c Duy _306111271 Trang 11
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ộ ề ả ừ ượ ể ạ ộ ấ
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 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 mã 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à
ứ Vũ Đ c Duy _306111271 Trang 12
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ệ ữ ủ ư ệ ế ố ơ ổ 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 có 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: 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 và 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 là 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 có 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, và
ế ế ệ ơ ườ ộ ộ ể 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 có 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 và 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, và 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). Vì h u h t các Game 3D hi n nay đ u có 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
ứ Vũ Đ c Duy _306111271 Trang 13
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ượ ữ ấ ở ạ ợ ể đ c cung c p b i các ngôn ng này l i có 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 là 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à 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 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
ụ ầ ẻ ẽ ề ấ ộ ạ
và b công c ph n m m âm thanh m nh m giá r . Havok cung c p m t h ộ ệ
ề ề ả ầ ạ ậ ỏ ố ộ ộ
ớ
th ng mô ph ng v t lý 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 Á.
ứ ộ
ạ
ệ
Phân lo i Game Engine theo m c đ chuyên bi
t
a. Rollyourown Game Engine
ể ượ
Rollyourown Engine có th đ
ữ ư c xem nh nh ng Engine ở ứ
m c
ứ Vũ Đ c Duy _306111271 Trang 14
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ấ
ể ứ ề
ụ ổ ế ấ
ọ ậ ự ạ
ứ
ụ
ủ ấ
ữ
ư
ồ ọ ề ể
ữ
ữ nhi u ngu n khác nhau, đ
ồ ả ữ ể
ệ ư ặ
ậ ư ệ
ư ệ
ự ế
ễ ươ ữ
ư
ữ
ữ ậ
t c n gì và ch n nh ng thành ph n phù h p t
ầ
ố ấ ư ế
ườ
ề ỗ
ề ươ ề
ớ
ệ
ư ệ ừ
ầ
ộ ữ
ả ớ ế ế ộ ạ
ượ ọ ớ
t o ra Engine cho riêng h v i
th p nh t. Ngày nay r t nhi u công ty t
ữ
nh ng th có 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.
ượ
ư ệ ừ
c
Ngoài ra, h có th dùng nh ng th vi n t
ư
ư ệ
mua ho c OpenSource. Nh ng th vi n đó có th bao g m c nh ng th
ư
vi n v t lý nh Havok và ODE, nh ng th vi n SceneGraph nh
ữ
, nh ng
OpenSceneGraph và các th vi n GUI nh AntTweakBar. Th c t
ấ
ự ả
ệ ố
s n xu t” đó cho phép nh ng l p trình viên d t
h th ng “t
ng tác
ợ ừ
ọ ế ầ
ọ
ề
ơ ấ
đó
h n r t nhi u vì h bi
ờ
ề
ậ
ứ ầ
ạ
t. Nh ng cũng vì v y mà t n r t nhi u th i
t o nên chính xác th c n thi
ữ
ặ ấ
ậ
gian. Thêm vào đó, nh ng l p trình viên th
i khi các
ng g p r t nhi u l
ồ
ng thích v i nhau. Đi u này đã góp
th vi n t
nhi u ngu n không t
ượ ư
ả
c a
ph n làm cho nh ng Engine d ng này kém hi u qu và không đ
ệ
t k m t cách chuyên nghi p.
c thi
chu ng ngay c v i Engine đ
ữ
ữ
b. Mostlyready Game Engine
Mostlyready Game Engine, nh ng Engine n m
ư ấ
ế ế
t k Game nghi p d r t thích nh ng Engine d ng này. Chúng đ
ọ
ế ế ấ ầ
t k r t đ y đ v i m i tính năng c n thi
ầ ế ệ
ủ ớ
ằ ở ầ
ạ
ẽ ươ
t, v , t
ạ ữ ề
ừ
ề ắ
ORGE và Genesis3D (opensource), r
ư
ầ ậ ể ắ ư
ữ ể ề
ế
ư ọ ằ ạ ỉ
ầ
ớ ộ
ầ
ườ ể
ạ
ủ ấ
ế ữ ệ
ố
ươ ự t ng trung. Các nhà
ượ
c
thi
ậ
thi
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
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 Mostlyready
ế ộ
Game Engine đ u có ph n h n ch m t ít so v i rollyourown Engine. Vì
ặ
ả
ề
ầ
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
ờ
ấ
ố
t nh t
th i gian dài nh m mang đ n cho khách hàng nh ng “ti n nghi” 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 ề
ả
ằ
ả
nhau. ng t
c. Pointandclick Game Engine
Pointandclick Engine đ
ữ ượ ế ở ầ
ở ủ ứ ấ ả ọ
ọ ọ ể ạ ổ ế
ỉ ệ
ể ả
ườ ệ ố i dùng càng t
ệ ậ
ạ
c đi m r t l n c a nh ng Engine pointandclick này đ n t
ư
ấ
ệ
ề
ư ươ ủ
ị ạ
ạ ế ấ
ệ ự ộ ớ
ng t
ể
ư ộ ấ
t ng cao nh t. Nh ng Engine này
c x p
ớ ầ
t c m i tool v i đ y đ ch c năng
ngày càng tr nên ph bi n. Nó có t
ữ
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. Nó cũng yêu
t k đ càng thân thi n v i ng
ậ
ầ
ầ
ề
ơ
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
ạ
ể
ữ
vi c nh ng nhà phát tri n b h n ch r t nhi u, vì v i lo i Engines này,
ặ
ỉ
nhau ho c khác
chúng ch có th cho ra m t lo i giao di n nh t
ố
ụ
ề
nhau m t ít. Nh ng đi u này không có nghĩa chúng vô d ng. Vì khi đ i
ứ Vũ Đ c Duy _306111271 Trang 15
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ạ ữ ặ ớ ườ ẽ ạ ủ ữ ế
i s càng đ
ể
ề ả ơ ượ
c
m t v i nh ng h n ch đó, nh ng sáng t o c a con ng
ệ
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 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.
ứ Vũ Đ c Duy _306111271 Trang 16
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ế
ổ
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 :
ộ ố ượ ắ ố ắ t c các script mu n g n vào m t đ i t ộ
ng game b t bu c
MonoBehaviour: t
ả ế ừ ừ ớ
ph i k th a t ấ ả
l p này.
ủ ấ ả ự ớ ể
t c các th c th trong scene. GameObject: l p cha c a t
ớ ủ ấ ả ể ắ ố ượ ầ t c các thành ph n có th g n vào đ i t ng. Component: l p cha c a t
ổ ỉ ệ ế mô hình. ổ ị
Transform: giúp thay đ i v trí, xoay, bi n đ i t l
ỗ ợ ậ ả ứ ể ế ả ớ ố ộ 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.
ứ Vũ Đ c Duy _306111271 Trang 17
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ạ 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 .
ệ ậ ườ i dùng trên Unity. GUI: giúp l p trình giao di n ng
ƯƠ
CH
NG 2:
UNITY ENGINE
Ớ
Ệ
I. GI
I THI U CHUNG
ứ Vũ Đ c Duy _306111271 Trang 18
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ủ
Hình 2.1.1: Logo c a Unity Engine
ể Nhà phát tri n: Unity Technologies
ả ấ ớ Phiên b n m i nh t : 5 (phát hành vào ngày 11/4/2012)
ế ở ữ ượ
Đ c vi t b i ngôn ng : C++, C#
ể ệ ề
ạ
ấ ầ ổ
ề ả Phát tri n Game cho các h đi u hành : Windows, Mac OS X (t o và đóng gói), Wii,
ỉ
iPhone/iPad, Xbox 360, Android, PS3 (ch đóng gói ; c n gi y phép b sung cho
ừ
t ng n n t ng)
ấ ộ ề
Gi y phép: Đ c quy n
Website: www.unity3d.com
ụ ộ ộ ế ế Unity là m t 3D Game Engine, là m t công c thi t k Game dành cho
ề ộ ệ
PC, Mac và nhi u h máy di đ ng khác.
ử ụ Unity đ ượ ự ỗ ợ ủ
c s h tr c a JustInTime Compilation (JIT), s d ng th ư
ệ ử ụ ữ ệ ằ ồ ở vi n mã ngu n m C++ Mono. B ng vi c s d ng JIT, nh ng Engine nh ư
ể ậ ụ ợ ế ủ ố ữ ạ ộ Unity có th t n d ng l ị
i th c a t c đ biên d ch. Nh ng đo n code do
ướ ượ chúng ta vi ế ẽ ượ
t s đ ị
c Unity biên d ch ra Mono tr c khi nó đ ự
c th c thi.
ữ ề ể ấ ọ ờ ầ
ể ự
Đi u này r t quan tr ng cho Game đ th c thi code vào nh ng th i đi m c n
ế ạ ố ờ thi t trong su t th i gian ch y (Runtime).
ư ệ ụ ứ ữ ủ ậ Ngoài th vi n Mono, Unity cũng t n d ng ch c năng c a nh ng th ư
ứ Vũ Đ c Duy _306111271 Trang 19
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ư ủ ứ ề ệ ậ ầ ỏ vi n ph n m n khác vào ch c năng c a nó, nh Engine mô ph ng v t lý
ủ ế ả ấ PhysicX c a Nvidia, OpenGL và DirectX cho k t xu t hình nh 3D, OpenAL
ư ệ ấ ả ượ ự ữ cho âm thanh. T t c các th vi n này đ c xây d ng thành nh ng tính năng
ụ ự ế ả ầ ặ ự ộ
t đ ng ho c công c tr c quan vào Unity, vì th chúng ta không c n ph i lo
ể ử ụ ả ọ ề ệ ế ộ ắ
l ng v vi c ph i h c th nào đ s d ng chúng m t cách riêng l ẽ
.
ồ ườ ấ ớ ạ ấ ộ ộ
Unity có m t c ng đ ng ng i dùng r t m nh (r t l n) luôn chia s ẻ
ụ ủ ọ ướ ữ ứ ề ổ nh ng Plugins, công c c a h d ầ
i hình th c gói ph n m m b sung.
ấ ả ể ả ệ ẩ ấ ơ Có th s n xu t các trò ch i theo tiêu chu n chuyên nghi p, xu t b n 3D
ư ở ữ ủ ả ộ cho c Mac và PC cũng nh s h u riêng m t Web Player c a riêng mình,
ữ ể ộ ộ ố ấ
Unity là m t trong nh ng Game Engine có t c đ phát tri n nhanh nh t.
ủ ệ ể ả Unity cũng có phiên b n phát tri n Game cho h máy Wii c a Nintendo và
ủ ượ ủ ộ ữ ấ Iphone c a Apple, có nghĩa là m t khi chúng ta làm ch đ c nh ng v n đ ề
ể ỉ ơ ả
c b n, không ch phát tri n Game cho máy tính cá nhân mà chúng ta còn có
ệ ể ể ế ị ộ th phát tri n Game cho các h máy console và thi t b di đ ng.
Ủ
Ặ
Ể
II. CÁC Đ C ĐI M VÀ TÍNH NĂNG C A UNITY
ế
ả
ấ
2.2.1.1.
Rendering (k t xu t hình nh)
ư ấ ả ỗ ợ ầ ủ ố ỉ Gi ng nh t t c các Engine hoàn ch nh khác, Unity h tr đ y đ kh ả
ỗ ợ ụ ề ế ấ ả năng k t xu t hình nh (Redering) cùng nhi u h tr cho phép áp d ng các
ổ ế ồ ọ ự ệ ệ ả ằ công ngh ph bi n trong lĩnh v c đ h a 3D nh m c i thi n ch t l ấ ượ
ng
ấ ủ ầ ả ả ượ ự ạ hình nh. 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 k t xu 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.
ỗ ợ H tr Surface Shaders, Occlusion Culling, GLSL Optimizer.
ứ Vũ Đ c Duy _306111271 Trang 20
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
2.2.1.2.
Lighting (ánh sáng)
ỗ ợ H tr LOD.
ề ộ ế ế ườ ở Á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 : Lingtmapping, Realtime Shadows, hi u ng Sunshafts và Lens Flares.
ị
2.2.1.3.
Terrains (đ a hình)
ấ ề ủ ầ ọ ồ ị Terrains còn g i chung là đ a hình bao g m ph n đ t n n c a môi tr ườ
ng
ố ượ ơ ư ề ắ ỏ trong trò ch i cùng các đ i t ng g n li n nh cây, c , …
ụ ỗ ợ ấ ố ấ ộ ả ớ ọ Unity cung c p m t công c h tr r t t t kh năng này v i tên g i là
ế ế ị ớ Terrains Tools cho phép chúng ta thi t k đ a hình v i các công c v d ụ ẽ ướ
i
ể ạ ề ố ị
ỉ
ạ
d ng Brush có nhi u thông s tùy ch nh đ t o hình và lát Texture cho đ a
ụ ạ ẽ ớ ộ hình. Cùng v i Terrain Tools là Tree Creator, m t công c m nh m cho phép
2.2.1.4.
Substances (Texture thông minh)
ạ ạ ướ ể ạ ố ớ
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.
ể ể ộ ạ ế ằ ả ơ 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
2.2.1.5.
Physics (v t lí)ậ
ế ể ả ậ ượ ế viên l p trình đ tùy bi n hình nh đ ấ ủ
c k t xu t c a Texture
ỳ ạ ự ử ậ ộ ỏ 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
ứ Vũ Đ c Duy _306111271 Trang 21
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ượ ỗ ợ ở ư lý đ c h tr b i Unity nh : Soft Bodies, Rigitbodies, Ragdolls, Joints, Cars,
…
ườ
2.2.1.6.
. Pathfinding (tìm đ
ng)
ẻ ế ừ ấ ộ ớ ả ớ Đây là m t tính năng r t m i m đ n t phiên b n Unity 3.5. 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 đ n nay, 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
2.2.1.7.
Audio (âm thanh)
ệ ờ ướ ị ướ nh vào khái ni m l i đ nh h ng (NavMesh).
ụ ề ộ ợ ạ
V âm thanh, Unity tích h p FMOD – công c âm thanh thu c hàng m nh
ỗ ợ ệ ấ ử ụ ề ậ ị nh t hi n nay. Qua đó Unity h tr chúng ta nh p và s d ng nhi u đ nh
ậ ạ
d ng t p tin âm thanh khác nhau.
ậ
2.2.1.8.
Programming (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 ổ
2.2.1.9.
Networking
ư ế ậ ớ bi n v i các l p trình viên nh : C#, Java Scrip và Boo.
ự ế ạ ơ 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, …ự
ứ Vũ Đ c Duy _306111271 Trang 22
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ộ ố ư ấ ở M t s tính tăng cung c p b i Networking nh : State Synchronization,
Realtime Networking, Remote Procedure Calls, Backend Connectivity, Web
Browser Integration, Web Connectivity.
Ầ
III. CÁC THÀNH PH N TRONG UNITY
2.3.1.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, 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
Hình 2.1.2 Asset trong Uinty
2.3.1.2.
Scenes
ư ụ th m c có tên là “Assets”.
ể ầ ạ ộ ộ ả
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 ẽ
.
ứ Vũ Đ c Duy _306111271 Trang 23
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ủ
Hình 2.1.3 Các Scene c a Unity
2.3.1.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 ấ ả ượ
c t 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.
ứ Vũ Đ c Duy _306111271 Trang 24
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ể ử ụ
Hình 2.1.4 Kéo tài nguyên vào Scene đ s d ng
2.3.1.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
ố ượ
ầ
Hình 2.1.5 Các thành ph n trong đ i t
ng Camera
2.3.1.5.
Scripts
ả ị ượ ư ộ (mã k ch b n), chúng cũng đ c xem nh là m t Components trong Unity.
ứ Vũ Đ c Duy _306111271 Trang 25
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ư ộ ượ ầ ộ Đ 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).
ể ậ ế ỏ ả ọ
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.
ộ ố ể ậ ề ấ 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 ẽ
ớ
ạ
Hình 2.1.6 Cách t o file script m i
ượ ậ ự ư ậ đ ữ
c c p nh t và l u tr trong d án Unity.
ứ Vũ Đ c Duy _306111271 Trang 26
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ự ạ ộ ố ượ ả ượ ắ M t đo n script mu n th c thi đ c thì nó ph i đ ộ ố
c g n vào m t đ i
ố ượ
ắ
ộ
Hình 2.1.7 M t file Script đang g n vào đ i t
ng
2.3.1.6.
Prefabs
ngượ
t
ư ữ ố ượ ữ ớ 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
ộ ố ố ượ
Hình 2.1.8 M t s đ i t
ng trong Prefabs
ử ụ ề ẫ ố m u nào mà chúng ta mu n tái s d ng v sau.
Ủ
Ệ
IV. GIAO DI N C A UNITY
2.4.1.1.
Giao Di nệ
ệ ủ ả ố ỉ ươ ự ư ề 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:
ứ Vũ Đ c Duy _306111271 Trang 27
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ệ ủ
Hình 2.1.9 Giao di n c a Unity.
∗ Chú thích:
ơ ẽ ượ ơ ự Scene (1): N i mà trò ch i s đ c xây d ng.
Hierarchy (2): Danh sách các Game Object trong scene.
ữ ế ậ ố ượ ủ ầ ộ t l p, thành ph n, thu c tính c a đ i t ặ
ng (ho c Asset)
ượ Inspector (3): Nh ng thi
ọ
c ch n.
đang đ
ử ổ ướ ạ ộ ế ộ ỉ c, nó ch ho t đ ng trong ch đ “Play” (Preview – xem
ướ Game (4): C a s xem tr
tr c).
ủ ự ượ ư ư ệ ủ ự Project (5): Danh sách các Assets c a d án, đ c ví nh th vi n c a d án.
ử ổ
2.4.1.2.
C a s Scene và Hierarchy
ể ố ượ ử ổ ự ự ẽ ơ C a s scene là n i mà chúng ta s xây d ng các th c th , đ i t ủ
ng c a
ử ổ ố ả ấ ự
d án vào đó. C a s cung c p góc nhìn ph i c nh (Perspective (góc nhìn
ư ừ ể ể 3D), chúng ta có th chuy n qua các góc nhìn khác nh t ố
trên xu ng ho c t ặ ừ
ướ ừ ả ặ d i lên (Top Down), t ả
trái sang ph i ho c ph i sang trái (Side On), t ừ
ướ ế ướ ử ổ ẽ ế tr ặ
c ra sau ho c sau đ n tr ấ ầ
c (Front On). C a s này s k t hình xu t đ y
ế ớ ủ ữ ạ ơ ả
ủ
đ nh ng hình nh trong th gi i c a trò ch i mà chúng ta t o ra d ướ ạ
i d ng
ử ự ế ậ ậ ộ ỉ ể
m t vùng biên t p mà chúng ta có th biên t p, ch nh s a tr c ti p th gi ế ớ
i
ứ Vũ Đ c Duy _306111271 Trang 28
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
đó.
ử ổ ẽ ở ả Khi kéo th Assest 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 ứ
ử ổ
ứ
Hình 2.1.10. Các nút ch c năng cho c a s Scene
.
ừ ự ữ
t ch cái t AZ.
ử ổ ữ ứ ớ ố ượ 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 thu c trái.
ụ ụ
ể
ể
ự
ệ
ủ ố ượ ổ ị
ặ
ng s hi n th các tr c và m t ph ng g n li n v i đ i t
ộ ố ượ
ng đó. Khi ch n, t
ớ ố ượ
ặ ẽ ể
ể ụ
ượ ố ượ ẳ
ụ ẳ ng trong
ạ
ủ ố ượ
ọ
i
ề
ắ
ng cho
ể
ặ
t theo các tr c, m t ph ng ho c di chuy n ng tr
ộ ọ
Công c di chuy n (W): Công c này cho phép chúng ta ch n m t đ i t
ả
c nh và th c hi n thao tác di chuy n, thay đ i v trí c a đ i t
ị
ị
v trí c a đ i t
phép chúng ta di chuy n đ i t
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.
ụ ề ỉ ệ ươ ụ ể ỉ
(R): Cũng t
ỉ ộ Công c đi u ch nh t l
ụ
c này cho phép chúng ta tùy ch nh kích th ư
ự
ng t
nh công c di chuy n và xoay, công
ỉ ệ ủ ố ượ
ướ
c a đ i t
c, t l ng m t cách tùy ý.
ứ Vũ Đ c Duy _306111271 Trang 29
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ử ổ
Hình 2.1.11 C a s Hierarchy.
ử ổ
2.4.1.3.
C a s Inspector
ử ổ ể ượ ư ộ ụ C a s Inspector có th đ c xem nh m t công c cho phép chúng ta
ỉ ế ặ ủ ặ ầ tùy ch nh các thi t đ t, các thành ph n c a Game Object ho c Assets đang
ượ đ ọ
c ch n.
ủ ố ượ ử ổ ẽ ể ị ầ ủ C a s này s hi n th đ y đ các Components c a đ i t ng mà chúng
ế ủ ề ọ ỉ ướ ta ch n. Nó cho phép chúng ta đi u ch nh các bi n c a Components d i các
ứ ư hình th c nh : Textbox, Slider, Button, Dropdowm Menu…
ố ượ ủ ệ ể ị ượ ọ Ngoài vi c hi n th các Component c a đ i t ng đ c ch n, c a s ử ổ
ể ị ế ặ ủ ệ ố ủ ơ Inspector còn hi n th các thi t đ t chung c a h th ng hay c a trò ch i khi
ọ ừ ta ch n chúng t menu Edit.
ứ Vũ Đ c Duy _306111271 Trang 30
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ử ổ
Hình 2.1.12 C a s Inspector.
ị ộ ể ấ ử ổ
Trong hình trên, chúng ta th y c a s Inspector đang hi n th m t vài
ộ ố ượ ủ ộ ượ ọ thu c tính, Components c a m t đ i t ng đang đ c ch n. Trong đó, bao
ử ổ ẽ ồ
g m 2 Components là Transform và Animation. C a s Inspector s cho phép
ổ ế ặ chúng ta thay đ i các thi t đ t trên. Các Components này còn có th đ ể ượ
c
ấ ỳ ệ ằ ờ ỏ ố ọ
ạ
t m th i vô hi u hóa vào b t k lúc nào chúng ta mu n b ng cách b ch n
ở ẽ ấ ữ ủ ệ ỗ Checkbox góc trên bên trái c a m i Component, vi c này s r t h u ích
ệ ể ố ử
cho chúng ta khi mu n ki m tra hay th nghi m các Components này. Ngoài
ử ệ ra, c a Inspector còn cho phép chúng ta vô hi u hóa toàn b m t đ i t ộ ộ ố ượ
ng
ượ ằ ọ ỏ ọ ở đang đ c ch n b ng cách b ch n Checkbox ủ ử
trên cùng góc trái c a c a
ổ
s Inspector.
ử ổ
2.4.1.4.
C a s Project
ứ Vũ Đ c Duy _306111271 Trang 31
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ử ổ
Hình 2.1.13 C a s Project.
ử ổ ử ổ ự ế ấ ộ C a s Project là c a s cho phép chúng ta nhìn th y tr c ti p n i dung
ư ụ ỗ ự ủ ề ượ ứ ự
ủ
c a th m c Assets c a d án. M i d án Unity đ u đ ộ
c ch a trong m t
ư ụ ư ụ ỉ th m c cha. Trong đó có 3 th m c con là Assets, Library và Temp (ch có
ặ ấ ả ạ khi Unity đang ch y). Đ t t ư ụ
t c các Assets vào th m c Assets có nghĩa là
ử ổ ậ ứ ẽ ấ ệ ấ ngay l p t c chúng ta s th y chúng xu t hi n trong c a s Project. Ngoài ra,
ư ụ ư ậ ổ ị ủ khi thay đ i v trí c a Assets trong th m c Assets hay l u t p tin l ạ ừ ộ
m t i t
ươ ụ ứ ứ ụ ư ẽ ch ng trình ng d ng th 3 nào khác (ví d nh Photoshop), s làm cho
ậ ạ ự ả ổ Unity nh p l ứ
i (ReImport) Assets, ph n ánh s thay đ i này ngay lâp t c
ử ổ ử ụ ừ ượ ổ trong c a s Project và Scene có s d ng Assets v a đ c thay đ i.
ử ổ ượ ợ C a s Project đ ạ
c tích h p nút Create, nút này cho phép chúng ta t o
ụ ư ớ ấ ớ ộ m i b t kì m t Assets m i nào, ví d nh Script, Prefabs, Materials, …
ử ổ
2.4.1.5.
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
ứ Vũ Đ c Duy _306111271 Trang 32
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ườ ơ ẽ ấ ạ ộ 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
ử ổ
ạ
ả
Hình 2.1.14 Các lo i hình nh trong c a s game.
ế ộ ch đ Testing.
ƯƠ
Ộ Ố Ấ
Ề
M T S V N Đ VÀ GI
CH
NG 3:
Ự
Ả
I PHÁP KHI XÂY
D NG GAME ENGINE TRÊN UNITY
ứ Vũ Đ c Duy _306111271 Trang 33
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
Ạ Ọ
I. LOAD HO T H A
ề
3.1.1. V n Đấ
ượ ự ừ ề ượ ặ Game 2D đ c xây d ng t nhi u mô hình 2D đ c đ t lên không gian 2
ể ạ ề ả ậ ớ ệ
chi u sao cho hài hòa v i nhau đ t o thành c nh v t trong game. Do đó vi c
ị ượ ể ọ ạ
n p và hi n th đ c mô hình 2D trong game là vô cùng quan tr ng.
ố ậ ề Mô hình 2D đ ượ ấ ạ ừ ấ
c c u t o t ể
ể ạ
r t nhi u đa giác đ t o nên kh i v t th .
ố ậ ỉ ơ ứ ầ ộ ộ Ngày nay, trong m t mô hình 2D không ch đ n thu n ch a m t kh i v t th ể
ố ậ ể ượ ề ồ ế ớ ắ ộ mà nó bao g m nhi u kh i v t th đ c g n k t v i nhau trên m t khung
ươ ị ắ ề ế ể ộ ộ x ng. Đi u này giúp cho mô hình không b g n ch t m t chuy n đ ng vào
ễ ể ộ ổ
bên trong và d dàng thay đ i chuy n đ ng cho mô hình.
ả
3.1.2. Gi
i Pháp
ườ ượ ế ế ẵ ầ ằ Các mô hình 2D, 3D thông th ng đ c thi ề
t k s n b ng các ph n m m
ế ụ ế thi t k 3D chuyên d ng nh ư Adobe InDesign, Adobe Photoshop,
ẽ ượ ư ể ử ụ CorelDRAW, ... Sau đó, mô hình s đ c đ a vào game engine đ s d ng.
ỗ ợ ấ ề ị ư
ạ
Engine Unity h tr r t nhi u đ nh d ng mô hình 2D, 3D khác nhau nh :
ượ ể PNG, JPG... khi mô hình đ ẽ
c load vào project ta s chuy n mô hình sang
ề ầ ử ụ ụ ể ể m c Prefab đ có th tái s d ng nhi u l n.
ỗ ợ ằ ả ị Unity có h tr load mô hình b ng cách kéo th Prefab vào v trí b t k ấ ỳ
trong Scene.
ạ ơ ể ử ể ằ Tuy nhiên, đ linh ho t h n thì chúng ta có th x lý b ng code.
ướ ộ ố ượ ắ ạ ộ Tr c tiên, ta t o ra m t file script và g n nó vào m t đ i t ng trong
ể ứ ể ạ ấ game b t kì đ đo n script có th th c thi. Trong file script này, ta khai báo
ộ ố ượ ể ư ể m t đ i t ng ki u GameObject đ l u mô hình và dung hàm Instantiate() đ ể
ở ạ ở ị ố kh i t o mô hình này v trí góc quay mong mu n.
ố ượ ỏ ứ ở Tuy nhiên, câu h i là đ i t ng GameObject trên ch a mô hình nào. đây
ứ Vũ Đ c Duy _306111271 Trang 34
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ả ể ỏ có 2 gi i pháp đ tr GameObject vào mô hình
ả ứ ấ Gi i pháp th nh t:
ừ ứ Load mô hình t prefab ch a bên ngoài resource
ủ ố ượ ử ổ ượ ắ ấ Trên c a s Inspector c a đ i t ng game đ ệ
c g n script vào xu t hi n
ủ
ả
ộ
ọ
Hình 3.1.1 Minh h a kéo th prefab vào thu c tính c a script
ả ọ ộ ộ ố thu c tính Obj. Ta ch n Prefab mong mu n và kéo th vào thu c tính Obj.
ả ứ Gi i pháp th hai :
ừ ứ Load mô hình t Prefab ch a trong resource
ể ượ ừ ả ặ Đ load đ c Prefab t ư ụ
resource, ta ph i đ t Prefab đó trong th m c
ủ ể ớ
Resources c a project. Sau đó, dung hàm Resources.Load() đ load Prefab v i
ườ ẫ ủ ừ ư ụ ố
tham s là đ ng d n c a Prefab tính t th m c Resources.
ứ Vũ Đ c Duy _306111271 Trang 35
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
Hình 3.1.2 Prefab trong resources
ế
ậ
K t lu n
ả ấ ự ứ ệ ộ ơ Rõ ràng gi i pháp th hai cho th y s linh đ ng h n trong vi c load mô
ừ ặ ệ ế ổ ọ hình t Prefab, đ c bi t trong lúc runtime. M i thao tác bi n đ i, xoay,
ố ượ ự ệ ể ộ ề
chuy n đ ng sau đó đ u th c hi n trên đ i t ng GameObject này.
Ể Ộ
Ậ
Ậ
II. CHUY N Đ NG MÔ HÌNH NH T V T 2D
ề
3.2.1.1.
V n Đấ
ượ ể ậ Chúng ta đã load đ c mô hình 2D vào trong game, v y làm sao đ mô
ể ể ộ hình 2D này có th chuy n đ ng trong game.
ả
3.2.1.2.
Gi
i Pháp
ướ ả ầ Tr ẵ
c tiên mô hình 2D c n ph i có s n animation bên trong. Khi import
mô hình vào Unity, animation trong mô hình đ ượ ự ộ
c t ộ
ể
đ ng chuy n thành m t
ề ể AnimationClip. Đi u này giúp animation này có th dùng cho các mô hình
khác trong project.
ướ ả ạ ế ừ ủ Tr c h t ta ph i t o AnimationClip t ẵ
animation có s n c a mô hình.
ẵ ạ Có 2 lo i mô hình 2D có s n animation:
ứ ấ ạ Lo i th nh t:
ứ ề
Mô hình 2D có ch a nhi u animation bên trong.
ứ Vũ Đ c Duy _306111271 Trang 36
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ứ
ề
Hình 3.2.1 Mô hình 2D bên trong ch a nhi u animation
Mô hình 2D trên sau khi import vào project game, bên trong đã có s n 9ẵ
ẽ ự ộ ỗ ượ ạ ộ animation, m i animation s t đ ng đ c t o thành m t AnimationClip bên
ố ượ trong đ i t ng game.
ứ ạ Lo i th hai:
ứ
ộ
Hình 3.2.2 Mô hình 2D ch a m t animation
ộ ỉ ứ
Mô hình 2D ch ch a m t animation.
ộ ỗ Trong 3 mô hình trên, m i mô hình sau khi import có m t AnimationClip
ề ả ư ấ ạ ấ duy nh t có tên “Default Take”. V b n ch t hình d ng mô hình là nh nhau,
ế ợ ậ ỉ ch khác nhau animation (Idle, Run, Walk). V y làm sao chúng ta k t h p các
ộ ố ượ ấ ị AnimationClip này vào m t đ i t ng game duy nh t. Unity quy đ nh nh ư
ứ Vũ Đ c Duy _306111271 Trang 37
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
sau:
ộ ể ầ
ấ
L y m t mô hình làm mô hình chính, có th không c n animation kèm theo cũng
c.ượ
đ
ầ ả ầ ạ ả ở
i, tên ph i có 2 ph n cách nhau b i ‘@’, ph n đ u ph i trùng tên
ủ ứ ẽ ọ ầ
Các mô hình còn l
ầ
ớ
v i mô hình chính đã ch n, ph n th 2 s là tên c a animation.
ư ậ ư ặ ớ V i cách đ t tên nh v y, khi đ a các mô hình này vào project đ s ể ử
ẽ ự ộ ổ ị ụ
d ng thì Unity s t ặ
đ ng đ i tên animation m c đ nh trong mô hình thành
ả ổ ư ữ ằ ầ ớ tên trùng v i ph n tên mô hình n m sau ch ‘@’. L u ý là ph i đ i tên cho
ừ ư ế ổ ứ mô hình t bên ngoài project t c trên Windows vì n u nh chúng ta đ i tên
ủ ự ế ẽ ị ủ tr c ti p trong project thì tên c a animation c a mô hình đó s không b thay
ổ
ọ
Hình 3.2.3 Hình minh h a sau khi đ i tên và import vào
project
ấ ầ ổ
đ i theo ph n tên sau d u ‘@’.
ư ẽ Nh hình trên, mô hình s có 3 AnimationClip bên trong (Default Take,
idle, run).
ộ ố ượ ể ọ ự ế ệ ộ
Ti p theo, đ g i th c hi n m t AnimationClip trong m t đ i t ng ta
ủ ộ ạ
dùng hàm CrossFade() c a thu c tính animation trong GameObject. Đo n
ượ ắ ố ượ ạ ầ code sau đây đang đ c g n vào đ i t ng game c n ch y animation.
ứ Vũ Đ c Duy _306111271 Trang 38
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ủ ể ạ ố ộ ộ Đôi khi ta mu n ch y các chuy n đ ng khác nhau c a mô hình m t cách tu n t ầ ự ể . Đ
ề ủ ộ làm đi u này ta dùng hàm CrossFadeQueued() c a thu c tính animation trong
ạ ủ
ể ề
ể
ộ
Đ đi u khi n cách ch y c a AnimationClip, ta dùng thu c tính
wrapMode
GameObject.
ế
ậ
K t Lu n
ố ượ ủ ự ệ ệ ọ ả Vi c g i th c hi n các animation c a đ i t ơ
ng là khá đ n gi n. Tuy
ể ế ể ặ ạ ả ọ ị ớ
nhiên ph i quy t đ nh ch n mô hình lo i nào đ có th thêm ho c b t
ễ ế ạ ọ ả
animation cho mô hình d dàng. N u ch n mô hình lo i 1 thì chúng ta ph i
ươ ỗ ợ ể ỉ import vào các ch ử
ng trình h tr làm animation cho mô hình đ ch nh s a
ồ thêm xóa animation r i import vào Unity l i,ạ còn ch nọ mô hình lo iạ 2 thì
ấ ạ chúng ta chỉ c nầ xóa hay thêm file mô hình là xong, r t linh ho t và nhanh
chóng.
Ể Ộ
Ự Ệ
Ủ
Ậ
III. THÊM S KI N VÀO CHUY N Đ NG C A NHÂN V T
3.3.1.1.
V nấ đề
ậ ố ị ế ộ ả
Trong lúc l p trình k ch b n game, chúng ta mu n bi t khi nào m t nhân
ể ể ộ ướ ử ụ ư ế ậ
v t chuy n đ ng xong đ có b ậ
c x lý ti p theo. Ví d nh sau khi nhân v t
ả ủ ố ượ ự ế ể ộ ỏ ộ th c thi chuy n đ ng ch t thì chúng ta ph i h y đ i t ớ
ng đó kh i b nh .
3.3.1.2.
Gi
iả pháp
ạ ộ ộ ự ệ ể
Trong Unity, khi m t chuy n đ ng ch y xong không t ự
phát ra s ki n.
ự ệ ả Unity h tr l p ấ ỳ ỗ ợ ớ AnimationEvent giúp thêm s ki n v o frame b t k
ộ ướ ứ ế ả ộ trong m t AnimationClip. Tr c h t ta ph i có m t file script ch a hàm s ẽ
ự ệ ư ự ả ẳ ạ ộ th c thi sau khi s ki n x y ra. Ch ng h n, file script có n i dung nh sau
ủ ố ứ ượ (ch a hàm h y đ i t ng):
ứ Vũ Đ c Duy _306111271 Trang 39
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ể ắ ạ Sau đó chúng ta t o file script khác dùng đ thêm event và g n file script
ố ượ ấ ỳ ẫ ạ ướ ượ ắ này vào đ i t ng b t k . Đo n script m u bên d i đang đ ộ
c g n vào m t
mô hình 2D .
ộ ự ệ ạ ớ ố
V i đo n code trên, chúng ta đã thêm m t s ki n vào frame cu i
ủ ượ ự ả cùng c a AnimationClip “die”. Hàm đ ự ệ
c th c thi khi s ki n x y ra là hàm
Die().
ẽ ả ế ạ ạ ỗ ự ấ N u ch y đo n code trên s x y ra l i th c thi vì không tìm th y hàm
ố ượ ứ ả Die(). Chúng ta ph i thêm file script ch a hàm Die() vào đ i t ạ
ớ
ng v i đo n
code sau:
ố ượ ạ ự ệ ạ Khi ch y game, lúc đ i t ng ch y animation “die” xong thì s ki n s ẽ
K tế lu nậ
ượ ả ự ệ ế ả ạ đ c x y ra. N u ch y animation khác thì s ki n không x y ra.
ự ệ ể ể ệ ễ ộ Vi c thêm s ki n vào mô hình giúp ta ki m soát chuy n đ ng d dàng
ợ ở ờ ử ư ơ
h n và đ a ra các x lý thích h p ể
th i đi m nh t ị
ấ đ nh.
Ạ
Ệ Ứ
IV. T O HI U NG PARTICLE
ề
3.4.1.1.
V n đấ
ườ ư ư ế ơ ử ặ ệ ứ
Các hi u ng th ệ
ng g p trong game nh m a, tuy t r i, khói, l a, hi u
ứ ấ ượ ẽ ộ ấ ớ ơ ng phép,… s làm cho game sinh đ ng và n t ng h n, nh t là v i game
ệ ứ ầ ế ơ ệ ứ ượ 3D thì các hi u ng này càng c n thi t h n. Các hi u ng này đ ọ
c g i
3.4.1.2.
Gi
iả pháp
ệ ứ
chung là hi u ng particle.
ứ Vũ Đ c Duy _306111271 Trang 40
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ể ượ ỗ ợ ườ ề ể ạ Đ làm đ c đi u này, Unity h tr ng i dùng Particle Systems đ t o ra
ườ ố ố ấ ỳ ệ ứ
b t k hi u ng particle nào mà ng ể
i dùng mong mu n. Particle mu n hi n
ị ượ ả th đ ầ
c ph i có 3 thành ph n chính quan tr ng ọ sau:
ể ạ
Particle Emitter: đ sinh ra các h t.
ể ể ạ ờ Particle Animator: đ làm di chuy n các h t theo th i gian.
ể ẽ h t.ạ Particle Renderer: đ v các
B
ướ
c 1:
ể ạ ư ự ệ ộ Đ t o m t particle, chúng ta th c hi n nh sau:
ạ ầ ạ ọ ấ ể
T o thành ph n quan tr ng nh t đ sinh ra các h t thành ph n ầ Particle
ể ạ ế ừ ự ầ ể ỉ
code mà ch có th thêm Emitter. Thành ph n này không th t o tr c ti p t
ủ ệ ằ ọ ừ
t giao di n Editor c a Unity b ng cách ch n menu Component Particles
ầ
Hình 3.4.1 Thêm thành ph n Ellipsoid Particle Emitter
B
ướ
c 2
Ellipsoid Particle Emiter.
ạ ầ ạ T o 2 thành ph n còn l ướ
i là Particle Animator và Particle Renderer. B c
ể ự ệ ệ ặ ằ này chúng ta có th th c hi n b ng code ho c trên giao di n.
ứ Vũ Đ c Duy _306111271 Trang 41
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ươ ể ộ Ph ng th c ứ AddComponent() đ thêm m t thành
ươ ự ư ậ ph n ầ ng t ầ
ớ
nh v y v i thành ph n Particle Renderer vào gameObject. T
ủ ế ấ ả ộ Particle Animator. Cách l y và gán thu c tính thông qua bi n tr ra c a hàm
AddComponent().
ể ọ ầ ổ ộ ủ
Đ g i và thay đ i các thu c tính c a thành ph n Particle Emiter chúng ta
B
ướ
c 3:
ộ ử ụ
s d ng thu c tính ủ
particleEmiter c a GameObject:
ủ ừ ể ầ ộ ỉ ượ Tùy ch nh các thu c tính riêng c a t ng thành ph n đ có đ ệ
ộ
c m t hi u
ứ ư ủ ầ ố ệ
ộ
ng nh mong mu n. Xem qua các thu c tính c a 3 thành ph n trên giao di n
ơ ể ấ
editor đ th y rõ h n:
ứ Vũ Đ c Duy _306111271 Trang 42
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ủ
ộ
Hình 3.4.2 Các thu c tính c a Particle System
ầ ạ ủ ộ Các thu c tính c a thành ph n t o h t, cượ ạ Elipsoid Particle Emiter đ
ả
ộ
B ng 3.4.3 Các thu c tính c a
ủ Elipsoid Particle Emiter
ả trình bày trong b ng 3.1
ộ
Thu c tính
Ý nghĩa
Hình minh h aọ
ế
ẽ
Emit
ệ ứ
N u enable hi u ng s phát ra.
ặ ị
M c đ nh
Min Size /
Max Size
ấ
ấ ớ
ỏ
c nh nh t/l n nh t có
ể
ờ
ỗ ạ ạ
i th i đi m sinh
ướ
Kích th
ể ủ
th c a m i h t t
ra.
Max Size = 0.7
ấ ớ
ấ
ỏ
ằ
ố
ờ
Th i gian s ng nh nh t/l n nh t
ủ ạ
c a h t, tính b ng giây.
Min Energy
/ Max
Energy
Max Energy = 7
ứ Vũ Đ c Duy _306111271 Trang 43
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ố
ể ố
ạ
ng t
i thi u/t
Min Emisson /
Max Emisson
ố ượ
S l
ượ
đ
c phát ra, tính b ng
ủ
i đa c a h t
ằ giây.
Max Emission = 1
ố ộ ắ ầ ủ ạ
World Velocity T c đ b t đ u c a h t theo các
ề
chi u x, y, z trong không gian.
WorldVelocity.x = 1
ạ
ộ
ố ộ ắ ầ ủ
Local Velocity T c đ b t đ u c a các h t trong
cùng m t vùng x, y,
z
LocalVelocity.x = 1
ậ ố
ủ
ẫ
ạ
Rnd
Velocity
V n t c ng u nhiên c a các h t
ề
cùng chi u x, y, z.
RndVelocity.x=3
ạ
Tangent
Velocity
ậ ố
ề
ở ầ
V n t c kh i đ u cho các h t cùng
ề ặ ủ
chi u trên b m t c a Emitter.
ệ
OneShot
ệ ứ
ệ
ệ
ạ
TangentVelocity.x= 0.5
ẩ
Hi n và n
ệ
ố
ả
c kh i hi u
ngứ
ệ ứ
ụ
ộ
ế
N u enable thì hi u ng hi n m t
ế
ầ ồ ắ
i. N u
t, sau đó hi n lên l
l n r i t
ệ
ắ
t
t thì hi u ng hi n liên t c.
ầ ộ ượ ủ
Các thu c tính c a thành ph n v , c trình bày trong ẽ ParticleRenderer đ
ả
ộ
B ng 3.4.4 Các thu c tính c a
ủ ParticleRenderer
ả
b ng 3.2
ộ
Thu c tính
Ý Nghĩa
Hình minh h aọ
ủ
ệ
ấ
Materials
Texture:
ộ
Ch t li u c a particle, có thu c
ể ứ
tính size và texture, texture đ ch a
ư
các texture bên ngoài đ a vào giúp
ệ ứ
ẹ
ơ
hi u ng đ p h n.
ứ Vũ Đ c Duy _306111271 Trang 44
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ạ
ộ
ả ủ
Đ căng gi n c a các h t.
Stretch
Particles
StretchParticles=
HorizontalBillboard
ỷ ệ ộ
Length Scale
T l
ạ
ủ
đ dài c a các h t
StretchParticles
= Stretched,
ạ ế ự
ậ ố ủ
Velocity Scale V n t c c a các h t n u d a vào
ộ
thu c tính “
Stretch Particles”.
Velocity Scale =15
ộ
ủ ể ầ ộ Các thu c tính c a thành ph n làm chuy n đ ng, cượ ParticleAnimator đ
ủ
ả
ộ
B ng 3.4.5 Các thu c tính c a Particle Animator
trình bày trong b ngả 3.3
ộ
Thu c tính
Ý Nghĩa
Hình minh h aọ
ứ Vũ Đ c Duy _306111271 Trang 45
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ạ
ắ
ủ
ỳ
ế
ạ
Color
Animati
on
ơ
ủ
Màu s c c a h t, chu k màu c a
ố
ạ ẽ ấ
h t s m t nhanh n u h t nào có t c
ộ
đ nhanh h n.
ậ
ế
ỳ
Does Animate
Color
ế
ậ
ụ
N u không b t thì các chu k màu
ỳ
ẽ ấ
loang s m t, n u b t thì các chu k
ẽ
màu loang s có tác d ng.
ụ
Phép quay quanh các tr c x, y,
z.
ượ
ưở
ộ ứ
World
Rotation
Axis/ Local
Rotation
Axis
Force
ng t
ổ
ạ
ư
ng nh có m t s c gió
T
ề
đang th i vào các h t theo các chi u
x, y, z.
Force.x =1
ự ắ ầ
ể
ộ
Damping
ủ ừ
t d n chuy n đ ng c a t ng
S t
h t.ạ
Damping.x=2.4
K tế lu nậ
ủ ủ ầ ắ ộ N m rõ các thu c tính c a 3 thành ph n chính c a Particle System trong
ế ụ ộ Unity và bi ể ạ
ạ
t cách áp d ng m t cách linh ho t, chúng ta hoàn toàn có th t o
ắ ể ư ủ ệ ẹ ạ ra các hi u h t khác nhau và đ p m t đ đ a vào game c a mình.
Ự
Ệ
V. XÂY D NG GIAO DI N GAME
3.5.1.1.
V nấ đề
ồ ọ
ệ
ườ
ể
ế
ầ
ộ
Giao di n đ h a ng
ọ
i dùng là m t ph n quan tr ng không th thi u trong khi
ấ ứ ộ ứ
ể ẽ
ộ ứ
ự
ụ
ụ
xây d ng m t ng d ng game hay b t c m t ng d ng nào đ v các đ i t
ố ượ
ng
ư
ồ ọ
đ h a nh Button, Label, Checkbox, Slider, … lên màn hình.
ứ Vũ Đ c Duy _306111271 Trang 46
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
.5.2.Gi
iả pháp
ể
ượ
ề
ớ
Đ làm đ
c đi u này chúng ta dùng l p GUI, GUI là ch vi
ữ ế ắ ủ
t t
t c a “Graphical
ồ ọ
ệ
ườ
ệ ố
ủ
User Interface” – “Giao di n đ h a ng
i dùng”. H th ng GUI c a Unity đ
ượ
c
ể ử ụ
ượ
ươ
ả ọ
ứ
ọ
g i là GUIUnity. Đ s d ng đ
c các ph
ự
ng th c trong GUI ta ph i g i th c
ệ ừ
ư ự ệ
ụ
ố
hi n t
trong hàm
ẽ
OnGUI() gi ng nh s ki n Paint trong C#. Ví d sau đây s
ộ
ạ
t o ra m t button đ n
ơ gi n:ả
Hình 3.5.1 GUI Button
ể ạ ẹ ầ ộ ơ ộ Đ t o m t Button hay m t thành ph n trong GUI đ p h n, chúng ta s ử
ủ ặ ầ d ng ụ GUIStyle style cài đ t cho các thành ph n c a GUI. GUIStyle
ữ ị ể ượ ứ ề ặ ề ả ch a thông tin v font ch , v trí đ t bi u t ng, hình n n, kho ng cách, …
ộ ấ ỳ ỉ ầ ư ụ ầ ị Ch c n đ nh nghĩa và áp d ng cho m t b t k thành ph n nào nh Button,
ư ể ế ế Label, Checkbox,… Ta có th xem GUIStyle nh CSS khi thi t k web site
v y.ậ
ụ ạ ộ ớ ướ ộ ị
Ví d sau t o m t Label theo m t đ nh nghĩa GUIStyle, v i kích th c font
ữ ậ ề ữ ở ữ ữ ỏ là 14, ch in đ m, canh l ch gi a, màu ch đ , font Beckasin (đ ượ ư
c l u
ướ ư ụ ị tr ẽ
c trong th m c Resources), v trí v ra (Screen.width/2, Screen.height/2),
ướ kích th ữ ậ
c hình ch nh t bao quanh 150x50:
ứ Vũ Đ c Duy _306111271 Trang 47
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ụ
Hình 3.5.2 Áp d ng GUIStyle lên Label
ẽ ẽ ỉ ẽ ụ ộ ớ
Ví d sau đây s v ra m t Button v i background là hình. Vì ch v hình
ạ ầ ị ữ
ế
nên chúng ta không c n quan tâm đ n đ nh d ng text trong GUIStyle n a,
ự ệ ế ớ ỉ ề ủ
chúng ta ch quan tâm đ n hình n n c a button v i các s ki n chu t t ộ ươ
ng
tác trên button này mà thôi.
ứ Vũ Đ c Duy _306111271 Trang 48
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ộ
ộ
Hình 3.5.3 Button khi rê chu t và không rê chu t
ể ẽ ộ ử ụ ươ Đ v m t Image ra màn hình, chúng ta s d ng Texture2D, nó t ng t ự
ữ ể ừ ố ượ
đ i t ng Bimap hay Image bên ngôn ng C#. Đ load hình t Resources và
ẽ
ả
Hình 3.5,4 V hình nh trên GUI
K tế lu nậ
ươ ư ẽ
v ra màn hình chúng ta dùng ph ng th c ứ DrawTexture() nh sau:
ớ ớ ự ộ V i l p GUI trong Unity, chúng ta hoàn toàn có xây d ng nên m t giao
ứ ụ ệ ệ ờ ươ ứ ủ ớ di n tuy t v i cho ng d ng game. Ngoài các ph ng th c c a l p GUI đã
ề ấ ươ ố ượ ứ ư nêu trên thì còn r t nhi u ph ẽ
ng th c v các đ i t ng khác nh Radio,
ứ Vũ Đ c Duy _306111271 Trang 49
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
VI. Âm thanh trong game
3.6.1.1.
V nấ đề
Checkbox, Slider…
ế ố ứ ụ ầ Âm thanh là y u t ọ
không kém ph n quan tr ng trong ng d ng game.
ộ ả ắ ậ ệ ứ
Th t nhàm chán khi m t c nh đánh đánh nhau, b n nhau hay các hi u ng
ề ẽ ắ ự
ẹ
đ p m t mà không có âm thanh. Âm thanh 3 chi u s làm cho game th c
3.6.1.2.
Gi
iả pháp
ộ ố
ơ
h n và s ng đ ng h n.ơ
ơ ượ ể ằ ộ Đ ch i đ ặ
c m t file âm thanh trong Unity có 2 cách: b ng code ho c
ệ ọ ướ ế ẵ trên giao di n. Dù ch n cách nào thì tr ả
c h t chúng ta ph i có s n các file
ế âm thanh và import vào project. Sau khi import âm thanh vào project, n u file
Hình 3.6.1 Thông tin file âm thanh
ẽ ấ ư ể ể ấ ợ ệ
h p l ử
chúng ta s th y nh hình sau và có th nh n nút play đ nghe th .
ứ Vũ Đ c Duy _306111271 Trang 50
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
Cách 1:
ạ ệ
T o trên giao di n
ủ
Trên menu c a Unity, vào GameObject Create Empty.
ố ượ ọ ừ ạ ắ Ch n đ i t ầ
ng v a t o và g n thành ph n “AudioSource” cho đ i t ố ượ
ng
ộ ố ượ ố này. AudioSource là m t đ i t ổ
ng âm thanh. Mu n Play hay Stop, thay đ i
ầ
Hình 3.6.2 Thêm thành ph n Audio Source
ố ượ ả ạ ặ ả cách l p, tăng gi m volume nh c thì ph i thông qua đ i t ng này.
ố ượ ắ ừ ạ ễ ầ
Sau khi g n thành ph n âm thanh cho đ i t ng v a t o, chúng ta d dàng
ử ầ ố ỉ ch nh s a các thông s và gán file âm thanh cho thành ph n AudioSource này.
ứ Vũ Đ c Duy _306111271 Trang 51
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ầ
Hình 3.6.3 Thêm file âm thanh cho thành ph n AudioSource
ự ế ướ ể ạ ệ
N u th c hi n xong các b ể
c trên, chúng ta có th ch y game đ nghe
ố ượ ử ư ể ệ ả ơ ệ ạ
th . Vi c t o đ i t ng âm thanh trên giao di n khá đ n gi n, nh ng đ áp
ượ ạ ằ ử ụ ụ
d ng vào cho game thì không đ c linh ho t b ng cách s d ng script.
Cách 2:
Cách ch i nh c b ng code
ạ ằ ơ
ướ ầ ướ Tr c tiên chúng ta c n import file âm thanh vào project tr c.
ở ạ ố ượ ư Kh i t o đ i t ng game âm thanh AudioSource nh sau:
ườ ạ ẫ Gán đ ng d n file nh c cho âm thanh:
K tế lu nậ
ỉ ầ ọ ươ ứ Sau đó ch c n g i các ph ể ạ
ng th c Play() đ ch y file âm thanh:
ơ ượ ể ụ ậ ỹ Đ ch i đ ỉ ầ
c âm thanh trong Unity thì ch c n áp d ng các k thu t nêu
ủ ư ề ầ trên là đ . Ngoài ra còn nhi u thành ph n khác nh : AudioListener,
ứ Vũ Đ c Duy _306111271 Trang 52
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ự ơ ệ ứ ể ạ ề AudioSetting đ t o hi u ng âm thanh 3 chi u th c h n cho game.
ƯƠ
Ứ
Ụ
Ể
CH
NG 4:
NG D NG GAME PHÁT TRI N TRÊN
UNITY
Ớ
Ệ
I. GI
I THI U GAME
ư ủ ự ặ ạ ể ờ Đ c tr ng c a dòng game theo màn mà em đã xây d ng t i 1 th i đi m ch ỉ
ườ ơ ẽ ơ ơ ườ ể ơ ộ
có m t ng i ch i, trò ch i s có 4 màn hình ch i, ng ọ
i ch i có th ch n
ố ỗ ơ ườ ơ ẽ ượ ấ ấ
b t kì màn nào mà mình mu n, m i màn ch i ng i ch i s đ c cung c p 1
ấ ị ườ ơ ẽ ắ ị ượ
l ng máu và vũ khí nh t đ nh, ng ể ạ ỏ
i ch i s b n đ lo i b quân đ ch và c ố
ề ề ẽ ỗ ượ ể
ắ
g ng ăn càng nhi u ti n thì đi m càng cao, m i màn s có 1 l ề ấ
ng ti n r t
ư ề ề ề ẽ ộ ườ ơ
l n và càng v sau ti n càng nhi u nh ng đ khó s tăng lên, khi ng ơ
i ch i
ề ế ế ẫ ạ ườ ơ ẽ ị
b trúng đ n quá nhi u d n đ n h t máu thì ng ế
i ch i s ch t và màn hình
ẽ ấ ườ ườ ơ GameOver s xu t hiên thong báo cho ng ơ ố ể
i ch i s đi m, ng i ch i cũng
ể ể ở có th xem đi m cao button HighScore.
ẽ ị ừ ề ấ ể
Màn hình s di chuy n và quân đ ch cũng t ệ
đó mà xu t hi n, càng v sau
ế ậ ị ườ ả ơ quân đ ch càng đông và khó ch t vì v y ng ể
i ch i ph i khéo léo di chuy n
ủ ể ị ế ơ ộ ề ề ị ạ
đ tránh né đ n c a đ ch gi t càng nhi u đ ch thì càng có nhi u c h i ăn
ể ể ố
vàng đ nâng cao đi m s .
ườ ơ ế ơ ườ ơ ẽ ượ ỏ Sau khi ng i ch i k t thúc 1 màn ch i ng i ch i s đ ơ
c h i có ch i
ế ế ế ồ ườ ơ ẽ ti p màn ti p theo hay không, n u đ ng ý ng i ch i s click vào buton và
ế ế ể chuy n qua màn k ti p.
ứ Vũ Đ c Duy _306111271 Trang 53
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ể ắ ầ
ơ
Hình 4.1.1 màn hình đ b t đ u ch i
Ơ
Ậ
II. CÁC QUY LU T CH I CHÍNH
4.2.1.1.
Di chuy nể
ườ ơ ẽ ể ể ằ Ng i ch i s di chuy n b ng các nút trên bàn phím, di chuy n qua trái,
ể ạ ả ố ệ ẻ ơ ượ qua ph i, lên, xu ng đ né đ n và tiêu di t k thù, làm sao ch i đ c càng lâu
ượ ề ể ườ ể ể ạ ơ ỉ thì càng đ c nhi u đi m, ng i ch i ch có th di chuy n trong ph m vi
màn hình camara.
ứ Vũ Đ c Duy _306111271 Trang 54
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ể ơ
Hình 4.2.2 Màn hình đ ch i game
ấ
4.2.1.2.
T n Công
ườ ơ ẽ ắ ể ạ ệ ẻ ỗ ẻ ẽ Ng i ch i s b n đ n đ tiêu di t k thù, m i k thù s có m t l ộ ượ
ng
ấ ị ề ườ máu nh t đ nh, có máy bay ít máu và có máy bay nhi u máu nên ng ơ
i ch i
ụ ể ả ắ ệ ẻ ẽ ượ ầ
c n ph i b n liên t c đ tiêu di t k thù, máy bay màu xanh s có l ng máu
ế ạ ắ ượ ế ớ ừ
t 1 đ n 2 máu và b n ra 1 đ n, màu đen có l ơ
ng máu l n h n 2 đ n 3 máu,
ỏ ẽ ạ ừ ắ ạ ố ắ
b n ra 3 viên đ n và máy bay đ s có t 3 đén 4 máu, b n ra b n viên đ n và
ươ ạ ơ sát th ng cũng m nh h n.
ứ Vũ Đ c Duy _306111271 Trang 55
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ạ ủ
Hình 4.2.3 đ n c a máy bay xanh
ạ ủ
Hình 4.2.4 đ n c a máy bay đen
ứ Vũ Đ c Duy _306111271 Trang 56
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ỏ
ạ ủ
Hình 4.2.5 đ n c a máy bay đ
4.2.1.3.
Màn Ch iơ
ơ ẽ ơ ườ ơ ẽ ượ ọ Màn ch i s có 4 màn ch i, ng i ch i s đ c ch n 1 trong 4 màn đ ể
ẽ ễ ơ ơ ẽ ề ơ ch i game, màn đâu tiên s d h n và càng v sau màn ch i s càng khó quân
ẽ ắ ạ ấ ươ ẽ ạ ỗ ơ ề
ị
đ ch s xu t hiên nhi u và đ n b n ra sát th ơ
ng s m ng h n, m i màn ch i
ữ ị ườ ơ ẽ ượ ượ ẽ
s có nh ng đ a hình khác nhau màn 1 ng i ch i s đ c bay l n bên trên
ạ ẻ ể ả ữ ế ệ ấ ắ nh ng vì sao, b n h k thù đang xâm chi m đ b o v trái đ t còn màn 2
ườ ơ ẽ ể ạ ườ ơ ẽ ượ ng i ch i s di chuy n ngoài xa m c, màn 3 ng i ch i s đ ả
c tr i
ệ ẹ ẽ ệ ả ố ồ nghi m c m giác bay bên trên thành ph tuy t đ p, và màn 4 s là đ i núi.
ứ Vũ Đ c Duy _306111271 Trang 57
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ể ườ
ơ ự
ọ
Hình 4.2.6 có 4 màn đ ng
i ch i l a ch n
4.2.1.4.
Đi m ể
ườ ơ ẽ ượ ộ ượ ỗ ầ ượ Ng i ch i s đ ể
c c ng đi m khi ăn đ c 1 vàng, m i l n ăn đ c 1
ườ ơ ẽ ượ ộ ế ể ườ ớ ơ vàng ng i ch i s đ c c ng 100 đi m, n u ng ạ
i ch i va ch m v i máy
ẽ ị ừ ể ị ộ ử ồ ừ bay đ ch thì đi m s b tr ề
đi m t n a đ ng ti n vàng có nghĩa là tr đi 50
đi m.ể
ứ Vũ Đ c Duy _306111271 Trang 58
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ể
ườ
Hình 4.2.7 Vàng và đi m cho ng
ơ
i ch i
4.2.1.5.
Máu
ỗ ườ ơ ẽ ượ ượ M i màn ng i ch i s đ c cho 1 l ng máu khác nhau, màn càng khó
ẽ ị ả ề ườ ơ ị ượ
l ng máu cho càng nhi u. Máu s b gi m đi khi ng ạ
i ch i b trúng đ n,
ườ ơ ẽ ế ế ố
h t s máu ng i ch i s ch t và GameOver.
ứ Vũ Đ c Duy _306111271 Trang 59
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
Hình 4.2.8 Màn Hình GameOver
ạ
4.2.1.6.
ừ
T m D ng Game
ế ơ ườ ườ ỉ ầ ấ ố ạ ừ Khi đang ch i game n u ng i ng i mu n t m d ng ch c n n nút p
ẽ ượ ạ ừ ệ game s đ c t m d ng và hi n lên màn hình paused.
ứ Vũ Đ c Duy _306111271 Trang 60
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
Hình 4.2.9 màn Hình paused
Ữ Ệ
Ắ
III. D LI U GAME B N MÁY BAY
ậ
4.3.1.1.
ắ ầ
Màn Hình B t Đ u L p Trình
ượ ữ ề ấ ở Game đ ạ
c hình thành b i 10 Sence trên màn hình và r t nhi u nh ng ho t
ể ậ
ể
ổ
Hình 4.3.1 T ng th các Sence đ l p trình game
4.3.1.2.
Code Trong Game
ẽ ớ ạ ọ ở ệ ướ ạ
ọ
h a mà em đã t o ra. Em s gi i thi u các ho t h a bên d i.
ể ậ ữ ữ ắ ọ Ngôn ng em ch n đ l p trình game B n Máy Bay là ngôn ng C# trên
ượ MonoDeveloper đ ỗ ợ
c Unity h tr .
ứ Vũ Đ c Duy _306111271 Trang 61
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
Hình 4.3.2 Code C# có trong game
Ộ Ố
Ọ
IV. M T S CLASS QUAN TR NG TRONG GAME
4.4.1.1.
Player Game
ể ườ
ể
ơ
Hình 4.4.1 Class đ ng
ậ
i ch i di chuy n nhân v t
ố ượ
4.4.1.2.
ể
Di chuy n Đ i T
ng Trong Game
ứ Vũ Đ c Duy _306111271 Trang 62
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ố ượ
ể
Hình 4.4.2 Di Chuy n các đ i t
ng có trong game
4.4.1.3.
Đi mể
ể
ộ
Hình 4.4.3 C ng đi m khi ăn coin
ứ Vũ Đ c Duy _306111271 Trang 63
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
4.4.1.4.
Đ nạ
ố ượ
ạ
ạ
Hình 4.4.4 N p đ n cho đ i t
ng trong game
V.
PHÂN TICH S ĐƠ Ồ
ơ ồ
4.5.1.1.
S Đ Use Case
ứ Vũ Đ c Duy _306111271 Trang 64
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ơ ồ
Hình 4.5.1 S đ use case game
ơ ồ
4.5.1.2.
S Đ Sequence
ơ ồ
ơ
Hình 4.5.2 S đ Sequence Load màn ch i
ứ Vũ Đ c Duy _306111271 Trang 65
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ơ ồ
Hình 4.5.3 S đ Sequence xem high scores
ứ Vũ Đ c Duy _306111271 Trang 66
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ƯƠ
Ậ
Ế
CH
NG 5:
K T LU N
ề ề ể ọ ố ệ ố Sau nhi u ngày suy nghĩ kĩ đ ch n đ tài t t nghi p, cu i cùng em cũng
ọ ượ ề ắ đã ch n đ c đ tài làm game 2d trên Unity Game B n Máy Bay.
ặ ấ ướ ề ề ể ầ B c đ u tìm hi u v Unity và Game Engine em g p r t nhi u khó khăn
ự ệ ưở ệ ề ệ
trong vi c tìm tài li u và xây d ng ý t ng game vì tài li u v unity đa phân
ọ ỏ ố ắ ư ế ạ ả ằ
b ng ti ng anh, nh ng sau kho ng 1 tháng c g ng tìm tòi, h c h i các b n đi
ướ ượ ể ầ ỉ tr c thì em cũng đã làm cho mình đ c 1 game g n hoàn ch nh đ ph c v ụ ụ
ố ộ ố ệ ờ ề
cho đ tài t ữ
ề
t nghi p. Trong th i gian làm đ tài em cũng có m t s nh ng
ề ạ ượ ư ạ ượ ấ
v n đ đ t đ c và ch a đ t đ c.
ạ ượ
Đ t Đ c
ượ ạ ộ ứ ứ ấ ể
Hi u đ c c u trúc, cách th c ho t đ ng, cách th c phát
ể ứ ụ
tri n ng d ng trên Unity
ứ ậ ế ế Nâng cao ki n th c l p trình và ti ng anh chuyên ngành
ữ ệ ế ề ằ thông qua nh ng tài li u v Unty b ng ti ng anh
ự ượ ầ ậ ằ Xây d ng đ c các nhân v t trong game b ng ph n mêm h ỗ
ợ tr photoshop
ổ ứ ươ ứ T ch c load các màn t ng ng thông qua các button
ư ể ự ứ ơ Xây d ng các ch c năng nh đi m, máu, màn ch i.. thông
ữ ậ qua ngôn ng l p trình C# trên MonoDevelop
ố ứ ạ ơ T o âm thanh cho cho trò ch i và 1 s ch c năng khác.
ứ ặ ượ ữ ữ ư ề ề ấ ấ Ngoài nh ng th đ t đ ạ
c thì em còn r t nhi u nh ng v n đ ch a đ t
đ c.ượ
ứ Vũ Đ c Duy _306111271 Trang 67
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ư
ạ ượ
Ch a Đ t Đ c
ứ ủ ế ề ẹ ạ ứ
Do ki n th c c a em v Unity còn h n h p nên các ch c
năng trong game còn nghèo nàn
ư ự ượ ư ỉ Ch a xây d ng đ ố
c hoàn ch nh 1 game nh mong mu n
ổ ứ ự ự ư Các Script trong Unity t ch c ch a th c s rõ ràng
ư ượ ế ắ ơ ậ
X p x p nhân v t và màn ch i ch a đ c logic
ợ
ậ
Thu n L i
ụ ậ ượ ứ ế ọ ườ V n d ng đ c các ki n th c mà em đã h c trong t ng đ ể
ồ
làm đ án này
ượ ự ỉ ạ ậ ủ ầ ạ Đ c s ch d y t n tình c a th y và các b n
ệ ấ ề Tài li u r t nhi u trên Internet
Khó Khăn
ộ ườ ậ Unit là m t môi tr ắ
ớ ố ớ
ng l p trình m i đ i v i em nên khi b t
ế ừ ả ấ ỡ ỡ tay vào làm thì em không bi t làm t đâu và c m th y b ng
ệ
Kinh Nghi m Rút Ra
ả ế ắ ế ế ờ ợ Ph i bi ẽ ặ
t s p x p th i gian 1 cách h p lý n u không s g p
ề ấ
r t nhi u khó khăn
ể ố ể ả Đ hoàn thành t t 1 game không th làm 1 mình mà ph i bi ế
t
ẻ ệ ọ chia s và phân công công vi c cho m i ng ườ
i
ả ậ ệ ể ớ Làm vi c ph i t p trung m i có th hoàn thành t ố ượ
t đ c
ướ
ể
H ng Phát Tri n
ứ Vũ Đ c Duy _306111271 Trang 68
Ố
Ắ
Ệ
ĐỒ ÁN T T NGHI P GAME B N MÁY BAY
ể ạ ố ư ể ơ
T i u hóa đ game có th ch y nhanh h n
ơ ể ườ ề ự ơ Tăng thêm màn ch i đ ng ọ
i ch i có nhi u l a ch n
ạ ượ ấ Thêm vũ khí, d n d c, nâng c p máy bay và vũ khí
ụ ể ấ ườ ể ơ ọ ỉ Cung c p thêm công c đ ng i ch i có th ch n và ch nh
ệ ứ ậ ạ ữ
ử
s a t o riêng cho mình nh ng nhân v t, hi u ng âm
thanh….
ủ ệ ả C i thi n trí thông minh c a máy
Danh mục tài liệu tham khảo
[1] Ryan Henson Creighton, Unity 3D Game Development by
Example, Packt Publishing, 2010.
[2] Will Goldstone, Unity Game Development Essential, Packt
Publishing, 2009. [3] Efraim Meulenberg, Game Development with
Unity, VTC, 2010.
[4] Efraim Meulenberg, Game Development for iPhone/iPad Using Unity
iPhone, VTC, 2010.
[5] TornadoTwins, Wormgame Cartoony Series
http://www.unityprefabs.com/wormgamecartoonyseriestutorial.html
[6] Zak Parrish, Unity Fundamentals
http://www.3dbuzz.com/vbforum/content.php?176
[7] Chad and Eric, Unity Training
http://walkerboystudio.com/html/unity_training free .htm
ứ Vũ Đ c Duy _306111271 Trang 69