Tải bản đầy đủ (.pdf) (64 trang)

ỨNG DỤNG CÔNG NGHỆ ĐA NỀN TẢNG UNITY 3D ENGINE GAME – XÂY DỰNG GAME RAMBO CHIBI

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.44 MB, 64 trang )

LỜI CẢM ƠN
Em xin chân thành cảm ơn bộ môn Công nghệ thông tin, khoa Công nghệ
thông tin, Trường Đại học Công nghệ thông tin và truyền thông Thái nguyên đã tạo
điều kiện thuận lợi cho em thực hiện báo cáo này.
Em xin chân thành cảm ơn thầy Nguyễn Hải Minh là những người đã tận tình
hướng dẫn, chỉ bảo cho em trong suốt thời gian thực hiện báo cáo tốt nghiệp.
Em cũng xin gửi lời cảm ơn sâu sắc đến quý thầy cô trong Khoa và Bộ môn
đã tận tình giảng dạy, trang bị cho em những kiến thức quý báu trong những năm
học vừa qua.
Mặc dù em đã cố gắng hoàn thành báo cáo 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.
Sinh viên thực hiện

Cao Tiến Cường

1


LỜI CAM ĐOAN
Em xin cam đoan rằng đây là đồ án của em, có sự hỗ trợ từ giáo viên hướng
dẫn T.s.Nguyễn Hải Minh – bộ môn lập trình ứng dụng, trường Đại Học Công nghệ
thông tin và truyền thông Thái Nguyên, Đại Học Thái Nguyên. Em xin cam đoan
các nội dung nghiên cứu và kết quả trong đề tài này là trung thực và không sao chép
từ các báo cáo thực tập và đồ án khác trước đây. Những số liệu trong các bảng biểu
phục vụ cho việc phân tích, nhận xét, đánh giá được chính bản thân thu thập từ các
nguồn khác nhau.
Nếu có bất kỳ sự gian lận nào em xin hoàn toàn chịu trách nhiệm trước Hội
đồng.
Thái Nguyên, tháng 05 năm 2017
Sinh viên



Cao Tiến Cường

2


MỤC LỤC

3


LỜI NÓI ĐẦU
Ở Việt Nam hiện nay, việc lập trình game cho các thiết bị di động thông minh
(viết tắt là game mobile) không còn quá xa lạ với nhiều lập trình viên, đặc biệt sau
sự thành công của lập trình viên Nguyễn Hà Đông với ứng dụng “Flapy Bird” làm
hàng triệu người trên thế giới vừa chơi vừa ức chế. Với thị trường Việt Nam khá
rộng lớn với hơn 90 triệu và đa phần là dân số trẻ nên thị trường của game mobile
cực kỳ rộng lớn, với thị trường rộng lớn như thế thì doanh thu mang lại cũng cực kỳ
lớn, năm 2014 đã hơn 500 tỷ và sẽ tăng dần theo thời gian [1], với số vốn đầu tư ban
đầu không cần nhiều, một chút kiến thức về đồ họa và một ít kinh nghiệm về lập
trình là bạn có thể tự mình tạo ra những sản phầm cho riêng mình mang những dấu
ấn riêng.
Ở Việt Nam hiện tại có số lượng không hề nhỏ các startup làm game, có thể
kể đến như : Joy Entertainment, Divmob, ColorBox, ME Corp, MC Corp, Goya
Studio, Senspark, Bưởi Studio v.v..., ngoài ra còn có những Indie Developer - những
lập trình viên độc lập. Với suy nghĩ có kiến thức thì nên vận dụng nó một cách triệt
để cộng thêm việc yêu thích những tựa game nổi tiếng trên thế giới, em đã bắt đầu đi
tìm hiểu và nghiên cứu những cách lập trình game một cách thực sự nghiêm túc và
đã có một số kinh nghiệm nhất định. Khi nhận đồ án, em nhận thấy việc phát triển
game mobile với các công cụ hỗ trợ - các game engine - ở trường ĐH CNTT & TT

