1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án tốt nghiệp đề tài: Phát triển Game 2D trên Unity

69 624 3

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 69
Dung lượng 2,44 MB

Nội dung

Đồ á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 2

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ệ ẽ ề ệ ậ ớ ệ ề ữ ậ  

Trang 3

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  

Trang 6

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ể ặ ữ ộ ươ  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 7

 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.ớ

Trang 8

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ạ ả ạ ư ế ấ ờ ệ ạ  

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 9

Nă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,   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, 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 10

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.ụ ộ ỗ ả ộ

Trang 11

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

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 12

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àậ ữ ấ ệ ữ ữ ặ ệ  

Trang 13

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ỉ ệ ố ể ả ả ể ả ệ ườ  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 Roll­your­own Game Engine

Roll­your­own Engine có th  để ược xem nh  nh ng Engine   m cư ữ ở ứ  

Trang 15

th p nh t. Ngày nay r t nhi u công ty t  t o ra Engine cho riêng h  v iấ ấ ấ ề ự ạ ọ ớ  

nh ng th  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 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ệ ậ ư ữ ư ệ ư 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 Mostly­ready Game Engine

Mostly­ready Game Engine, nh ng Engine n m   t ng trung. Các nhàữ ằ ở ầ  thi t k  Game nghi p d  r t thích nh ng Engine d ng này. Chúng đế ế ệ ư ấ ữ ạ ượ  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 (open­source), r  ti nầ ừ ẻ ề  

nh  Torge ho c đ c ti n nh  Unreal, id Tech và Gamebryo. V  m c đ ,ư ặ ắ ề ư ề ứ ộ  

nh ng Engine k  trên đ u c n l p trình thêm đ  g n k t m i th  v iữ ể ề ầ ậ ể ắ ế ọ ứ ớ  nhau nh m t o nên m t Game hoàn ch nh. H u nh  m i Mostly­readyằ ạ ộ ỉ ầ ư ọ  Game Engine đ u có ph n h n ch  m t ít so v i roll­your­own Engine. 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 Point­and­click Game Engine

Point­and­click Engine được x p   t ng cao nh t. Nh ng Engine nàyế ở ầ ấ ữ  ngày càng tr  nên ph  bi n. Nó có t t c  m i tool v i đ y đ  ch c năngở ổ ế ấ ả ọ ớ ầ ủ ứ  cho phép chúng ta ch  vi c ch n, click và ch n đ  t o ra Game. Nh ngỉ ệ ọ ọ ể ạ ữ  Engine nh  v y, k  c  GameMaker, Torque Game Builder, và Unity3Dư ậ ể ả  

được thi t k  đ  càng thân thi n v i ngế ế ể ệ ớ ười dùng càng t t. 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 point­and­click này đ n tể ấ ớ ủ ữ ế ừ 

vi c nh ng nhà phát tri n b  h n ch  r t nhi u, vì 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 16

m 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 17

Hình 1.1.2 T ng quan ki n trúc Unity ổ ếBên trong UnityAPI ch a r t nhi u l p h  tr  l p trình game, trong đó cóứ ấ ề ớ ỗ ợ ậ  

m t s  l p quan tr ng nh  :ộ ố ớ ọ ư

MonoBehaviour: t t c  các script mu n g n vào m t đ i t ng game b t bu cấ ả ố ắ ộ ố ượ ắ ộ  

ph i k  th a t  l p này.ả ế ừ ừ ớ

GameObject: l p cha c a t t c  các th c th  trong  scene.ớ ủ ấ ả ự ể

Component: l p cha c a t t c  các thành ph n 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 18

Light: giúp t o ánh sáng trong game.ạ

Projector: giúp chi u texture lên b  m t v t th ế ề ặ ậ ể

ParticleEmitter: h  tr  t o các hi u  ng particle đ p m t.ỗ ợ ạ ệ ứ ẹ ắ

Audio: h  tr  l p trình v i âm thanh.ỗ ợ ậ ớ

Animation: ch y chuy n đ ng c a mô hình nhân v t.ạ ể ộ ủ ậ

Rigidbody: giúp t o hi u  ng v t lý liên quan đ n tr ng l c nh  bóng n y, lăn,  ạ ệ ứ ậ ế ọ ự ư ẩCharacterController: giúp đi u khi n nhân v t di chuy n theo đ  cao đ a   hình.ề ể ậ ể ộ ịCollider: h  tr  l p trình va ch m gi a các v t th ỗ ợ ậ ạ ữ ậ ể

GUI: giúp l p trình giao di n ng i dùng trên Unity.ậ ệ ườ

CH ƯƠ NG 2:  UNITY ENGINE

I GI I THI U CHUNG Ớ Ệ

Trang 19

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ư ệ ậ ụ ứ ủ ữ ư 

Trang 20

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ệ ổ ế ự ồ ọ ằ ả ệ ấ ượ  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 21

H  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 22

lý đượ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 23

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ữ ộ  

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 24

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

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ơ ẽ ử ụ  (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 27

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

tượng

Hình 2.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 28

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ộ ậ ể ậ ỉ ử ự ế ế ớ  

Trang 29

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ế ứ 

t  ch  cái t  A­Z.ự ữ ừ

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 30

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.ọ ừ

Trang 31

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 ử ổ

Trang 32

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 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 (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ứ ụ ư ớ ỗ ỉ ệ  

Trang 33

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ấ ế  

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 34

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.ễ ổ ể ộ

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ứ ở  

Ngày đăng: 15/01/2020, 04:06

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Ryan    Henson    Creighton,   Unity    3D    Game    Development    by   Example,   Packt Publishing,  2010 Sách, tạp chí
Tiêu đề: Unity    3D    Game    Development    by  Example
[2] Will  Goldstone,  Unity  Game  Development  Essential,  Packt  Publishing, 2009. [3] Efraim  Meulenberg,  Game  Development  with  Unity, VTC, 2010 Sách, tạp chí
Tiêu đề: Unity  Game  Development  Essential",  Packt Publishing, 2009. [3] Efraim  Meulenberg,  "Game  Development  with Unity
[4] Efraim Meulenberg, Game Development for iPhone/iPad Using Unity iPhone, VTC, 2010 Sách, tạp chí
Tiêu đề: Game Development for iPhone/iPad Using Unity iPhone
[5] TornadoTwins ,  Wormgame Cartoony Serieshttp://www.unityprefabs.com/wormgame­cartoony­series­tutorial.html Sách, tạp chí
Tiêu đề: Wormgame Cartoony Series
[6] Zak Parrish, Unity Fundamentalshttp://www.3dbuzz.com/vbforum/content.php?176 Sách, tạp chí
Tiêu đề: Unity Fundamentals
[7] Chad and Eric, Unity Traininghttp://walkerboystudio.com/html/unity_training               free    .htm Sách, tạp chí
Tiêu đề: Unity Training

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

TÀI LIỆU LIÊN QUAN

w