Đồ án tốt nghiệp đề tài: Phát triển Game 2D trên Unity được viết với các nội dung chính sau: Tổng quan về Engine Unity và không gian 2D 3D, Unity engine, một số vấn đề và giải pháp khi xây dựng game Engine trên Unity, ứng dụng game phát triển trên Unity, kết luận. Mời các bạn cùng tìm hiểu.
Trang 1… a & b …
BÁO CÁO Đ ÁN Ồ T T NGHI P Ố Ệ
GVHD: Tôn Long Ph ướ c SVTH: Vũ Đ c Duy ứ
L P Ớ : CĐTH12C
TP.H CHÍ MINH, tháng 07 năm 201 Ồ 6
Trang 2cà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ệ ẽ ề ệ ậ ớ ệ ề ữ ậ
Trang 3L 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 ứ
Trang 6CH ƯƠ 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ể ặ ữ ộ ươ ngtá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
Trang 7Hì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.ớ
Trang 8S 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ạ ả ạ ư ế ấ ờ ệ ạ
b Gi i Th ả ưở ng
Unity đã đo t đạ ược nhi u gi i l n v i nh ng gi i chính sau:ề ả ớ ớ ữ ả
Trang 9Năm 2006, Unity đ t "Best Use of Mac OS X Graphics" t i Apple's WWDC. Đây làạ ạ
l n đ u tiên m t công c phát tri n game đ t đầ ầ ộ ụ ể ạ ược ch t lấ ượng do gi i thả ưởng uy tín này đ aư ra
Năm 2009, Unity Technologies có tên trong "Top 5 công ty game c a năm" doủ Gamasutra tổ ch c.ứ
Năm 2010, Unity đo t gi i Best Engine Finalist do Develop Magazine bình ch n,ạ ả ọ
gi i Technology Innovation Award c a Wall Street Journal th lo i ph n m m.ả ủ ở ể ạ ầ ề
c Khách HàngUnity đượ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, Opera, Chrome, cho c Windows và Macả OS
Trên Mac OS Dashboard widget
Cho Nintendo Wii (c n mua license thêm.)ầ
Cho iPhone, iPad application (c n mua licenseầ thêm.)
Cho Google Android (c n mua licenseầ thêm.)
Cho Microsoft Xbox 360 (c n mua license thêm.)ầ
Cho Sony PlayStation 3 (c n mua licenseầ thêm.)
Trang 10Tà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.ụ ộ ỗ ả ộ
Trang 11II 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
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
Trang 12c 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àậ ữ ấ ệ ữ ữ ặ ệ
Trang 13trong 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ỉ ệ ố ể ả ả ể ả ệ ườ idù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ữ ậ ấ ở ể ệ ấ
Trang 14đượ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ề ệ ớ ả ế ấ ượ ngcao, 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ư ữ ở ứ
Trang 15th p nh t. Ngày nay r t nhi u công ty t t o ra Engine cho riêng h v iấ ấ ấ ề ự ạ ọ ớ
nh ng th 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.ư ủ Ngoài ra, h có th dùng nh ng th vi n t nhi u ngu n khác nhau, đọ ể ữ ư ệ ừ ề ồ ượ cmua 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ệ ậ ư ữ ư ệ ư OpenSceneGraph và các th vi n GUI nh AntTweakBar. Th c t , nh ngư ệ ư ự ế ữ
h th ng “t s n xu t” đó cho phép nh ng l p trình viên d tệ ố ự ả ấ ữ ậ ễ ương tác
h n r t nhi u vì h bi t c n gì và ch n nh ng thành ph n phù h p t đóơ ấ ề ọ ế ầ ọ ữ ầ ợ ừ
t o nên chính xác th c n thi t. Nh ng cũng vì v y mà t n r t nhi u th iạ ứ ầ ế ư ậ ố ấ ề ờ gian. Thêm vào đó, nh ng l p trình viên thữ ậ ường g p r t nhi u l i khi cácặ ấ ề ỗ
th vi n t nhi u ngu n không tư ệ ừ ề ồ ương thích v i nhau. Đi u này đã gópớ ề
ph n làm cho nh ng Engine d ng này kém hi u qu và không đầ ữ ạ ệ ả ượ ư c achu ng ngay c v i Engine độ ả ớ ược thi t k m t cách chuyên nghi p.ế ế ộ ệ
b Mostlyready Game Engine
Mostlyready Game Engine, nh ng Engine n m t ng trung. Các nhàữ ằ ở ầ thi t k Game nghi p d r t thích nh ng Engine d ng này. Chúng đế ế ệ ư ấ ữ ạ ượ cthi t k r t đ y đ v i m i tính năng c n thi t, v , tế ế ấ ầ ủ ớ ọ ầ ế ẽ ương tác, GUI, v tậ lý… ngoài ra chúng còn kèm theo r t nhi u tool m nh. Nh ng Engineấ ề ạ ữ
t ng này khá phong phú t ORGE và Genesis3D (opensource), r ti nầ ừ ẻ ề
nh Torge ho c đ c ti n nh Unreal, id Tech và Gamebryo. V m c đ ,ư ặ ắ ề ư ề ứ ộ
nh ng Engine k trên đ u c n l p trình thêm đ g n k t m i th v iữ ể ề ầ ậ ể ắ ế ọ ứ ớ nhau nh m t o nên m t Game hoàn ch nh. H u nh m i 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ể ả
th i gian dài nh m mang đ n cho khách hàng nh ng “ti n nghi” t t nh tờ ằ ế ữ ệ ố ấ
nh ng không ph i khách hàng nào cũng gi ng nhau và phát tri n nh ngư ả ố ể ữ Game tương t nhau.ự
c Pointandclick Game Engine
Pointandclick Engine được x p t ng cao nh t. Nh ng Engine nàyế ở ầ ấ ữ ngày càng tr nên ph bi n. Nó có t t c m i tool v i đ y đ ch c năngở ổ ế ấ ả ọ ớ ầ ủ ứ cho phép chúng ta ch vi c ch n, click và ch n đ t o ra Game. Nh ngỉ ệ ọ ọ ể ạ ữ Engine nh v y, k c GameMaker, Torque Game Builder, và Unity3Dư ậ ể ả
được thi t k đ càng thân thi n v i ngế ế ể ệ ớ ười dùng càng t t. Nó cũng yêuố
c u ít l p trình h n. Đi u này không có nghĩa vi c l p trình không c n,ầ ậ ơ ề ệ ậ ầ
nh ng n u so v i 2 lo i Engine k trên trên thì lo i Engine này c n ítư ế ớ ạ ể ạ ầ
nh t. Nhấ ược đi m r t l n c a nh ng Engine pointandclick này đ n tể ấ ớ ủ ữ ế ừ
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,ệ ữ ể ị ạ ế ấ ề ớ ạ chúng ch có th cho ra m t lo i giao di n nh tỉ ể ộ ạ ệ ư ương t nhau ho c khácự ặ nhau m t ít. Nh ng đi u này không có nghĩa chúng vô d ng. Vì khi đ iộ ư ề ụ ố
Trang 16m t v i nh ng h n ch đó, nh ng sáng t o c a con ngặ ớ ữ ạ ế ữ ạ ủ ườ ẽi s càng đượ ckí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.ớ ạ
Trang 17Hình 1.1.2 T ng quan ki n trúc Unity ổ ếBên trong UnityAPI ch a r t nhi u l p h tr l p trình game, trong đó cóứ ấ ề ớ ỗ ợ ậ
m t s l p quan tr ng nh :ộ ố ớ ọ ư
MonoBehaviour: t t c các script mu n g n vào m t đ i t ng game b t bu cấ ả ố ắ ộ ố ượ ắ ộ
ph i k th a t l p này.ả ế ừ ừ ớ
GameObject: l p cha c a t t c các th c th trong scene.ớ ủ ấ ả ự ể
Component: l p cha c a t t c các thành ph n có th g n vào đ i t ng.ớ ủ ấ ả ầ ể ắ ố ượ
Transform: giúp thay đ i v trí, xoay, bi n đ i t l mô hình.ổ ị ế ổ ỉ ệ
Input: h tr l p trình v i chu t, c m ng đa đi m, c m bi n gia t c.ỗ ợ ậ ớ ộ ả ứ ể ả ế ố
Camera: giúp l p trình camera.ậ
Trang 18Light: giúp t o ánh sáng trong game.ạ
Projector: giúp chi u texture lên b m t v t th ế ề ặ ậ ể
ParticleEmitter: h tr t o các hi u ng particle đ p m t.ỗ ợ ạ ệ ứ ẹ ắ
Audio: h tr l p trình v i âm thanh.ỗ ợ ậ ớ
Animation: ch y chuy n đ ng c a mô hình nhân v t.ạ ể ộ ủ ậ
Rigidbody: giúp t o hi u ng v t lý liên quan đ n tr ng l c nh bóng n y, lăn, ạ ệ ứ ậ ế ọ ự ư ẩCharacterController: giúp đi u khi n nhân v t di chuy n theo đ cao đ a hình.ề ể ậ ể ộ ịCollider: h tr l p trình va ch m gi a các v t th ỗ ợ ậ ạ ữ ậ ể
GUI: giúp l p trình giao di n ng i dùng trên Unity.ậ ệ ườ
CH ƯƠ NG 2: UNITY ENGINE
I GI I THI U CHUNG Ớ Ệ
Trang 19Hì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ư ệ ậ ụ ứ ủ ữ ư
Trang 20vi 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ệ ổ ế ự ồ ọ ằ ả ệ ấ ượ nghì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.ỗ ợ
Trang 21H tr LOD.ỗ ợ
2.2.1.2 Lighting (ánh sáng)
Ánh sáng là m t đi u thi t y u giúp môi trộ ề ế ế ường tr nên đ p và th c tở ẹ ự ế
h n. Unity cũng cung c p nhi u gi i pháp đa d ng cho phép chúng ta ápơ ấ ề ả ạ
d ng ánh sáng m t cách t t nh t vào môi trụ ộ ố ấ ường trong trò ch i v i nhi uơ ớ ề
lo i ngu n sáng nh ánh sáng có hạ ồ ư ướng (Directional Light), ánh sáng đi mể (Point Light), M t s công ngh và k thu t v ánh sáng độ ố ệ ỹ ậ ề ược Unity hỗ
tr : 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ọ ị ồ ầ ấ ề ủ ườ ngtrong 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ớ ộ ụ ạ ẽ 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.ể ạ
2.2.1.4 Substances (Texture thông minh)
Substances có th hi u đ n gi n là m t d ng tùy bi n Textures nh m làmể ể ơ ả ộ ạ ế ằ
đa d ng chúng trong nhi u đi u ki n môi trạ ề ề ệ ường khác nhau. Unity cung c pấ
kh năng này thông qua các API d ng s n trong th vi n, h tr l p trìnhả ự ẵ ư ệ ỗ ợ ậ viên l p trình đ tùy bi n hình nh đậ ể ế ả ược k t xu t c a Textureế ấ ủ
2.2.1.5 Physics (v t lí) ậ
PhysX là m t Engine mô ph ng và x lí v t lý c c k m nh m độ ỏ ử ậ ự ỳ ạ ẽ ượ cphá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ợ ể ả ậ ọ ấ ề ậ ộ ố ấ ề ậ
Trang 22lý được h tr b i Unity nh : Soft Bodies, Rigitbodies, Ragdolls, Joints, Cars,ỗ ợ ở ư
nh vào khái ni m lờ ệ ướ ịi đ nh hướng (NavMesh)
2.2.1.7 Audio (âm thanh)
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ậ ằ ề ữ ạ ẽ ổ
bi n v i các l p trình viên nh : C#, Java Scrip và Boo.ế ớ ậ ư
2.2.1.9 Networking
Networking cho phép chúng ta t o ra các trò ch i tr c tuy n (online) –ạ ơ ự ế
m t trong nh ng th lo i trò ch i thu hút độ ữ ể ạ ơ ược nhi u ngề ười ch i nh t. Tínhơ ấ năng này s h tr đ y đ đ chúng ta t o nên các khía c nh ph bi n trongẽ ỗ ợ ầ ủ ể ạ ạ ổ ế Game online nh h th ng đi m kinh nghi m , chat và tư ệ ố ể ệ ương tác th i gianờ
th c, …ự
Trang 23M 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ữ ộ
th m c có tên là “Assets”.ư ụ
Hình 2.1.2 Asset trong Uinty 2.3.1.2 Scenes
Trong Unity, chúng ta c n hi u m t c nh (hay m t phân đo n) nghĩa làầ ể ộ ả ộ ạ
m t màn ch i riêng bi t ho c m t khu v c hay thành ph n có trong n i dungộ ơ ệ ặ ộ ự ầ ộ
c a trò ch i (ví d nh Game menu). B ng cách t o nên nhi u Scenes cho tròủ ơ ụ ư ằ ạ ề
ch i, chúng ta có th phân ph i th i gian t i ho c ki m tra các ph n khácơ ể ố ờ ả ặ ể ầ nhau c a trò ch i m t cách riêng l ủ ơ ộ ẽ
Trang 24Hì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 t c đấ ả ượ c
mô t b i b 3 s X, Y, Z trong h tr c t a đ Thành ph n này có th đả ở ộ ố ệ ụ ọ ộ ầ ể ượ ctù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
Trang 25Hì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ơ ẽ ử ụ (mã k ch b n), chúng cũng đị ả ược xem nh là m t Components trong Unity. ư ộ
Hình 2.1.5 Các thành ph n trong đ i t ầ ố ượ ng Camera 2.3.1.5 Scripts
Trang 26Đượ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ằ ả ạ ữ ộ ẫ ấ ủ
Đ 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ự ư ồ ế ẽ
đượ ậc c p nh t và l u tr trong d án Unity.ậ ư ữ ự
Hình 2.1.6 Cách t o file script m i ạ ớ
Trang 27M t đo n script mu n th c thi độ ạ ố ự ược thì nó ph i đả ược g n vào m t đ iắ ộ ố
tượng
Hình 2.1.7 M t file Script đang g n vào đ i t ộ ắ ố ượ ng
2.3.1.6 Prefabs
Prefabs cho phép chúng ta l u tr các đ i tư ữ ố ượng v i nh ng Componentsớ ữ
và nh ng thi t đ t hoàn ch nh. Có th so sánh v i khái ni m c b n làữ ế ặ ỉ ể ớ ệ ơ ả MovieClip trong Adobe Flash, Prefabs ch đ n gi n là m t Container (m t đ iỉ ơ ả ộ ộ ố
tượng ch a) r ng mà chúng ta có th đ a b t kì m t đ i tứ ỗ ể ư ấ ộ ố ượng hay d li uữ ệ
m u nào mà chúng ta mu n tái s d ng v sau.ẫ ố ử ụ ề
Hình 2.1.8 M t s đ i t ộ ố ố ượ ng trong Prefabs
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:ộ ể ố ể
Trang 28C 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ộ ậ ể ậ ỉ ử ự ế ế ớ
Trang 29Khi 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ế ứ
t ch cái t AZ.ự ữ ừ
Hình 2.1.10. Các nút ch c năng cho c a s Scene ứ ử ổ
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.ằ ả ộ
Công c di chuy n (W): Công c này cho phép chúng ta ch n m t đ i tụ ể ụ ọ ộ ố ượng trong
c nh và th c hi n thao tác di chuy n, thay đ i v trí c a đ i tả ự ệ ể ổ ị ủ ố ượng đó. Khi ch n, t iọ ạ
v trí c a đ i tị ủ ố ượng s hi n th các tr c và m t ph ng g n li n v i đ i tẽ ể ị ụ ặ ẳ ắ ề ớ ố ượng cho phép chúng ta di chuy n đ i tể ố ượng trượt theo các tr c, m t ph ng ho c di chuy nụ ặ ẳ ặ ể
m t cách tùy ý.ộ
Công c xoay (E): Công c này có đ c đi m và cách s d ng gi ng v i công c diụ ụ ặ ể ử ụ ố ớ ụ chuy n, tuy nhiên thay vì đ di chuy n v trí c a đ i tể ể ể ị ủ ố ượng thì công c này giúpụ chúng ta xoay đ i tố ượng xoay quanh tr c hay tâm c a đ i tụ ủ ố ượng
Công c đi u ch nh t l (R): Cũng tụ ề ỉ ỉ ệ ương t nh công c di chuy n và xoay, côngự ư ụ ể
c này cho phép chúng ta tùy ch nh kích thụ ỉ ước, t l c a đ i tỉ ệ ủ ố ượng m t cách tùy ý.ộ
Trang 30C 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.ọ ừ
Trang 31Hì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 ử ổ
Trang 32Hì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 i t m 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ứ ụ ư ớ ỗ ỉ ệ
Trang 33hì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ấ ế
ch đ Testing.ế ộ
Hình 2.1.14 Các lo i hình nh trong c a s game ạ ả ử ổ
CH ƯƠ NG 3: M T S V N Đ VÀ GI I PHÁP KHI XÂY Ộ Ố Ấ Ề Ả
D NG GAME ENGINE TRÊN UNITY Ự
Trang 34I 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.ễ ổ ể ộ
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ứ ở