Thái Nguyên còn chưa được phát triển và phổ biến cho nên em nhận đề tài: “ỨNG
DỤNG CÔNG NGHỆ ĐA NỀN TẢNG UNITY 3D ENGINE GAME – XÂY
DỰNG GAME RAMBO CHIBI”. Bố cục bài báo cáo gồm 4 chương:
Chương 1: Cơ sở lý thuyết
Chương 2: Khảo sát một số game mobile đang có trên thị trường
Chương 3: Phân tích thiết kế
Chương 4: Xây dựng game Rambo Chibi

4


CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Khái Niệm Trò Chơi
1.1.1 Khái niệm
- Trò chơi là một hoạt động tự nhiên và cần thiết nhằm thỏa mãn những nhu cầu
giải trí đa dạng của con người.
- Trò chơi là một phương pháp giáo dục thực hành hiệu nghiệm nhất đối với việc
hình thành nhân cách, trí lực của trẻ em.
- Trò chơi là một hình thức dưỡng sinh của người lớn tuổi, giúp họ hăng hái, thư
giãn, vui vẻ, trẻ tính...
1.1.2 Mục đích của trò chơi
- Với người lớn, trò chơi là giải trí, thư giãn, giúp cho đầu óc bớt căng thẳng sau
những giờ làm việc mệt nhọc. Với trẻ em, ngoài sự giải trí, trò chơi còn là một nhu
cầu cần thiết cho sự phát triển Trí, Đức, Thể và Nhân Cách con người. Đối với các
phong trào thanh thiếu niên, trò chơi là một lợi khí chính yếu trong những phương
pháp giáo dục, giúp trẻ em rèn luyện và phát triển toàn mỹ các giác quan chính, làm
cho trẻ khéo léo hơn, trí tưởng tượng phong phú hơn. Trò chơi còn giúp trẻ biết quan
sát và phản ứng nhanh, biết tôn trọng kỷ luật, biết tự chủ, từ đó nảy nở tình đồng
đội, đoàn kết thương yêu nhau....
1.1.3 Ích lợi của trò chơi

- Phản xạ nhanh hơn, tay và mắt phối hợp tốt hơn
- Luyện giác quan Cải thiện tư duy, rất tốt cho người đi làm hay lên kế hoạch, chiến
lược
- Luyện ý chí và ý thức: Hăng say đua tranh để giành chiến thắng. Tự chủ, không rụt
rè, sợ hãi, không bị lôi cuốn bởi nhiệt tình bồng bột. Chấp hành kỷ luật của trò chơi.
Kiên nhẫn trong khi chơi. Biết sáng tạo, linh động.
- Luyện tính tình: Các em trở nên vui vẻ, sôi động. Rèn luyện tính đồng đội, biết
đoàn kết gắn bó với nhau để giành chiến thắng, phát triển năng khiếu tốt, sự can
đảm, gan dạ, lòng vị tha...
1.2 Game Engine Unity3D
Game Engine là một phần mềm được viết cho mục đích thiết kế và phát triển
video game. 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
5


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. Các Engine dùng cho làm game hiện tại có rất
nhiều, trong đó có thể kể đến CryEngine, Unreal Engine, Havok Engine, Unity
Engine…
1.2.1 Lý do chọn Unity Engine
Hiện nay, chúng ta có rất nhiều Engine như: Cry Engine, Unreal Engine,
Source Engine, ID Tech Engine, Unity Engine và những cái tên khác như
RenderWare Engine, Game Bryo Engine và các Engnie mã nguồn mở: Orge Engine,
Panda3D Engnine, jMonkey Engine,... Trong đó Source Engine và ID Tech Engine
là các lão làng trong ngành công nghiệp Game, Cry Engine và Unreal Engine là hai
tân binh đáng chú ý nhất do những thành công đáng kể của họ trong những năm gần
đây.
Về mặt đồ họa, Cry Engine được đánh giá cao và hầu như không có đối thủ,

