Xem mẫu
- TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG VIỆT - HÀN
KHOA KHOA HỌC MÁY TÍNH
NGUYỄN PHI HẬU
XÂY DỰNG GAME NÉM GẠCH
ĐỒ ÁN TỐT NGHIỆP
NGÀNH: CÔNG NGHỆ THÔNG TIN
(ỨNG DỤNG PHẦN MỀM)
NIÊN KHÓA: 2017 - 2020
Đà Nẵng, 01/2021
- TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG VIỆT - HÀN
KHOA KHOA HỌC MÁY TÍNH
NGUYỄN PHI HẬU
MÃ HSSV: CCCT17A003
XÂY DỰNG GAME NÉM GẠCH
ĐỒ ÁN TỐT NGHIỆP
NGÀNH: CÔNG NGHỆ THÔNG TIN
(ỨNG DỤNG PHẦN MỀM)
Giảng viên hƣớng dẫn: ThS. Nguyễn Thanh Cẩm
Đà Nẵng, 01/2021
- LỜI CẢM ƠN
Chúng em xin chân thành cảm ơn Khoa Khoa học máy tính, trƣờng ĐH CNTT và
Truyền thông Việt Hàn đã tạo điều kiện tốt cho em thực hiện đề tài này.
Em xin chân thành cảm ơn Thầy Nguyễn Thanh Cẩm, là ngƣời đã tận tình hƣớng
dẫn, chỉ bảo em trong suốt thời gian thực hiện đề tài.
Em xin 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 vừa qua.
Em xin gửi lòng biết ơn sâu sắc đến Ba, Mẹ, các anh chị và bạn bè đã an ủ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ù em đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép,
nhƣng chắc chắn không thể tránh những thiếu sót, kính mong sự thông cảm 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
Nguyễn Phi Hậu
i
- MỤC LỤC
LỜI CẢM ƠN ...................................................................................................................i
MỤC LỤC ...................................................................................................................... ii
DANH MỤC HÌNH ẢNH ...............................................................................................v
LỜI MỞ ĐẦU .................................................................................................................1
1. Lý do chọn đề tài ...................................................................................................1
2. Mục tiêu và nhiệm vụ nghiên cứu .........................................................................1
3. Đối tƣợng và phạm vi nghiên cứu .........................................................................2
4. Phƣơng pháp nghiên cứu .......................................................................................2
5. Dự kiến kết quả .....................................................................................................2
6. Ý nghĩa khoa học và thực tiễn ...............................................................................2
7. Nội dung đồ án tốt nghiệp .....................................................................................2
CHƢƠNG 1: CƠ SỞ LÝ THUYẾT ................................................................................3
1.1. TỔNG QUAN VỀ UNITY ................................................................................3
1.1.1. Unity là gì? ..................................................................................................3
1.1.2. Tính năng của Unity ....................................................................................3
1.1.3. Sơ lƣợc lịch sử hình thành và phát triển của Unity .....................................5
1.2. TỔNG QUAN VỀ GAME ENGINE .................................................................6
1.2.1. Khái niệm ....................................................................................................6
1.2.2. Mục đích ......................................................................................................6
1.2.3. Ảo hóa phần cứng (trừu tƣợng hóa phần cứng – Hardware Abstraction)...7
1.2.4. Lịch sử .........................................................................................................7
1.2.5. Xu hƣớng hiện tại ........................................................................................7
1.2.6. Phần mềm trung gian ..................................................................................8
1.3. TỔNG QUAN KIẾN TRÚC GAME ENGINE .................................................8
1.4. TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C# .............................................11
1.4.1 Tổng quan về C# ............................................................................................11
1.4.2 Các đặc điểm của C# .....................................................................................11
1.4.3 Ƣu điểm và nhƣợc điểm của C# ....................................................................12
1.5. TÌM HIỂU VỀ CÔNG CỤ HỖ TRỢ VISUAL STUDIO ..................................12
1.5.1 Giới thiệu .......................................................................................................12
1.5.2 Lý do nên dùng Visual Studio .......................................................................12
ii
- CHƢƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG ...................................................14
2.1. CÁC ĐẶC ĐIỂM VÀ TÍNH NĂNG ...............................................................14
2.1.1. Rendering (kết xuất hình ảnh) ...................................................................14
2.1.2. Lighting (ánh sáng) ...................................................................................14
2.1.3. Terrains (địa hình) .....................................................................................14
2.1.4. Substances (Texture thông minh)..............................................................14
2.1.5. Physics (vật lý) ..........................................................................................14
2.1.6. Pathfinding (tìm đƣờng) ............................................................................15
2.1.7. Audio (âm thanh) ......................................................................................15
2.1.8. Programming (lập trình) ............................................................................15
2.1.9. Networking ................................................................................................15
2.2. CÁC THÀNH PHẦN XÂY DỰNG GAME ...................................................15
2.2.1. GameObject ...............................................................................................15
2.2.2. Component ................................................................................................16
2.2.3. Sprite .........................................................................................................17
2.2.4. Animation ..................................................................................................18
2.2.5. Key Frame .................................................................................................19
2.2.6. Prefabs .......................................................................................................19
2.2.7. Sound .........................................................................................................19
2.2.8. Script .........................................................................................................20
2.2.9. Scene .........................................................................................................21
2.2.10. Assets ........................................................................................................21
2.2.11. Camera ......................................................................................................22
2.2.12. Transform ..................................................................................................23
2.3. MỘT SỐ VẤN ĐỀ VÀ GIẢI PHÁP KHI XÂY DỰNG GAME....................23
2.3.1. Load hoạt họa ............................................................................................23
2.3.2. Thêm sự kiện vào chuyển động của nhân vật ...........................................24
2.3.3. Xây dựng giao diện Game .........................................................................24
2.3.4. Âm thanh trong game ................................................................................26
CHƢƠNG 3: CHƢƠNG TRÌNH DEMO .....................................................................30
3.1. GIỚI THIỆU GAME ..........................................................................................30
3.2. CÁC QUY LUẬT CHƠI CHÍNH .......................................................................30
iii
- 3.2.1. Di chuyển ......................................................................................................30
3.2.2. Điểm..............................................................................................................31
3.2.3. Tạm dừng game .........................................................................................31
3.3. DỮ LIỆU GAME NÉM GẠCH ......................................................................32
3.3.1. Màn hình bắt đầu lập trình ........................................................................32
3.3.2. Các Script có trong Game .........................................................................33
KẾT LUẬN ...................................................................................................................34
TÀI LIỆU THAM KHẢO ..............................................................................................vi
iv
- DANH MỤC HÌNH ẢNH
Hình 1.1. Hình minh họa đa nền......................................................................................3
Hình 1.2. Tổng quan kiến trúc Unity .............................................................................10
Hình 2.1. Các GameObject ............................................................................................16
Hình 2.2. Các thành phần trong đối tƣợng ....................................................................17
Hình 2.3. Sprites ............................................................................................................18
Hình 2.5. Các prefabs ....................................................................................................19
Hình 2.7. Lập trình Unity bằng C# trên Visual Studio..................................................20
Hình 2.8. Các script cấu tạo game hoàn chỉnh ..............................................................21
Hình 2.9. Các Scene ......................................................................................................21
Hình 2.10. Các thành phần trong file Assets .................................................................22
Hình 2.12. Transform ....................................................................................................23
Hình 2.13. Các prefab ....................................................................................................24
Hình 2.14. Hàm destroy.................................................................................................24
Hình 2.15. GUI Button ..................................................................................................25
Hình 2.16. Áp dụng GUIStyle lên Label .......................................................................25
Hình 2.17. Vẽ hình ảnh trên GUI ..................................................................................26
Hình 2.18. Thêm thành phần Audio Source ..................................................................27
Hình 2.19. Thêm file âm thanh cho thành phần AudioSource ......................................27
Hình 2.20. Thông tin âm thanh ......................................................................................28
Hình 3.1. Màn hình để bắt đầu chơi ..............................................................................30
Hình 3.2. Màn hình để chơi game .................................................................................31
Hình 3.3. Màn hình GameOver .....................................................................................31
Hình 3.4. Pause Game ...................................................................................................32
Hình 3.5. Tổng thể các scene để lập trình .....................................................................32
v
- Xây dựng Game ném gạch
LỜI MỞ ĐẦU
1. Lý do chọn đề tài
Trong thời đại công nghệ thông tin nhƣ hiện nay, sản phẩm công nghệ ngày càng
chịu sự đánh giá khắt khe hơn từ phía những ngƣời dùng, đặc biệt là về sản phẩm
Game đƣợc nhận rất nhiều sự đánh giá từ phía các Game thủ, hay chỉ là những ngƣời
chơi bình thƣờng. Ngành công nghiệp Game hiện nay có thể nói là bùng nổ, với tốc độ
phát triển chóng mặt, rất nhiều những Game hay và hấp dẫn đƣợc ra đời trong thời
quan 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à 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 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) Ném gạch 2D. Chuẩn bị
kiến thức và kỹ năng cho định hƣớng nghề nghiệp (phát triển Game) sau này của
chúng em, góp phần vào sự phát triển của ngành công nghiệp Game nƣớc nhà. Các
chƣơng đầu trong tài liệu sẽ trình bày lần lƣợt các khái niệm chung về Game Engine
và thế giới 2D.
Các chƣơng tiếp theo sẽ giới thiệu về Engine Unity bao gồm các đặc điểm, tính
năng, công cụ và thành phần trong Engine này. Sau những nội dung về thiết kế, tài liệu
sẽ trình bày về việc lập trình trên Unity khi giới thiệu về ngôn ngữ lập trình cùng các
lớp, hàm trong thƣ việc dựng sẵn của Unity thông qua các ví dụ thực tế khi phát triển
một game Ném gạch. Cuối cùng là giới thiệu về bối cảnh, cốt truyện, tài liệu hƣớng
dẫn sử dụng của trò chơi Demo cùng chƣơng tổng kết về các khó khăn và những thành
quả trong suốt quá trình phát triển trò chơi Demo trên Unity.
2. Mục tiêu và nhiệm vụ nghiên cứu
Mục tiêu nghiên cứu
- Xây dựng đƣợc game hoàn chỉnh.
- Tạo hiệu ứng và âm thanh
Nhiệm vụ nghiên cứu
- Tìm hiểu xây dựng kịch bản game trên Unity.
Nguyễn Phi Hậu – Lớp CCCT17A 1
- Xây dựng Game ném gạch
3. Đối tƣợng và phạm vi nghiên cứu
Đối tƣợng nghiên cứu
- Lập trình game trên Unity
Phạm vi nghiên cứu
- Xây dựng game hoàn thành ở mức độ cơ bản
4. Phƣơng pháp nghiên cứu
- Nghiên cứu lý thuyết.
- Tham khảo internet.
- Xây dựng game theo mục tiêu đề ra.
5. Dự kiến kết quả
- Hoàn thành game Ném gạch.
6. Ý nghĩa khoa học và thực tiễn
Ý nghĩa khoa học
- Tìm hiểu về thị trƣờng game
- Nghiên cứu cách làm game 2D
Ý nghĩa thực tiễn
- Học hỏi và tích lũy kinh nghiệm về làm game
- Biết đƣợc cách tạo ra game
7. Nội dung đồ án tốt nghiệp
Ngoài phần mở đầu, kết luận và tài liệu tham khảo, nội dung của đồ án tốt nghiệp
gồm các chƣơng sau:
Chƣơng 1. Cơ sở lý thuyết.
Chƣơng 2. Phân tích thiết kế hệ thống.
Chƣơng 3. Chƣơng trình Demo.
Nguyễn Phi Hậu – Lớp CCCT17A 2
- Xây dựng Game ném gạch
CHƢƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. TỔNG QUAN VỀ UNITY
1.1.1. Unity là gì?
Unity là một cross- flatform game engine tạm hiểu là công cụ phát triển game
đa nền tảng đƣợc phát triển bởi Unity Technologies. Game engine này đƣợc sử dụng
để phát trển game trên PC, consoles, thiết bị di động và trên websites.
Unity đƣợc dùng để làm video game, hoặc những nội dung có tính tƣơng tác nhƣ
thể hiện kiến trúc, hoạt hình 2D, 3D thời gian thực. Unity hao hao với Director,
Blender game engine, Virtools hay Torque Game Builder trong khía cạnh dùng môi
trƣờng đồ họa tích hợp ở quá trình phát triển game là chính.
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.
Hình 1.1. Hình minh họa đa nền
1.1.2. Tính năng của Unity
Chức năng cốt l i đa dạng bao gồm: cung cấp công cụ dựng hình (kết xuất đồ
họa) cho các hình ảnh 2D hoặc 3D, công cụ vật lý (tính toán và phát hiện va chạm),
âm thanh, mã nguồn, hình ảnh động, 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. Nhờ có các engine mà công việc
làm game trở nên ít tốn kém và đơn giản hơn.
Nguyễn Phi Hậu – Lớp CCCT17A 3
- Xây dựng Game ném gạch
- 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 trong ngay
lúc xây dựng (live game preview).
- Chƣơng trình độc lập trên Windows mà Mac OS.
- Trên web, thông qua Unity Web Player plugin cho Internet Explorer, FireFox,
Safari, Opera, Chrome, cha 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)
- Hỗ trợ đa nền tảng: Một trong các thế mạnh của Unity chính là khả năng hỗ trợ
gần nhƣ toàn bộ các nền tảng hiện có bao gồm: PlayStation 3, Xbox 360, Wii U, iOS,
Android, Windows, Blackberry 10, OS X, Linux, trình duyệt Web và cả Flash. Nói
cách khác, chỉ với một gói engine, các studio có thể làm game cho bất kỳ hệ điều hành
nào và dễ dàng convert chúng sang những hệ điều hành khác nhau. Đồng thời, đây
cũng là giải pháp cho các game online đa nền tảng – có thể chơi đồng thời trên nhiều
hệ điều hành, phần cứng khác nhau nhƣ Web, PC, Mobile, Tablet….
- Dễ sử dụng: Unity đƣợc built trong một môi trƣờng phát triển tích hợp, cung
cấp một hệ thống toàn diện cho các lập trình viên, từ soạn thảo mã nguồn, xây dựng
công cụ tự động hóa đến trình sửa lỗi. Do đƣợc hƣớng đến đồng thời cả lập trình viên
không chuyên và studio chuyên nghiệp, nên Unity khá dễ sử dụng. Hơn nữa, đây là
một trong những engine phổ biến nhất trên thế giới, ngƣời dùng có thể dễ dàng tìm
kiếm kinh nghiệm sử dụng của tiền bối trên các forum công nghệ.
- Tính kinh tế cao: Unity Technologies hiện cung cấp bản miễn phí engine Unity
cho ngƣời dùng cá nhân và các doanh nghiệp có doanh thu dƣới 100.000 USD/năm.
Với bản Pro, ngƣời dùng phải trả 1.500 USD/năm – một con số rất khiêm tốn so với
những gì engine này mang lại.
- 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
Nguyễn Phi Hậu – Lớp CCCT17A 4
- Xây dựng Game ném gạch
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ở nê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 nhƣ chƣa xong trong đó công việc import chỉ
diễn ra một lần. Không nhƣ việc phải dùng các công cụ khác để thực hiện viết game
chúng ta sẽ phải xuất chúng ra một dạng nào đó và mỗi lần sửa lại phần mô hình
chúng ta lại phải import lại, và nhƣ thế là quá mất thời gian trong việc tạo và chỉnh sửa
các mô hình theo ý muốn. Ngoài ra Unity còn cho chúng ta trực tiếp tạo các mô hình
nếu muốn. Việc đặt các thuộc tính vật lý trong Unity cũng cực kỳ dễ dàng và hỗ trợ
sẵn nhiều chức năng.
1.1.3. Sơ lƣợc lịch sử hình thành và phát triển của Unity
a) Hình thành
Phần lõi của Unity ban đầu đƣợc viết vớ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 phiên bản 1.0. Đến năm 2007, Unity
đƣợc nâng lên phiên bản 2.0. Unity chính thức hỗ trợ Android và cho ra đời phiên bản
3.0 có hỗ trợ Android vào tháng 9/2010 và bây giờ là phiên bản Unity 5. Có thể thấy
tốc độ phát triển của Unity khá nhanh.
b) Giải thƣởng
Unity đã đoạt đƣợc nhiều giải lớn với những giải chính 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 dụng cụ phát triển game đạt đƣợc giải 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 đạ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à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ê
Nguyễn Phi Hậu – Lớp CCCT17A 5
- Xây dựng Game ném gạch
1.2. TỔNG QUAN VỀ GAME ENGINE
1.2.1. Khái niệm
Một game engine là một phần mềm đƣợc viết để thiết kế và phát triển video
game, hiểu đơn giản nó là loại phần mềm trung gian kết nối tƣơng tác của nhiều ứng
dụng trong cùng 1 hệ thống với nhau. 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.
1.2.2. Mục đích
Game Engine cung cấp một bộ các công cụ phát triển trực quan và có thể tái sử
dụng từng thành phần trong đó. Nói chung các bộ công cụ này cung cấp một môi
trƣờng phát triển tích hợp đƣợc đơn giản hóa. Phát triển ứng dụng nhanh (Rapid
Application Development) cho Game theo cách lập trình hƣớng dữ liệu. Những Game
Engine này đôi khi còn đƣợc gọi là các phần mềm trung gian cho Game (Game
Middleware), nhƣ ý nghĩa của thuật ngữ, chúng cung cấp một nền tảng phần mềm linh
hoạt và dễ dàng sử dụng lại với mọi chức năng cốt lõi cần thiết ngay trong nó để có thể
phát triển một ứng dụng Game đồng thời giảm giá thành, độ phức tạp, và kịp thời hạn
phát hành tất cả các yếu tố quan trọng trong ngành công nghiệp Game đầy cạnh tranh.
Giống nhƣ các phần mềm trung gian khác, Game Engine thƣờng cung 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 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 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
Nguyễn Phi Hậu – Lớp CCCT17A 6
- Xây dựng Game ném gạch
phạm vi rộng mà Game yêu cầu. Loại Engine này thƣờng đƣợc gọi là: Graphics
Engine . Một vài ví dụ cho các Engine đồ họa là: RealmForge, Truevision3D, OGRE,
Crystal Space, Genesis3D, Vision Engine, Irrlich và JMonkey Engine.
1.2.3. Ảo hóa phần cứng (trừu tƣợng hóa phần cứng – Hardware Abstraction)
Thông thƣờng, Engine 3D hay hệ thống kết xuất đồ họa trong hame 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 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.
1.2.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à trong
mối quan hệ giữa Game 3D. Nhƣ các thƣơng hiệu nổi tiếng của Software: Doom và
Quake, thay vì phải làm việc từ đầu, các nhà phát triển khác sẽ có quyền truy nhập vào
phần lõi của Game và thiết kế 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 . Các game sau này, nhƣ
Quake III Arena và sản phẩm năm 1988 của Epic Games: Unreal đƣợc thiết kế với
cách tiếp cận mới này, Game Engine và nội dung Game đƣợc chia thành các phần
riêng biệt để phát triển. Engine có thể tái sử dụng khiến việc phát triển Game tiếp theo
nhanh hơn và dễ dàng hơn, một thuận lợi to lớn trong ngành công nghiệp cạnh tranh
này. Game Engine hiện đại là một trong những ứng dụng đƣợc viết ra (bằng các ngôn
ngữ lập trình) phức tạp nhất, thƣờng xuyên phải có rất nhiều tinh chỉnh trong hệ thống
để đảm bảo kiểm soát chính xác trải nghiệm ngƣời dùng. Sự phát triển liên tục của
Game Engine đã tạo ra một sự phân chia mạnh mẽ giữa các công việc dựng hình, viết
kịch bản, thiết kế hình ảnh, và thiết kế màn chơi. Hiện nay thông thƣờng một đội ngũ
phát triển Game điển hình phải có số lƣợng họa sĩ gấp vài lần số lƣợng lập trình viên.
1.2.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 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
Nguyễn Phi Hậu – Lớp CCCT17A 7
- Xây dựng Game ném gạch
các ngôn ngữ lập trình cấp cao nhƣ Java cà 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, khả năng gây chậm 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 đƣợc cung cấp bởi các ngôn ngữ này lại có lợi
nhuận cho các nhà phát triển Game Engine.
1.2.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ộ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 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ổ sung trong một hệ thống
Engine gồm có Bink của hãng 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 ảnh 3D Granny. FMOD của Firelight là một
thƣ viện và bộ công cụ phần mềm âm thanh mạnh mẽ giá rẽ. Havok cung cấp một hệ
thống mô phỏng vật lý mạnh, cùng với các bộ phần mềm về hình ảnh động và mô
phỏng hành vi. Scaleform đem lại GFx dùng cho các biểu diễn cao cấp trên nền giao
diện Flash, cùng với các giải pháp trình chiếu video chất lƣợng cao, và một Input
Method Editor (IME) phần bổ sung nhằm hỗ trợ trò chuyện trong Game bằng ngôn
ngữ Châu Á
1.3. TỔNG QUAN KIẾN TRÚC GAME ENGINE
- 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.
- Game Engine không chỉ bao gồm thành phần tạo hình ảnh mà bao gồm rất
nhiều thành phần khác nhƣ điều khiển luồng, quản lý bộ nhớ, điều khiển âm thanh…
Nếu Engine chỉ có chức năng render hình ảnh thì thƣờng đƣợc gọi là Graphic Engine.
Nguyễn Phi Hậu – Lớp CCCT17A 8
- Xây dựng Game ném gạch
- Việc lựa chọn một Game Engine trƣớc khi phát triển sẽ giúp chúng ta giảm
thiểu những sai sót không đáng có trong quá trình phát triển phần mềm. Có một số tiêu
chí chúng ta cần chú ý nhƣ sau:
Giá thành: Một số Game Engine có giá thành cao, tuy có rất nhiều chức năng và
khả năng hỗ trợ tốt. Do vậy chúng ta cần xem xét đến vấn đề này trƣớc tiên. Nếu là
ngƣời lập trình thông thƣờng thì với mức giá khoảng 1500$ cho 1 Engine rõ ràng là
một vấn đề lớn. Thông thƣờng hiện nay có khá nhiều Engine không tính phí cho hiệu
năng cao. Từ phần tiếp theo chúng ta sẽ chỉ bàn đến các Engine free này mà thôi.
Hiệu năng: Trƣớc khi chúng ta lựa chọn một Engine, chúng ta cần kiểm tra hiệu
năng của Engine này trên nền tảng mà chúng ta hƣớng đến. Ví dụ: Một engine có hiệu
năng cao trên PC nhƣng lại cho hiệu năng thấp hoặc không hỗ trợ đầy đủ trên Android.
Hoặc 1 Engine chỉ cho 1-2 FPS (Frame Per Second) trong khi 1 Engine khác cho 30
FPS với cùng một cách lập trình.
Cộng đồng: Số lƣợng ngƣời sử dụng rõ ràng nói lên chất lƣợng của Engine đó.
Đồng thời, nhiều ngƣời sử dụng và nhiều lập trình viên có nghĩa là khi bạn vƣớng mắc
một vấn đề nào đó, khi đƣa câu hỏi lên, sẽ nhanh có câu trả lời hơn, và câu trả lời chất
lƣợng hơn.
Tài liệu: Nếu một Engine không có tài liệu cụ thể, r ràng đó là một engine
không tốt. Tài liệu cụ thể sẽ giúp bạn rất nhiều khi mới làm quen với Engine, cũng nhƣ
giải quyết các vấn đề về thiết kế cũng nhƣ các vấn đề xảy ra trong khi lập trình.
Mã nguồn: đôi khi các tài liệu không có đủ thông tin, chúng ta cần tìm hiểu mã
nguồn để hiểu cách xử lý của Engine. Một số Engine mặc dù Free nhƣ lại có mã nguồn
đóng. Do đó chúng ta cần có sự lựa chọn. Hoặc đôi khi mã nguồn của Engine không
thực sự phù hợp với yêu cầu của chúng ta, khi đó chúng ta cần sửa đổi mã nguồn của
Engine đó. Mã nguồn mở cũng giúp cho việc sửa lỗi nhanh hơn do có nhiều ngƣời có
thể đóng góp hơn.
Các tính năng: R ràng mục đích của chúng ta khi sử dụng Engine là tiết kiệm
thời gian phát triển và dễ dàng hơn trong quá trình phát triển. Do đó một Engine có
nhiều tính năng hơn sẽ giúp chúng ta nhiều hơn, phù hợp hơn trong nhiều ứng dụng.
- Qua 6 điểm trên, chúng ta có thể đánh giá và đƣa ra quyết định của mình khi sử
dụng một Engine nào đó.
Nguyễn Phi Hậu – Lớp CCCT17A 9
- Xây dựng Game ném gạch
- 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.
Hình 1.2. Tổng quan kiến trúc Unity
- 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.
Nguyễn Phi Hậu – Lớp CCCT17A 10
- Xây dựng Game ném gạch
- 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.
- 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
- Rigibody: 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.
1.4. TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C#
1.4.1 Tổng quan về C#
C# là một ngôn ngữ lập trình theo phƣơng pháp lập trình hƣớng đối tƣợng và lập
trình trực quan đƣợc phát triển bởi Microsoft.
C# ra đời năm 2000, đƣợ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…
Đƣợc xây dựng trên nền tảng của hai ngôn ngữ lập trình mạnh nhất đó là C++ và
Java. Do đó C# đƣợc miêu tả là ngôn ngữ có sự cân bằng giữa C++, Pascal, Delphi và
Java.
C# với sự hỗ trợ mạnh mẽ của.NET Framework giúp cho việc tạo một ứng dụng
Windows Forms hay WPF (Windows Presentation Foundation)… trở nên rất dễ dàng.
1.4.2 Các đặc điểm của C#
- Là một ngôn ngữ hƣớng đối tƣợng, trực quan.
- Tám mƣơi từ khóa và hơn mƣời kiểu dữ liệu đƣợc dựng sẵn.
- Cung cấp những đặc tính hƣớng thành phần (component - oriented) nhƣ là
Property, Event.
- C# không khuyến khích sử dụng con trỏ nhƣ C++.
- C# có bộ Garbage Collector (thu gom rác) sẽ tự động thu gom vùng nhớ khi
không còn sử dụng nữa.
Nguyễn Phi Hậu – Lớp CCCT17A 11
- Xây dựng Game ném gạch
- C# đã loại bỏ đa kế thừa trong C++ mà thay vào đó C# sẽ hỗ trợ thực thi giao
diện interface.
Nguyên nhân lựa chọn C# là vì:
C# là một ngôn ngữ đơn giản.
C# là một ngôn ngữ hiện đại.
C# là một ngôn ngữ mạnh mẽ và mềm dẻo.
C# là một ngôn ngữ ít từ khóa.
C# là một ngôn ngữ phổ biến.
C# mang sức mạnh của nhiều ngôn ngữ (C++, Java…)
1.4.3 Ƣu điểm và nhƣợc điểm của C#
- Một số ƣu điểm nổi bật của C#:
+ Gần gũi với các ngôn ngữ lập trình thông dụng (C++, Java, Pascal).
+ Xây dựng dựa trên nền tảng của các ngôn ngữ lập trình mạnh nên thừa hƣởng
những ƣu điểm của những ngôn ngữ đó.
+ Đã cải tiến các khuyết điểm của C/C++ nhƣ con trỏ, các hiệu ứng phụ…
+ Dễ tiếp cận, dễ phát triển.
+ Đƣợc hỗ trợ của.NET Framework.
- Một số nhƣợc điểm:
+ Nhƣợc điểm lớn nhất của C# là chỉ chạy trên nền Windows và có cài.NET
Framework.
+ Thao tác đối với phần cứng yếu hơn so với các ngôn ngữ khác. Hầu hết phải
dựa vào Windows.
1.5. TÌM HIỂU VỀ CÔNG CỤ HỖ TRỢ VISUAL STUDIO
1.5.1 Giới thiệu
Visual Studio là (IDE – Integrated Development Environment) một bộ công cụ
phát triển phần mềm do Microsoft phát triển. Visual Studio cũng là một phần mềm
đƣợc sử dụng bởi các lập trình viên để xây dựng nên các sản phẩm phần mềm.
1.5.2 Lý do nên dùng Visual Studio
- Hỗ trợ lập trình trên nhiều ngôn ngữ nhƣ C/C++, C#, F#, Visual Basic, HTML,
CSS, JavaScript. Phiên bảnVisual Studio 2015 có hổ trợ ngôn ngữ Python.
Nguyễn Phi Hậu – Lớp CCCT17A 12
- Xây dựng Game ném gạch
- Visual Studio là một công cụ hỗ trợ việc Debug một cách mạnh mẽ, dễ dàng
nhất (Break Point, xem giá trị của biến trong quá trình chạy, hỗ trợ debug từng câu
lệnh).
- Giao diện Visual Studio rất dễ sử dụng đối với ngƣời mới bắt đầu.
- Visual Studio hỗ trợ phát triển ứng dụng desktop MFC, Windows
Form,Universal App, ứng dụng mobileWindows Phone 8/8.1, Windows 10, Android
(Xamarin), iOS và phát triển website Web Form, ASP.NET MVC và phát triển
Microsoft Office.
- Visual Studio hỗ trợ kéo thả để xây dựng ứng dụng một cách chuyên nghiệp,
giúp các bạn mới bắt đầu có thể tiếp cận nhanh hơn.
- Visual Studio cho phép chúng ta tích hợp những extension từ bên ngoài nhƣ
Resharper (hổ trợ quản lý và viết mã nhanh cho các ngôn ngữ thuộc.Net), hay việc cài
đặt thƣ viện nhanh chóng thông qua Nuget.
- Visual Studio đƣợc sử dụng đông đảo bởi lập trình viên trên toàn thế giới.
Nguyễn Phi Hậu – Lớp CCCT17A 13
nguon tai.lieu . vn