ƯƠ

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,   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ê.

ủ 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. Roll­your­own Game Engine ể ượ Roll­your­own  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 Open­Source. 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   Scene­Graph   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. Mostly­ready Game Engine Mostly­ready 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 (open­source), 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 Mostly­ready ế ộ   Game Engine đ u có ph n h n ch  m t ít so v i roll­your­own 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. Point­and­click Game Engine Point­and­click Engine đ

ữ ượ ế ở ầ

ở ủ ứ ấ ả ọ

ọ ọ ể ạ ổ ế ỉ ệ

ể ả

ườ ệ ố i dùng càng t

ệ ậ ạ

c đi m r t l n c a nh ng Engine point­and­click 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 Just­In­Time 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 A­Z.

ử ổ ữ ứ ớ ố ượ 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, Drop­dowm 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 (Re­Import) 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/wormgame­cartoony­series­tutorial.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