hình ảnh 3D của Cry Engine cho chất lượng chân thực minh chứng qua các tựa
game như Far Cry hay Crysis,...
Tuy nhiên, Cry Engine rất kén chọn vì chỉ những máy cấu hình thật cao mới
có thể đáp ứng được. Bên cạnh đó, Unreal Engine cũng cho chất lượng đồ họa
không kém, mà không đòi hỏi cấu hình quá cao. Các hệ máy laptop mua cách đây 45 năm trở lại đa số là dùng được. Các Engine khác được kể tên ở trên thay nhau vị
trí top 10 sau Cry Engnine và Unreal Engine.
Nếu có tiền, có nhiều kinh nghiệm và có một nhóm làm việc chuyên nghiệp,
lúc đó ta mới nên nghĩ tới Cry Engine hay Unreal Engnie... Còn nếu muốn sử dụng
mã nguồn mở cho tiết kiệm thì ta phải cần nhiều thời gian và sức lực hơn để tìm
hiểu Orge Engine hay Panda Engine,... Vì thế lựa chọn sáng giá nhất cho các tân
binh trong lĩnh vực làm game, có ít kinh nghiệm, ít tiền, nhưng không muốn phải bỏ
quá nhiều công sức tìm hiểu lại những gì người khác đã làm chính là Unity Engine.

6


Về mặt đồ họa, Unity không so sánh được với Cry Engine nhưng đủ làm hài
lòng những người dùng phổ thông. Unity không đòi hỏi máy cấu hình cao, thêm nữa
Unity đặc biệt chú ý đến sự tiện dụng. Việc làm game, làm phim sử dụng Unity
Engine so với các Engine còn lại dễ dàng hơn rất nhiều vì đối tượng mà Unity
hướng đến chủ yếu là những người dùng không chuyên sâu. Chúng ta có thể kéo thả,
kế thừa, viết Script, tổ chức các thành phần, import – export các tài nguyên (model,
texture, mesh, ...) đóng gói các đối tượng hoàn chỉnh và chia sẻ nó một cách dễ dàng
với Unity.
Vấn đề thương mại, Unity cung cấp bản miễn phí cho các người dùng cá
nhân và các công ty có thu nhập dưới 100.000 USD. Chúng ta có thể tạo các ứng
dụng, các mô hình, các Game cho riêng mình hoặc bán nó trên Unity Store mà
không lo về vấn đề vi phạm bản quyền. Nếu muốn bán sản phẩm của mình trên
Unity Store thì chúng ta phải trả 30% hoa hồng. Nếu có nhu cầu cao hơn, sử dụng
bản Pro, chúng ta sẽ phải trả 1.500 USD, tương đương khoảng 32 triệu VNĐ với rất

nhiều tính năng cao cấp và tiện dụng.
Cuối cùng, Unity có một cộng đồng rộng lớn và cực kỳ thân thiện, với nhiều
tài nguyên miễn phí và tutorial hướng dẫn cho những người bắt đầu học và sử dụng
Unity. Những tài liệu chúng ta có thể tìm kiếm trên forum của Unity hoặc
Google.[5]
1.2.2 Engine Unity

Hình 1.5 Logo Unity3D

