TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
NGHIÊN CỨU VÀ PHÁT TRIỂN
ỨNG DỤNG GAME
VỚI CÔNG NGHỆ XNA
KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN CNTT
TP.HCM, 2009
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
LÊ VŨ THÁI BẢO
0512072
NGUYỄN KHẮC HUY
0512132
NGHIÊN CỨU VÀ PHÁT TRIỂN
ỨNG DỤNG GAME
VỚI CÔNG NGHỆ XNA
KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN TIN HỌC
GIÁO VIÊN HƯỚNG DẪN
TS.Trần Minh Triết
NIÊN KHÓA 2005 – 2009
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
Khóa luận đáp ứng yêu cầu của LV cử nhân tin học.
TpHCM, ngày …… tháng …… năm 2009
Giáo viên hướng dẫn
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
Khóa luận đáp ứng yêu cầu của LV cử nhân tin học.
TpHCM, ngày …… tháng …… năm 2009
Giáo viên phản biện
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 Đại
Học Khoa Học Tự Nhiên, Tp.HCM đã tạo điều kiện tốt cho chúng em thực hiện đề
tài này.
Chúng em xin chân thành cảm ơn Thầy Trần Minh Triết, là người đã tận
tình hướng dẫn, chỉ bảo chúng em trong suốt thời gian thực hiện đề tài.
Chúng 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.
Nhóm thực hiện
ĐỀ CƯƠNG CHI TIẾT
Tên Đề Tài: Nghiên cứu và phát triển game với công nghệ XNA
Giáo viên hướng dẫn: TS.Trần Minh Triết
Thời gian thực hiện: từ ngày 12/12/2008 đến ngày 07/07/2009
Sinh viên thực hiện:
Lê Vũ Thái Bảo (0512072) –Nguyễn Khắc Huy (0512132)
Loại đề tài: Tìm hiểu công nghệ và xây dựng ứng dụng
Nội Dung Đề Tài (mô tả chi tiết nội dung đề tài, yêu cầu, phương pháp thực hiện,
kết quả đạt được, …):
Đây là đề tài thuộc về hướng tìm hiểu công nghệ và phát triển ứng dụng. Đề tài
bao gồm các phần sau:
• Nghiên cứu và tìm hiểu Microsoft XNA Framework 3.0.
• Mô tả nội dung của Productline Game sẽ xây dựng.
• Xác định và phân tích các vấn đề khi xây dựng và phát triển game với
Productline này trên nền tản Microsoft XNA framework.
• Đề ra các giải pháp kỹ thuật và công nghệ.
Kế Hoạch Thực Hiện:
-
12/01/2009-26/02/2009:Tìm hiểu công nghệ XNA.
-
27/02/2009-15/03/2009: Mô tả các đặc trưng chính của Product Line game sẽ
xây dựng.
-
15/03/2009-20/03/2009:Nêu và phân tích các vấn đề sẽ phát sinh trong quá
trình xây dựng.
-
21/03/2009-10/04/2009: Đưa ra các giải pháp cho các vấn đề và lựa chọn giải
pháp thích hợp.
-
11/04/2009-01/05/2009: Xây dựng ứng dụng game.
-
02/05/2009-30/06/2009:Xây dựng các công cụ hỗ trợ cho việc chuẩn hóa tài
nguyên và biên tập bản đồ vùng chiến sự.
-
01/07/2009-07/07/2009:Cải tiến ứng dụng game và các công cụ.
Xác nhận của GVHD
Ngày 7 tháng 7 năm 2009
SV Thực hiện
MỤC LỤC
DANH MỤC CÁC HÌNH
DANH MỤC CÁC BẢNG
TÓM TẮT KHÓA LUẬN
Hiện nay, game đóng vai trò rất cao trong công nghệ giải trí. Các game ra
đời với nội dung và thể loại vô cùng đa dạng và phong phú. Thiết bị chơi game
ngày càng được cải tiến và xuất hiện nhiều hệ máy của các hãng sản xuất game. Sự
phát triển của thiết bị phần cứng tiếp sức cho sự ra đời của các game có đồ họa đẹp
mắt và âm thanh sống động. Ngành công nghiệp game mang lại những lợi nhuẫn
khổng lồ cho các hãng sản xuất.
Nội dung của đề tài chúng em thực hiện bao gồm việc tìm hiểu công nghệ
làm game trên XNA framework, đưa ra các mô tả về Product line của dòng game
dàn trận thời gian thực. Đồng thời, đề tài cũng nêu và đưa ra các giải pháp cho các
vấn đề phát sinh trong quá trình thực hiện một ứng dụng game trên Product line
dòng game dàn trận này. Đề tài không dừng lại ở mức xây dựng một ứng dụng
game cụ thể, mà xây dựng một Prduct line game, trong đó bao gồm cả việc xây
dựng các công cụ hỗ trợ cho việc phát triển Product line này, bao gồm công cụ xây
dựng bản đổ vùng chiến sự, công cụ giúp chuẩn hóa tài nguyên.
Nội dung khóa luận bao gồm 9 chương:
Chương 1: Mở đầu
Chương 2: Khảo sát hiện trạng
Chương 3: XNA framework và XNA game Studio
Chương 4: Một số đặc trưng chính của ứng dụng game đang xây dựng
Chương 5: Các vấn đề và giải pháp xây dựng game
Chương 6: Kiến trúc game
Chương 7: Các tiện ích hỗ trợ tùy biến game
Chương 8: Kết quả đạt được của game
Chương 9: Kết luận và hướng phát triển
Chương 1
Mở đầu
Nội dung chương này giới thiệu tổng quan về nhu cầu và xu hướng phát
triển game và Productline game dựa trên các Game framework và Game
engine. Giới thiệu về công nghệ XNA của Microsoft, đồng thời nêu lên mục
tiêu và nội dung của đề tài.
1.1. Tổng quan
Sức mạnh cốt lõi của công nghệ giải trí Game chính là do cỗ máy “game
engine” và Game Framework cung cấp.
Game Framework là một tập hợp thư viện chứa các hàm và đối tượng hỗ trợ,
cho phép vẽ, xử lý hoạt cảnh, xây hiệu ứng âm thanh từ các tài nguyên có sẵn, được
xây dựng với mục đích có tính tái sử dụng cao nhất có thế, từ đó các Game engine
được xây dựng. Game engine sẽ tạo ra các đối tượng Game, các logic game cho một
thể loại game cụ thể. Một số Game framework.
Microsoft XNA Framework
Direct X
Game engine có thể được hiểu như một middleware (phần mềm lớp giữa).
Nói theo cách khác, Game Engine là phần mềm kiểm soát mọi hoạt động, tương tác
của một trò chơi, từ kỹ thuật đến cách chơi, logic game.Về cơ bản, đó là một thực
thể bao gồm những công việc liên quan đến phát triển game như vẽ, mô phỏng vật
lý, các nguồn tương tác với game để những nhà phát triển tập trung vào việc phát
triển chi tiết nội dung của game. Game engine cung cấp những thành phần cho phép
những nhà phát triển có thể tương tác nhằm tạo nên game như giao diện, animation,
sự tương tác giữa các đối tượng, vật lý và ngay cả trí thông minh nhân tạo. Mỗi một
nhà cung cấp giải pháp game engine có cách tiếp cận riêng và các nhà phát triển
hiện có khá nhiều engine thương mại để lựa chọn.
12
BIGWORLD - Là một trong những engine tươm tất, được thiết kế đặc biệt
để phục vụ thị trường game trực tuyến nhiều người chơi.
CRYENGINE - được biết đến với tựa game bắn súng CRYSIS năm 2007.
UNREAL ENGINE của EPIC - dành cho các hãng phát triển game toàn
cầu.
QUBESOFT - Q ENGINE là được phát triển bởi hai cựu nhân viên của
Microsoft sáng lập ra DirectX là Servan Keondjian và Doug Rabson.
SIMUTRONICS - được xây dựng dựa trên kinh nghiệm từ thời game text.
Dựa trên các tiền đề này, các nhà sản xuất đã xây dựng ra các Product line
nổi trội trong làn giải trí Game, với nội dung phong phú như dòng Game nhập vai
Diablo, Prince Of Persia…,
dòng Game dàn trận Age Of Wonder, Age Of
Empire…với máy PC và dòng Game nhập vai Final Fantasy, Kingdom Heart .. với
hệ máy Nintendo, Play Station… Các phiên bản sản phẩm trong Product line này
được các nhà sản xuất xây dựng từng bước, từ giao diện 2D thô sơ ban đầu được
nâng cấp lên giao diện đồ họa 3D, với các hiệu ứng particle ngày càng đặc sắc, cùng
với hiệu ứng âm thanh hoành tráng làm cho Product line của họ ngày càng được ưa
chuộng. Nhưng có một điều mà các Product line Game này không thay đổi hoặc
thay đổi rất ít qua mỗi phiên bản của chúng là nội dung chính của trò chơi, cốt lõi
của các Product line, việc thay đổi chủ yếu được thực hiện trong mỗi phiên bản ra
đời của một Product line chính là cách thức thể hiện nội dung đó là ra bên ngoài
giao diện, thiệt bị output và tương tác với người chơi sẽ khác nhau hoặc có thể, tuy
sẽ có một số cải tiến nào đó như số lượng pháp thuật, số lượng vũ khí, số lượng
nhân vật, cách thức giao tiếp giữa các nhân vật, hoạt động của nhân vật trong Game
nhưng chung quy lại, mọi hoạt động chính vẫn tuân theo một nội dung nhất định.
Đó là con đường phát triển chủ yếu đã làm nên các Product line Game nổi tiếng
trong làng giải trí Game, gắn liền với các hãng sản xuất hàng đầu như Square Soft
hiện nay được biết với cái tên Square Enix, Ubisoft,… Không nằm ngoài con đường
đó, đề tài này xây dựng những bước ban đầu cho một Product line của thể loại
Game dàn trận dựa trên nền Microsoft XNA Framework.
Xuất phát từ đề tài này chúng em tìm hiểu về các vấn đề sau
13
Microsoft XNA framework.
Xây dựng một framework với thể loại game dàn trận dựa trên Microsoft
XNA framework.
Xây dựng Game editor.
1.2. Giới thiệu XNA
XNA framework được thiệt kế như một tập các lớp thư viện dùng cho công
nghệ phát triển game, nhằm phát huy cao nhất tính tài sử dụng của mã trên nhiều
nền tản. Nó cũng bao gồm một phiên bản của Common Language Runtime, được
tối ưu hóa cho yêu cầu lập trình game, nhằm cung cấp một môi trường thực thi có
quản lý cho các game XNA. Các Common Language Runtime này đều có sẵn trong
môi trường Window XP, Window Vista, Zune và Xbox. Từ đó Game XNA có thể
chạy trên bất kì nền tản nào có hổ trợ XNA Framework, với những sửa đổi tối thiểu
hoặc thậm chí không cần sửa đổi. Như vậy, XNA framework gói gọn những chi tiết
kĩ thuật ở mức độ thấp trong mã lập trình của một game và đảm bảo rằng chính bản
thân framework sẽ hỗ trợ các nền tản khác nhau khi các game được tạo ra từ XNA
framework được mang đi thực thi ở một nền tản tương đương. Và cũng do đó, đã
cho phép các nhà phát triển game tập trung hơn vào nội dung và kinh nghiệm làm
game mà không cần phải bận tâm về nền tản để thực thi game. Ngoài ra, XNA
framework còn tích hợp thêm một số công cụ, như công cụ tạo hiểu ứng âm thanh
XACT, nhằm mục đích hổ trợ khả năng sáng tạo nội dung ngày càng tốt hơn.
Những công cụ này sẽ giúp cho tác giả hình thành những ý tưởng mới về nội dung
hình ảnh, âm thanh, sự kết hợp giữa chúng và xây dựng các hình tượng nhân vật
thật năng động. XNA framework còn cung cấp các giải pháp, kỹ thuật giúp cho các
nhà phát triển game độc lập và chuyên nghiệp, tạo ra các sản phẩm game chạy trên
nền tản Microsoft.
14
Hình 1.1 Mô hình ứng dụng game XNA
Hiện nay XNA framework đã được nâng cấp đến phiên bản 3.0. So với phiên
bản 2.0, XNA framework 3.0 là sự mở rộng lớn cung cấp những tính năng dễ sử
dụng, tiến đến gần mục tiêu sản xuất ra các dạng game chạy trên nhiều nền tản, có
khả năng chia sẽ với thế giới game trong Xbox360, Window và bây giờ là trên
Zune.
XNA Game Studio là bộ plug-in Visual Studio, với các tính năng triển khai
được sử dụng với XNA framework. XNA Game Studio là một công cụ được sử
dụng để xây dựng một game trong XNA Framework với Visual Studio và cung cấp
khả năng chuyển đổi game đã được xây dựng sang nền tản Xbox hoặc Zune thay vì
trên hệ điều hành Window.
1.3. Mục tiêu đề tài
Đề tài này thuộc về hướng nghiên cứu và tìm hiểu công nghệ, từ đó xây dựng
và phát triển ứng dụng. Mục tiêu chính mà để tài hướng vào là tìm hiểu công nghệ
XNA và xây dựng Productline game dựa trên công nghệ XNA. Đề tài bao gồm các
các phần sau:
15
• Nghiên cứu và tìm hiểu Microsoft XNA Framework 3.0.
• Mô tả nội dung của Productline Game sẽ xây dựng.
• Xác định và phân tích các vấn đề khi xây dựng và phát triển game với
Productline này trên nền tản Microsoft XNA framework.
• Đề ra các giải pháp kỹ thuật và công nghệ.
Trên các cơ sở tìm hiểu và phân tích, nhóm sẽ xây dựng Productline game
cho dòng game dàn trận trên nền tản XNA Framework 3.0 với nội dung thể hiện
dưới dạng 2D. Như vậy, nội dung đề tài không phải xây dựng một ứng dụng game
cụ thể mà xây dựng một Productline game với thể loại dàn trận trên nền tản XNA
Framework 3.0
1.4. Nội dung luận văn
Luận văn bao gồm 9 chương, chia thành 3 nhóm nội dung chính:
Chương 1: Mở đầu
Nội dung chương này giới thiệu tổng quan về nhu cầu và xu hướng phát triển game
và Productline game dựa trên các Game framework và Game engine. Giới thiệu về
công nghệ XNA của Microsoft, đồng thời nêu lên mục tiêu và nội dung của đề tài.
Chương 2: Khảo sát hiện trạng
Nội dung chương này trình bày sơ lược về sự phát triển của ngành công nghiệp
game, nêu lên các đặc điểm của các game trên các hệ máy.
Chương 3: XNA framework và XNA game Studio
Nội dung chương này giới thiệu và XNA framework và XNA game studio,cách
thức thực thi game và thể hiện nội dung game bằng hình ảnh, input và âm thanh.
Chương 4: Một số đặc trưng chính của ứng dụng game đang xây dựng
16
Nội dung chương này sẽ mô tả nội dung của Productline game sẽ được xây dựng
trong đề tài, với thể loại game được lựa chọn là game dàn trận bao gồm các thành
phần trong game, logic thể hiện trong game giữa các thành phần.
Chương 5: Các vấn đề và giải pháp xây dựng game
Nội dung chương này đề cập và phân tích các vấn đề khi xây dựng Productline
Game thể loại dàn trận. Với mới vấn đề, các giải pháp sẽ được đưa ra để phân tích
và áp dụng.
Chương 6: Kiến trúc game
Trình bày kiến trúc của game được xây dựng trong đề tài.
Chương 7: Các tiện ích hỗ trợ tùy biến game
Trình bày các công cụ tiện ích, được xây dựng hỗ trợ cho game.
Chương 8: Kết quả đạt được của game
Nêu ra các kết quả mà đề tài đã đạt được.
Chương 9: Kết luận và hướng phát triển
Kết luận và đưa ra các hướng phát triển trong tương lại của đề tài.
17
Chương 2
Khảo sát hiện trạng
Nội
dung chương này đề cập tới hiện trạng phát triển của ngành công
nghiệp game, đồng thời nêu ra các đặc điểm nổi bật của các game trên các
dòng thiết bị phổ biến.
2.1. Khảo sát:
Ngày nay, game (trò chơi điện tử) được phát triển rộng rãi với nhiểu thể loại
và thiết bị chơi khác nhau. Với sự cải tiến mạnh mẽ về phần cứng hỗ trợ đồ họa, âm
thanh, các game ngày nay càng có những bước tiến đáng kể trong cách thức trình
bày với dạng đồ học 2D và 3D. Đồng thời nội dung game ngày càng được mở rộng
và phong phú hơn trong kể cả trong cốt truyên và cách chơi. Do đó, đã xuất hiện
những game có ấn tượng lớn với người chơi, tạo nên hàng loạt cơn sốt trong thế
giới các game thủ với các dòng game nổi tiếng.
-
Dòng game thể loại nhâp vai Final Fantasy của Square-soft:
-
Game Chaos-legion thể loại nhập vai của Cap-com
18
-
Dòng game Starcraft thuộc thể loại dàn trận Blizard
-
Dòng game dàn trận theo lượt Tearing Saga
19
Ngành công nghiệp game đang ngày càng mang lại nhiều lợi nhuận cho các
hãng phát triển game. Chỉ riêng ở Mỹ , ngành công nghiệp game đã xác lập được
một kỷ lục mới về doanh thu về cả phần cứng lẫn phần mềm trong năm 2008. Tổng
cộng doanh thu của các mặt hàng liên quan đến game (phần cứng, các tựa game,
phụ kiện) đã đạt đến mốc 21,33 tỉ USD trong năm 2008, tăng 19% so với 1 năm
trước đó dù kinh tế nước Mỹ đang gặp nhiều khủng hoảng. Chỉ tính riêng trong
tháng 12 năm 2008 với rất nhiều ngày lễ thì doanh thu đã là 5,29 tỉ USD. Nếu so
với năm 2006 thì doanh thu trong năm vừa qua đã tăng thêm đến 43%.
( Nguồn các hình ảnh: />
2.2. Một số đặc điểm của game trên một số nền tảng thiết bị
Game trên PC
•
•
•
•
•
•
Đòi hỏi tài nguyên phần cứng cao.
Sử dụng nhiều thiết bị nhập xuất khác nhau.
Đồ họa đẹp hỗ trợ 2D và 3D, hiệu ứng âm thanh và hình ảnh sống động
Nội dung phong phú.
Thể loại chơi đa dạng.
Với các game đòi hỏi tài nguyên phần cứng cao, các máy tính có thể lắp đặt
thêm thiết bị phần cứng hỗ trợ như card âm thanh, card đồ họa.
20
Game trên thiết bị console
•
•
•
•
•
Không đòi hỏi tài nguyên phần cứng nhiều như PC game
Đồ họa có chất lượng tăng dần qua nhiều hệ máy, hỗ trợ 2D và 3D.
Nội dung phong phú đa dạng.
Thể loại nhiều nhưng không bằng PC game.
Có thể chuyển từ thiết bị chơi console sang thiết bị PC nhờ các chương trình
giả lập.
• Thiết bị nhập xuất chủ yếu là màn hình và tay cầm gamepad.
• Các game được viết chỉ cho một thiết bị console nhất định, không thể mang
sang thiết bị console khác. Ví dụ như không thể mang game của hệ máy
Playstation 2 để chơi trên hệ máy Xbox 360.
Game trên thiết bị di động
• Dung lượng nhỏ.
• Đồ họa không đẹp.
21
•
•
•
•
•
•
•
Thời lượng chơi game không nhiều, nội dung ngắn.
Lối chơi quen thuộc, đơn giản.
Đồ họa 2D.
Số lượng đối tượng chuyển động cùng lúc ít.
Không đòi hỏi nhiều tài nguyên phần cứng.
Các tài nguyện chuyển động được xây dựng sẵn.
Các màn hình được chia thành nhiều phần.
( Nguồn các hình ảnh: />
22
Chương 3
XNA framework và XNA Game Studio
Nội
dung chương này giới thiệu và XNA framework và XNA game
studio,cách thức thực thi game và thể hiện nội dung game bằng hình ảnh,
input và âm thanh trong công nghệ XNA.
3.1. Giới thiệu
XNA framework là một tập các lớp thư viện hỗ trợ cho việc phát triển game
trên các nền tảng Microsoft như Windows, Xbox 360, Zune.
Hình 3.2 Các nền tảng Microsoft Windows, Xbox360 và Zune
XNA Game studio là một bộ công cụ dựa trên các phiên bản hỗ trợ của
Microsoft Visual Studio , cho phép các nhà phát triển game tạo các ứng dụng dựa
trên công nghệ XNA triển khai trên các môi trường thuộc nền tảng Microsoft như
Microsoft Windows, Xbox 360 và bây giờ có cả Zune.
Các giai đoạn phát triển của công nghệ XNA.
23
Hình 3.3 Các giai đoạn phát triển XNA 2004-2006
Hình 3.4 XNA và bước phát triển trong tương lai
3.2. Kiến trúc XNA và các trạng thái xử lý trong trò chơi
3.2.1. Kiến trúc XNA
Kiến trúc XNA bao gồm các thành phần xử lý đồ họa, âm thanh, toán học,
quá trình nhập xuất, mạng.
24
Hình 3.5 Kiến trúc phân tầng của XNA framework
3.2.2. Quản lý các xử lý trong trò chơi
Bước đầu tiên trong việc xây dựng một game là tạo ta một lớp kế thừa từ
Microsoft.Xna.Framework.Game , lớp này phải khai báo override các phương thức
Update, Draw, LoadContent và Initialize. Phương thức Update có trách nhiệm
xử lý logic của game và phương thức Draw có trách nhiệm vẽ các thành phần của
game ra màn hình. Phương thức Initialize cùng với hàm contructor có trách nhiệm
khởi tạo các giá trị ban đầu cho các thành phần đồ họa, âm thanh và input trong
game. Phương thức LoadContent load tài nguyên đồ họa bào gồm các hình ảnh sẽ
vẽ trong game và UnloadContent có trách nhiệm giải phóng tài nguyên đồ họa.
public class Game1 : Microsoft.Xna.Framework.Game
{
25