7


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.
+ Nhà phát triển: Unity Technologies.
+ Phiên bản mới nhất: 5.5f
+ Đượ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), Nintendo Wii, iPhone/iPad, Xbox 360, Android, Sony PlayStation 3 (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 đượ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. Ngoài thư viện Mono, Unity cũng tận dụng
chức năng của những thư viện phần mềm 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ì vậy chúng ta không cần phải lo
lắng về việc 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 lớn mạnh, luôn chia sẻ những Plugins, công cụ của họ dưới
phần mềm gói bổ sung.
 Sơ lược sự hình thành và phát triển của Unity
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

8


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. Có thể thấy tốc độ phát triển của Unity khá
nhanh. Phiên bản mới nhất là phiên bản 5.5
Giải thưởng:
Unity đã đoạt được nhiều giải lớn với những giải chính sau:
+ Năm 2006, Unity đạt "Best Use of Mac OS X Graphics" tại Apple's
WWDC. Đây là 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
Khách hàng:
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ê.
 Sơ nét về giao diện của Unity

Giao diện Unity, giống như nhiều môi trường làm việc khác, layout có thể tùy
chỉnh. Layout của Unity bao gồm nhiều tab khác nhau và có thể bật tắt. Chúng ta
hãy xem xét một cách bố trí giao diện Unity điển hình:

9


Hình 1.6 Giao diện Editor của Unity3d
Như hình trên chúng ta thấy có 5 khung khác nhau:
1. Scene – nơi xây dựng trò chơi.
2. Hierarchy – danh sách các đối tượng trong một cảnh game.
3. Inspector – màn hình cài đặt cho tài nguyên/đối tượng đang được chọn.
4. Game – cửa sổ xem trước game, chỉ hoạt động ở chế độ chơi (khi nhấn
Play).
5. Project– danh sách các tài nguyên trong project, đóng vai trò như một thư
viện.
Cửa sổ Scene và Hierarchy:
Cửa sổ Scene là nơi chúng ta sẽ xây dựng toàn bộ các đối tượng trong game.
Cửa sổ cung cấp nhiều góc nhìn khác nhau, có thể nhìn dạng phối cảnh hoặc dạng
song song. Chúng ta có thể kéo thả đối tượng trên cửa sổ này, di chuyển, xoay…

Hình 1.7 Các nút điều khiển

10


Cửa sổ Scene cũng kèm theo năm nút điều khiển tiện lợi như hình trên. Truy
cập từ bàn phím bằng cách sử dụng các phím Q, W, E, R và T. Các phím thực
hiệncác hoạt động sau đây:
+ Công cụ bàn tay [Q]: công cụ này cho phép di chuyển trong cửa sổ Scene,

xoay góc nhìn, phóng to, thu nhỏ góc nhìn.
+ Công cụ di chuyển [W]: Công cụ này dùng để di chuyển một đối tượng.
+ Công cụ xoay [E]: Công cụ này cho phép chúng ta xoay nhân vật theo một
trục nào đó trong không gian.
+ Công cụ tỷ lệ [R]: Công cụ này cho phép chúng ta tăng giảm tỷ lệ kích
thước của đối tượng.Khi chọn một đối tượng trong cửa sổ Scene, đối tượng này sẽ
được tự động chọn trong cửa sổ Hierarchy và ngược lại

Hình 1.8 Chọn đối tượng trong Scene

Inspector:

11


Inspector sẽ hiển thị tất cả thông tin, các thành phần trong đối tượng game
đang chọn, và cho phép điều chỉnh các biến của các thành phần này. Có thể xem cửa
sổ này như cửa sổ Properties khi design giao diện Winform trên Visual Studio.

Hình 1.9 Cửa sổ Inspector hiển thị thông tin
Hình 1. 1 Cửa sổ Inspector hiển thị thông tin một đối tượng

Cửa sổ Game:
Cửa sổ này sẽ hiển thị những gì có trong cửa sổ Scene và sẽ hoạt động khi
nhấn nút Play. Trong cửa sổ này chúng ta có thể chọn các kích cỡ hiển thị khác nhau
để build cho các loại máy khác nhau. Chúng ta có thể chơi thử game trên cửa sổ này
khi đã nhấn nút Play. Lưu ý rằng khi cửa sổ này hoạt động rồi thì mọi chỉnh sửa trên
cửa sổ Scene và cài đặt cho các đối tượng chỉ là tạm thời và khi nhấn nút Stop, cửa
sổ này về lại trạng thái tĩnh thì mọi chỉnh sửa trước đó là không còn.
Cửa sổ Project:

Cửa sổ Project thể hiện nội dung bên trong thư mục Assets của project chúng
ta. Khi thêm tài nguyên vào thư mục Assets ngay lập tức chúng sẽ tự động được cập
nhập vào project Unity của chúng ta.
12


 Các đặc điểm và tính năng của Unity
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 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 3D nhằm cải thiện chất lượng hình ảnh.Một số hỗ trợ:
- Unity cung cấp 100 Shaders với đầy đủ các loại phổ biến nhất.
- Hỗ trợ Surface Shaders, Occlusion Culling, GLSL Optimizer.
- Hỗ trợ LOD.
2. Lighting (Ánh sáng)
Unity 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.
3. Terrains (địa hình)
Unity cung cấp một công cụ 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 và lát Texture cho địa hình. Cùng với Terrains 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.
4. Substances (Texture thông minh)
Substances cho phép các trò chơi và các ứng dụng sáng tạo sử dụng tất cả các
sức mạnh của nó để cung cấp những trải nghiệm độc đáo cho người dùng cuối:
- Được tạo ra ngay trong khi game được tạo

- Cung cấp nội dung tải về nhỏ
13


- Sử dụng sức mạnh của các textures động tạo ra các hiệu ứng độc đáo
Substances được xử lý giống như các bitmap khác trong Unity: chỉ cần kéo
và thả nó trong project là đã có thể sẵn sàng sử dụng ngay. Substances có kích thước
tự nhiên nhỏ hơn bitmap nên khi sử dụng Substances thay cho bitmap sẽ làm giảm
đáng kể kích thước của game cuối cùng.
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ẽ đượ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ề vật lý.
6. Pathfinding (Tìm đường)
Đây là tính năng mới mẻ 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.
7. Audio (Âm thanh)
Unity tích hợp FMOD – công cụ âm thanh thuộc hàng mạnh nhất hiện nay,
hỗ trợ chúng ta nhập và sử dụng nhiều định dạng tập tin âm thanh khác nhau.
8. Programming (Lập trình)
Unity được viết trên nền C++, tuy nhiên để sử dụng Unity, người dùng chỉ
cần biết 1 trong 3 ngôn ngữ là C#, JavaScript, hoặc Boo, với JavaScript là đơn giản
và dễ sử dụng nhất, tuy nhiên với 1 số hạn chế nên C# được đa số chuyên gia ưa
chuộng hơn, ngôn ngữ Boo được cho là tốt nhất, tuy nhiên do ngôn ngữ được rất ít
người sử dụng, nên gần như không bao giờ thấy tài liệu hoặc code liên quan đến
Unity được viết bằng ngôn ngữ Boo.
9. Networking

14



Networking cho phép chúng ta tạo ra các trò chơi trực tuyến (online), hỗ trợ
đầy đủ giúp 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 với thời gian thực, ...
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.
 Các khái niệm cơ bản trong Unity 3D
1. Asset
Đây là kho tài nguyên cho việc xây dựng game trong một project của Unity.
Các tài nguyên này có thể là hình ảnh, âm thanh, hoặc một mô hình 3D có sẵn.
Unity sẽ tham chiếu đến các tập tin chúng ta sẽ sử dụng để tạo ra các tài nguyên cho
trò chơi. Đây là lý do tại sao trong bất kỳ thư mục chứa project sử dụng Unity thì tất
cả các tập tin tài nguyên phải được lưu trữ trong một thư mục con tên là Assets.

Hình 1. 10 Asset trong Unity
2. Scene
Trong Unity, chúng ta có thể xem Scenes là các màn chơi, cấp độ chơi riêng
lẻ, hoặc các vùng của nội dung trò chơi. Ví dụ như Main menu, Options, About …
Bằng cách xây dựng trò chơi với nhiều cảnh, chúng ta sẽ có thể phân phối
thời gian tải và thử nghiệm các phần khác nhau của trò chơi riêng lẻ một cách nhanh
chóng và chính xác.
15


Hình 1.11 Các scene của Unity
3. Game Object
Khi một tài nguyên được sử dụng trong một scene, khi đó chúng ta có thể coi
tài nguyên này là một “Game Object” mới. Mỗi GameObject phải chứa ít nhất một

thành phần, đó là thành phần “Transform”. Transform chứa các phép để biến đổi góc
quay, tỷ lệ hay tịnh tiến của đối tượng.

Hình 1. 12 Kéo tài nguyên vào Scene để s 1

16


4. Component
Component là các thành phần trong một Game Object của Unity. Bằng cách
đính kèm các thành phần vào cho một đối tượng, chúng ta có thể áp dụng ngay các
phần mới của game engine vào đối tượng. Thông thường các thành phần này được
Unity xây dựng sẵn như ánh sáng, camera, particle, hiệu ứng vật lý…

Hình 1.13 Các thành phần trong đối tượng
5. Script
Script là thành phần quan trọng nhất trong Unity, có thể xem scripts như là
linh hồn của game. Chúng ta có thể viết kịch bản cho game bằng C#, Java scripts.
Theo nhiều người đã sử dụng Unity thì code bằng C# sẽ giúp game chạy nhanh hơn
và giúp kiểm soát code tốt hơn do tất cả các biến phải được khai báo rõ ràng. Mặt
khác ngôn ngữ C# rất tiện dụng để lập trình, nên em dùng ngôn ngữ C# để viết kịch
bản cho game. Mỗi file script C# là một class bắt buộc kế thừa từ lớp
MonoBehaviour, có tên class phải trùng với tên file script.

17


Hình 1.14 Cách tạo file script mới 1
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 1.15 Một file script đang gắn vào 1 đối tượng
6. Prefab
Hãy tưởng tượng Prefab là một cái thùng rỗng, mà bên trong nó chúng ta có
thể chứa đựng các thành phần hay đối tượng khác nhau, chúng ta có thể viết kịch
bản cho hành động của Prefab (khởi tạo, di chuyển, hay hủy đối tượng). Chúng ta có
thể sử dụng đối tượng này nhiều lần trong trò chơi, và cũng có thể sử dụng lại cho
project khác. Prefab cho phép chúng ta lưu trữ cá đối tượng, toàn bộ thành phần bên
trong và cấu hình hiện tại.

18


7. Material và Shader
Shader là đoạn script qui định cách thức render của chất liệu trên bề mặt vật
thể. Material sử dụng shader để làm chất liệu cho mô hình. Giữa materials và
shaders có mối liên hệ với nhau. Shaders qui định các thuộc tính cần để shader làm
việc. Còn material cho phép gán hình ảnh vào các thuộc tính đó từ Asset.

Hình 1. 16 Material và Shader
1.2.3 Tổng quan kiến trúc engine Unity
 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

19



phải trùng với tên file script. Mỗi script khi gắn lên đối tượng game đều được đối
tượng game xem như một thành phần bên trong và được cấp phát vùng nhớ khi chạy
game.

Hình 1. 17 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.

20



-

Camera: giúp lập trình camera.

-

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. Từ phiên bản 4.6 trở đi,
Unity hỗ trợ một bản uGUI cho giao diện đẹp hơn.

 Chu kỳ sống của thành phần script gắn trên đối tượng game
Chu kỳ sống của một thành phần script được tính kể từ khi scene được chạy
cho đến lúc scene bị tắt hoặc chuyển sang scene khác.

Hình 1. 18 Chu kỳ sống của thành phần script
21


Tùy theo trạng thái của scene mà sự kiện tương ứng sẽ được gọi.
-

Awake: được gọi khi script được load xong

-

Start: được gọi khi script được load xong nếu thành phần script đó

không bị disable.

-

Update: đây là sự kiện thường sử dụng nhất và được gọi liên tục
từng frame để vẽ lại màn hình.

-

LateUpdate: sự kiện này chạy sau sự kiện Update và được gọi liên
tục từng frame.

-

OnGUI: sự kiện này dùng để vẽ GUI và được gọi liên tục từng
frame, chỉ trong sự kiện này ta mới có thể sử dụng các lớp hỗ trợ
tạo giao diện người dùng của UnityAPI.

-

OnDestroy: được gọi khi thành phần script bị hủy khỏi bộ nhớ.[3]

1.3 Sơ lược về ngôn ngữ lập trình C#

Hình 1. 19 Hình ảnh biểu tượng của C#
C# là một ngôn ngữ lập trình hướng đối tượng được phát triển bởi Microsoft,
là phần khởi đầu cho kế hoạch .NET của họ. Tên của ngôn ngữ bao gồm ký tự thăng
theo Microsoft nhưng theo ECMA là C#, chỉ bao gồm dấu số thường. Microsoft
phát triển C# dựa trênC++ và Java. C# được miêu tả là ngôn ngữ có được sự cân
bằng giữa C++, Visual Basic, Delphi và Java. C# được thiết kế chủ yếu bởi Anders

Hejlsberg kiến trúc sư phần mềm nổi tiếng với các sản phẩm Turbo Pascal, Delphi,
J++, WFC. Tuy nhiên, ngôn ngữ C# có ý nghĩa cao khi nó thực thi những khái niệm

22


lập trình hiện đại. C# bao gồm tất cả những hỗ trợ cho cấu trúc, thành phần
component, lập trình hướng đối tượng.
1.4 Giới thiệu công cụ Visual studio

Hình 1.20 Hình ảnh Visual Studio
Microsoft Visual Studio là một môi trường phát triển tích hợp (IDE) từ
Microsoft. Nó được sử dụng để phát triển chương trình máy tính cho Microsoft
Windows, cũng như các trang web, các ứng dụng web và các dịch vụ web. Visual
Studio sử dụng nền tảng phát triển phần mềm của Microsoft như Windows API,
Windows Forms, Windows Presentation Foundation, Windows Store và Microsoft
Silverlight.
Visual Studio hỗ trợ nhiều ngôn ngữ lập trình khác nhau và cho phép trình
biên tập mã và gỡ lỗi để hỗ trợ (mức độ khác nhau) hầu như mọi ngôn ngữ lập trình.
Các ngôn ngữ tích hợp gồm có C, C++ và C++/CLI (thông qua Visual C++),
VB.NET (thông qua Visual Basic.NET), C (thông qua Visual C#) và F thăng (như
của Visual Studio 2010). Hỗ trợ cho các ngôn ngữ khác như J++/J thăng, Python và
Ruby thông qua dịch vụ cài đặt riêng rẽ. Nó cũng hỗ trợ XML/XSLT,
HTML/XHTML, JavaScript và CSS
1.5 Tổng Quan về phân tích thiết kế hướng đối tượng sử dụng UML
Ngôn ngữ mô hình hóa thống nhất (Unifield Modeling Language – UML) là
một ngôn ngữ để biểu diễn mô hình theo hướng đối tượng được xây dựng bởi ba tác
giả trên với chủ đích là:

23



- Mô hình hoá các hệ thống sử dụng các khái niệm hướng đối tượng.
- Thiết lập một kết nối từ nhận thức của con người đến các sự kiện cần mô hình hoá.
- Giải quyết vấn đề về mức độ thừa kế trong các hệ thống phức tạp, có nhiều ràng
buộc khác nhau.
- Tạo một ngôn ngữ mô hình hoá có thể sử dụng được bởi người và máy.
1.5.1 Các thành phần của UML
Ngôn ngữ UML bao gồm một loạt các phần tử đồ họa (graphic element) có thể
được kếp hợp với nhau để tạo ra các biểu đồ. Bởi đây là một ngôn ngữ, nên UML
cũng có các nguyên tắc để kết hợp các phần tử đó.
Một số những thành phần chủ yếu của ngôn ngữ UML:
Hướng nhìn (view):Hướng nhìn chỉra những khía cạnh khác nhau của hệ thống
cần phải được mô hình hóa. Một hướng nhìn không phải là một bản vẽ, mà là một sự
trừu tượng hóa bao gồm một loạt các biểu đồ khác nhau. Chỉ qua việc định nghĩa
của một loạt các hướng nhìn khác nhau, mỗi hướng nhìn chỉ ra một khía cạnh riêng
biệt của hệ thống, người ta mới có thể tạo dựng nên một bức tranh hoàn thiện về hệ
thống. Cũng chính các hướng nhìn này nối kết ngôn ngữ mô hình hóa với quy trình
được chọn cho giai đoạn phát triển.
Biểu đồ(diagram): Biểu đồ là các hình vẽ miêu tả nội dung trong một hướng
nhìn. UML có tất cả 9 loại biểu đồ khác nhau được sử dụng trong những sự kết hợp
khác nhau để cung cấp tất cả các hướng nhìn của một hệ thống.
Phần tử mô hình hóa (model element):Các khái niệm được sử dụng trong các
biểu đồ được gọi là các phần tử mô hình, thể hiện các khái niệm hướng đối tượng
quen thuộc. Ví dụ như lớp, đối tượng, thông điệp cũng như các quan hệ giữa các
khái niệm này, bao gồm cả liên kết, phụ thuộc, khái quát hóa. Một phần tử mô hình
thường được sử dụng trong nhiều biểu đồ khác nhau, nhưng nó luôn luôn có chỉ một
ý nghĩa và một kí hiệu.

24



Cơ chế chung: Cơ chế chung cung cấp thêm những lời nhận xét bổ sung, các
thông tin cũng như các quy tắc ngữ pháp chung về một phần tử mô hình; chúng còn
cung cấp thêm các cơ chế để có thể mở rộng ngôn ngữ UML cho phù hợp với một
phương pháp xác định (một quy trình, một tổ chức hoặc một người dùng).
1.5.2 Biểu đồ Use case
Một biểu đồ Use case chỉ ra một số lượng các tác nhân ngoại cảnh và mối liên
kết của chúng đối với use case mà hệ thống cung cấp .Một use case là một lời miêu
tả của một chức năng mà hệ thống cung cấp. Lời miêu tả use case thường là một văn
bản tài liệu, nhưng kèm theo đó cũng có thể là một biểu đồ hoạt động. Các use case
được miêu tả duy nhất theo hướng nhìn từ ngoài vào của các tác nhân (hành vi của
hệ thống theo như sự mong đợi của người sử dụng), không miêu tả chức năng được
cung cấp sẽ hoạt động nội bộ bên trong hệ thống ra sao.
1.5.3 Biểu đồ lớp(class diagram)
Một biểu đồ lớp chỉ ra cấu trúc tĩnh của các lớp trong hệ thống. Các lớp là đại
diện cho các “vật” được xử lý trong hệ thống. Các lớp có thể quan hệ với nhau trong
nhiều dạng thức: liên kết (associated - được nối kết với nhau), phụ thuộc (dependent
- một lớp này phụ thuộc vào lớp khác), chuyên biệt hóa (specialized - một lớp này là
một kết quả chuyên biệt hóa của lớp khác), hay đóng gói ( packaged - hợp với nhau
thành một đơn vị). Tất cả các mối quan hệ đó đều được thể hiện trong biểu đồ lớp, đi
kèm với cấu trúc bên trong của các lớp theo khái niệm thuộc tính (attribute) và thủ
tục (operation).
Biểu đồ được coi là biểu đồ tĩnh theo phương diện cấu trúc được miêu tả ở đây có
hiệu lực tại bất kỳ thời điểm nào trong toàn bộ vòng đời hệ thống. Một hệ thống
thường sẽ có một loạt các biểu đồ lớp – chẳng phải bao giờ tất cả các biểu đồ lớp
này cũng được nhập vào một biểu đồ lớp tổng thể duy nhất – và một lớp có thể tham
gia vào nhiều biểu đồ lớp

25



×