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
HẦU NGUYỄN THÀNH NAM – TRẦN DUY QUANG
NGHIÊN CỨU VÀ PHÁT TRIỂN GAME
TRÊN TRÌNH DUYỆT WEB
VỚI SILVERLIGHT
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
HẦU NGUYỄN THÀNH NAM
0512222
TRẦN DUY QUANG
0512275
NGHIÊN CỨU VÀ PHÁT TRIỂN GAME
TRÊN TRÌNH DUYỆT WEB
VỚI SILVERLIGHT
KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN CNTT
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.
Tp HCM, ngày…… tháng…… năm 2009
Giáo viên hướng dẫn
i
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.
Tp HCM, ngày…… tháng…… năm 2009
Giáo viên phản biện
ii
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 tốt
nghiệp này.
Chúng em xin chân thành cảm ơn Thầy Trần Minh Triết, 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
Hầu Nguyễn Thành Nam & Trần Duy Quang
iii
ĐỀ CƯƠNG CHI TIẾT
Tên đề tài: Nghiên cứu và phát triển game trên trình duyệt web với Silverlight
Giáo viên hướng dẫn: TS. Trần Minh Triết
Thời gian thực hiện: từ ngày 02/01/2009 đến ngày 07/07/2009
Sinh viên thực hiện:
Hầu Nguyễn Thành Nam (0512222) – Trần Duy Quang (0512275)
Loại đề tài: Tìm hiểu công nghệ và xây dựng ứng dụng
Nội dung đề tài:
Đâ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:
Khảo sát các đặc điểm thường gặp của 1 số game online trên nền web, như
Ikariam, Travian, Evony, Second World, Battle, TribalWars…
Nghiên cứu các kĩ thuật phát triển ứng dụng web hỗ trợ multimedia và có tính
tương tác cao với công nghệ Silverlight.
Đề xuất các khái niệm và quy luật của một họ game online thuộc thể loại xây
dựng và chiến thuật trên nền web. Phát triển một game thuộc họ game đã đề
xuất với công nghệ silverlight. Game được xây dựng có khả năng tùy biến để
bổ sung/thay đổi các thông tin trong trò chơi (ví dụ như công trình, quân lính,
kỹ thuật…) và các tài nguyên hình ảnh tương ứng.
Xây dựng công cụ (game editor) thực hiện việc bổ sung / thay đổi các thông
tin trong trò chơi (ví dụ công trình, quân lính, kỹ thuật…) và các tài nguyên
hình ảnh tương ứng, ngoài ra với công cụ này có thể cho phép tạo ra các game
có cùng phong cách chơi, nguyên tắc xử lý, nhưng các thông tin trong trò chơi
và tài nguyên hình ảnh được thay đổi.
Kế hoạch thực hiện:
-
02/01/2009 đến 14/1/2009: Tìm hiểu về Rich Internet Application và công
iv
nghệ Silverlight. Tìm hiểu các game trên nền web hiện có.
-
15/1/2009 đến 1/2/2009: Phân tích các yêu cầu, vấn đề, giải pháp khi xây
dựng game trên nền web.
-
2/2/2009 đến 20/2/2009: Tìm hiểu và hoàn tất các yêu cầu về mặt kĩ thuật.
-
21/2/2009 đến 12/3/2009: Xây dựng khung chương trình cho game chơi trên
nền web.
-
13/3/2009 đến 25/3/2009: Hoàn thành các chức năng chính của chương trình.
-
26/3/2009 đến 10/4/2009: Nâng cấp, cải thiện hiệu suất tốc độ xử lý
-
11/4/2009 đến 6/5/2009: Xây dựng khung chương trình cho công cụ hiệu
chỉnh và phát sinh game.
-
7/5/2009 đến 22/5/2009: Hoàn thành các chức năng của công cụ phát sinh
game.
-
23/5/2009 đến 8/6/2009: Nâng cấp giao diện và tính tiện dụng công cụ.
-
9/6/2009 đến 30/6/2009: Hoàn thành toàn bộ chương trình dựa trên qui trình
và giải pháp đã xây dựng.
Xác nhận của GVHD
Ngày 06 tháng 07 năm 2009
SV Thực hiện
v
MỤC LỤC
Chương 1 Mở đầu......................................................................................................1
1.1.
Tổng quan...................................................................................................1
1.1.1.
Tổng quan về quá trình phát triển của các thế hệ video game 1
1.1.2.
Tổng quan về game trên trình duyệt
1.2.
2
Rich Internet Application - RIA..................................................................3
1.2.1.
Tổng quan về RIA 3
1.2.2.
RIA và các giải pháp
6
1.3.
Mục tiêu của luận văn...............................................................................12
1.4.
Nội dung báo cáo khóa luận......................................................................14
Chương 2 Một số đặc điểm chính của game trên trình duyệt...................................15
2.1.
Tổng quan.................................................................................................15
2.2.
Phân tích các đặc điểm chung của game trên trình duyệt..........................15
2.2.1.
Dựa trên văn bản
2.2.2.
Tất cả xử lý hầu hết đều được thực hiện tại server
2.2.3.
Hạn chế xử lý tất cả các hành động đồng thời
2.2.4.
Game được hỗ trợ đa ngôn ngữ
2.2.5.
Game được xây dựng với cấu trúc rất linh động 20
2.3.
15
17
18
20
Quy luật chung của dòng game thể loại xây dựng chiến thuật trên trình
duyệt web............................................................................................................21
2.3.1.
Thế giới ảo 21
2.3.2.
Khu xây dựng
2.3.3.
Tài nguyên
22
23
vi
2.3.4.
Quân lính
24
2.3.5.
Nâng cấp khả năng cho các đơn vị quân lính
2.3.6.
Nâng cao năng suất khai thác các loại tài nguyên
2.3.7.
Quan hệ ngoại giao và hệ thống liên minh
2.3.8.
Vận chuyển hàng hóa và giao thương
2.3.9.
Mở rộng lãnh thổ
25
26
27
28
28
Chương 3 Web game xây dựng MyIka....................................................................30
3.1.
Thế giới game MyIka................................................................................30
3.2.
Các loại tài nguyên....................................................................................31
3.3.
Thành phố.................................................................................................32
3.4.
Các loại công trình....................................................................................33
3.4.1.
Loại công trình được định nghĩa sẵn
3.4.2.
Loại công trình tạo ra tài nguyên 34
3.4.3.
Loại công trình tạo ra các đơn vị lính
33
34
3.5.
Quân lính..................................................................................................34
3.6.
Công nghệ.................................................................................................36
3.7.
Liên minh và thuộc địa.............................................................................36
3.8.
Tin nhắn....................................................................................................37
3.9.
Tấn công...................................................................................................37
Chương 4 Những vấn đề xử lý game tại client........................................................38
4.1.
Xử lý đồ họa và tương tác giao diện.........................................................38
4.1.1.
Chuyển đổi qua lại giữa các màn hình giao diện trong game. 38
vii
4.1.2.
Hiệu ứng chuyển trang trong ứng dụng nhiều trang trong game
41
4.1.3.
Hỗ trợ giao diện đa ngôn ngữ trong game43
4.1.4.
Hiệu ứng xoay vòng dạng băng chuyền trong game
44
4.1.5.
Các hiệu ứng với các đối tượng riêng lẻ trong game
46
4.2.
Các vấn đề quá trình xử lý trong game tại client.......................................49
4.2.1.
Xây dựng game có cấu trúc linh động
4.2.2.
Bảo mật thông tin tài khoản người dùng trong game
4.2.3.
Tối ưu hóa trong xử lý hỗ trợ đa ngôn ngữ trong game 51
4.2.4.
Tối ưu hóa trong quá trình nạp hình ảnh từ server
4.2.5.
Truyền nhận dữ liệu giữa client và server 52
4.2.6.
Lưu giữ trạng thái chương trình tại client 54
4.3.
49
50
52
Âm thanh trong game................................................................................55
Chương 5 Một số vấn đề xử lý trong game tại Server.............................................57
5.1.
Một số vấn đề về xử lí...............................................................................57
5.1.1.
Serialize đối tượng trong WCF service
57
5.1.2.
Phương thức mở rộng cho các đối tượng dựng sẵn
58
5.2.
Cách tổ chức dữ liệu.................................................................................59
5.3.
Mô hình sự kiện tại server.........................................................................60
5.3.1.
Mô hình xử lí sự kiện
60
5.3.2.
Lưu trữ sự kiện trong cơ sở dữ liệu
5.3.3.
Chương trình quản lí các bộ giám sát sự kiện
61
63
Chương 6 Kiến trúc hệ thống..................................................................................64
viii
6.1.
Kiến trúc client..........................................................................................64
6.2.
Kiến trúc server.........................................................................................64
6.3.
Sơ đồ phối hợp client và server.................................................................66
6.4.
Tổ chức dữ liệu.........................................................................................66
6.4.1.
Cơ sở dữ liệu 66
6.4.2.
Cấu hình và các prototype 70
6.5.
GameEditor...............................................................................................73
Chương 7 Kết luận..................................................................................................75
7.1.
Các kết quả đạt được.................................................................................75
7.2.
Hướng phát triển của đề tài.......................................................................75
ix
DANH MỤC HÌNH
Hình 1.1. Cơ chế làm việc đồng bộ và bất đồng bộ...................................................4
Hình 1.2. Mô hình xử lí AJAX..................................................................................5
Hình 1.3. Nền tảng công nghệ RIA của Adobe.........................................................7
Hình 1.4. Sản phảm được xây dựng với Adobe AIR.................................................8
Hình 1.5. Nền tảng công nghệ RIA của Java FX.......................................................9
Hình 1.6. Nền tảng công nghệ RIA của Silverlight.................................................10
Hình 1.7. Kiến trúc chính của Silverlight 2.............................................................11
Hình 2.1. Giao diện chính của game Evony............................................................16
Hình 2.2. Trạng thái chiến đấu trong game duels....................................................16
Hình 2.3. Mô hình chuyển giao dữ liệu từ client sang server..................................17
Hình 2.4. Xây dựng trong game Tribalwars............................................................19
Hình 2.5. Ví trị các thành phố thay đổi thông qua map mới....................................21
Hình 2.6. Bản đồ thế giới trong game Second Home...............................................22
Hình 2.7. Vùng đất để xây dựng các loại nhà trong game travian...........................22
Hình 2.8. Hình ảnh thể hiện các mỏ tài nguyên của 1 tài khoản..............................23
Hình 2.9. Giao diện tạo lính bộ binh trong game Ikariam........................................24
Hình 2.10. Công trình kiểm lâm giúp tăng năng suất gỗ sau mỗi lần nâng cấp.......27
Hình 2.11. Quan hệ ngoại giao................................................................................27
Hình 3.1. Hình ảnh trung tâm xây dựng với các khu xây dựng...............................30
Hình 3.2. Hình ành giao diện của 1 citytrong game.................................................32
Hình 4.1 : Các loại theming shiny control...............................................................47
Hình 4.2 Hiệu ứng ảnh trong silverlight FX............................................................48
x
Hình 5.1 : Mô hình xử lý Event...............................................................................60
Hình 6.1 Kiến trúc client.......................................................................................64
Hình 6.2 Thành phần chứa các trang web...............................................................65
Hình 6.3 Thành phần quản lí các sự kiện................................................................65
Hình 6.4 : Sơ đồ phối hợp client và server..............................................................66
Hình 6.5. Giao diện chính của game editor..............................................................73
Hình 6.6. Màn hình editor cho unit..........................................................................74
xi
DANH MỤC BẢNG
Bảng 1-1. Danh sách các phiên bản ra đời của công nghệ silverlight......................11
Bảng 1-2. Bảng so sánh các giải pháp RIA.............................................................12
Bảng 2-1. Bảng thể hiện sự phụ thuộc vào năng suất và số dân đưa vào các mỏ.....24
Bảng 3-1. Bảng các tài nguyên và nhà khai thác tương ứng....................................31
Bảng 3-2 Bảng mô tả khả năng của bộ binh Người Ném Đá...................................35
Bảng 3-3 Bảng mô tà khả năng của thủy quân Ram-Ship........................................35
Bảng 3-4 Danh sách các loại lính...........................................................................36
xii
TÓM TẮT KHÓA LUẬN
Sự bùng nổ của khoa học máy tính đã dẫn đến sự phát triển vượt bậc của game chơi
trên máy tính cả về số lượng lẫn chất lượng. Khi mạng máy tính ra đời đã làm xuất
hiện một thể loại game mới là game online. Có hai cách để chơi game online: tải về
bản cài đặt từ nhà sản xuất hoặc chơi thông qua trình duyệt web. Ưu điểm của game
chơi thông qua trình duyệt web là có thể được chơi ở bất cứ đâu miễn là có trình
duyệt và kết nối internet. Vì vậy, game chơi thông qua trình duyệt web đang trở nên
rất phổ biến hiện nay.
Nội dung của đề tài tập trung vào việc nghiên cứu và phát triển game trên trình
duyệt web với Silverlight. Silverlight là một công nghệ mới được Microsoft giới
thiệu vào năm 2007 cho phép xây dựng các ứng dụng chạy trên trình duyệt hỗ trợ
multimedia và tính tương tác cao. Sử dụng Silverlight để phát triển game, ta có thể
mang đến cho người dùng những trải nghiệm mới thú vị hơn so với khi chơi game
trên nền web cũ như các hiệu ứng về âm thanh, hoạt hình… Sau khi đã tìm hiểu các
vấn đề về kĩ thuật và giải pháp để phát triển game trên nền web, chúng em sẽ xây
dựng một game ứng dụng công nghệ Silverlight sau đó phát triển một công cụ cho
phép hiệu chỉnh dựa trên game đã có sẵn và từ đó phát sinh ra một game mới với
cùng phong cách và quy luật chơi.
Nội dung của khóa luận bao gồm:
Chương 1: Mở đầu
Chương 2: Game xây dựng, chiến thuật và đặc điểm của game trên trình duyệt
Chương 3: Mô tả game được phát triển MyIka
Chương 4: Các vấn đề xử lí tại client
Chương 5: Các vấn đề xử lí tại server
Chương 6: Kiến trúc hệ thống
Chương 7: Kết luận & hướng phát triển
xiii
Chương 1
Mở đầu
Nội dung của chương 1 trình bày tổng quan về quá trình phát triển
game nói chung và sự phát triển của game trên trình duyệt, qua đó giới
thiệu về công nghệ RIA được sử dụng để xây dựng game đồng thời nêu
lên mục tiêu, nội dung và ý nghĩa của đề tài.
Tổng quan
1.1.1.
Tổng quan về quá trình phát triển của các thế hệ video game
Sự bùng nổ của khoa học máy tính dẫn đến sự phát triển vượt bậc của video game
như hiện nay. Video game phát triển qua 7 thời kỳ từ năm 1971 đến nay, tuy nhiên
đã manh nha phát triển từ thập niên 1950. Những năm 1970 của giai đoạn đầu phát
triển, video game được ứng dụng trên các hệ thống máy giả lập, hình ảnh thể hiện
chỉ dưới dạng văn bản, chưa có ứng dụng gì về đồ họa, cách thức chơi hầu hết các
game đều là theo lượt. Mãi đến những năm 1980, đây là thời kỳ phát triển mạnh của
thế hệ máy tính cùng với sự xuất hiện của các hãng máy tính nổi tiếng như Apple,
IBM…. Video game mới thực sự phát triển về khả năng đồ họa, thể loại, một số
game dưới dạng nhập vai đã xuất hiện. Cũng trong thời gian này game online cũng
bắt đầu hình thành.
Game online được biết nhiều thông qua cái tên MMORPG (Massively multiplayer
online role-playing game), là loại game nhập vai, với 1 số lượng lớn người dùng
cùng tương tác với nhau trong 1 thế giới ảo của game, có thể nói rằng “1 số lượng
lớn các máy client tương tác với nhau thông qua 1 máy chủ server”, tuy nhiên vẫn
còn hạn chế về khả năng tương tác và giao diện, do chủ yếu là văn bản (text-based)
trước năm 1987. Trong thời kì này các thiết bị game cầm tay cũng đã bắt đầu xuất
hiện với dòng máy của Nintendo.
1
Những năm 1990 là thời kỳ phát triển mạnh mẽ của video game trên máy tính.
Hàng loạt các game kinh điển ra đời như:
- Thể loại Real Time Stragegy (RTS): The Sims, Age of Empires, StarCraft,
Warcraft…,
- Thể loại Third Person Shooter (TPS): Grand Theft Auto III, Tom Clancy's
Splinter Cell, Enter the Matrix, Hitman…
Riêng về các game online có sự xuất hiện của UltimaOnline và EverQuest. Trong
thời gian này bắt đầu xuất hiện các game trên trình duyệt (Browser game) đơn giản
được plug in vào trình duyệt viết bằng Adobe Flash hay Java.
1.1.2.
Tổng quan về game trên trình duyệt
Game trên trình duyệt là video game được chơi trực tiếp trên trình duyệt web. Khác
với các loại video game trên máy tính khác là nó không cần cài đặt phần mềm của
game trước khi chơi, đó là những loại game dựa trên các kĩ thuật client-side như
javascript hay các plugin vào trình duyệt như java hay Adobe Flash. Tuy vậy cũng
có một số game có dùng sử dụng các ngôn ngữ script để xử lý tại server.
Javascript – based game: Với sự phát triển của kĩ thuật Document Model
Object Level 2 vào năm 1990, dẫn đến sự phát triển các loại game chạy trên trình
duyệt mà không cần đến phần mềm thứ 3 plug-in vào. Những game này là sự kết
hợp giữa CSS, JavaScript, DOM HTML và DHTML. DHTML có thể tạo ra các
hiệu ứng hoạt hình (animation) trông như trong các game hành động. Sau này do có
tương tác nhiều giữa client và server nên kĩ thuật Ajax cũng được kết hợp để phát
triển các game loại hình này.
Plugin – based game: là các game cần 1 phần mềm thứ 3 plugin vào để có thể
chơi được. Ngoài các plugin nêu trên hiện nay còn có nhiều loại khác như:
Shockware, Unity và Silverlight, nên vấn đề đặt ra là sự tương thích trên trình
duyệt với các plug in này.
Server – side game: Hầu hết các game trên trình duyệt hiện nay đều dưới
2
dạng hình thức game này. Tất cả tính toán và xử lý trên server được thực hiện dưới
các ngôn ngữ script như: PHP, ASP, Ruby, Perl, Python và Java. Sau khi tính toán
server chỉ việc gửi kết quả trả về cho client dưới dạng HTML.
Đa số tất cả các game trên trình duyệt đều được viết trên nền tảng văn bản là chủ
yếu. Các game đơn thuần được tính toán trả về cho người chơi đa số là chữ, rất ít có
tương tác nhiều với game, giao diện rất đơn sơ, nên khi nhắc đến game trên trình
duyệt là ta thường nghĩ đến text-based game. Và đây cũng là 1 trong những mục
tiêu của luận văn này mà chúng em muốn làm cho game trên trình duyệt trở nên
sinh động hơn dưới sự hỗ trợ của công nghệ RIA tại Client và mọi xử lý đa phần
đều thông qua Server.
Rich Internet Application - RIA
1.2.1.
Tổng quan về RIA
Đặt vấn đề
Như chúng ta đã biết, mô hình ứng dụng dựa trên web truyền thống theo kiến trúc
máy khách - chủ (client-server) với trình ứng dụng chạy trên máy tính của người
dùng thì mọi tác vụ xử lý thực hiện trên server, còn client chỉ có vai trò hiển thị nội
dung tĩnh (HTML). Hạn chế lớn nhất của kiến trúc này là mọi tương tác với ứng
dụng đều phải gởi yêu cầu dữ liệu đến server, server xử lý và phản hồi, phía client
nạp lại trang web với thông tin cập nhật – chu trình đồng bộ này làm cho các ứng
dụng web tương tác với người dùng chậm hơn nhiều so với các ứng dụng desktop
được cài đặt và chạy trên máy tính người dùng.
Giải pháp
Vấn đề đặt ra là cần chia sẻ quá trình xử lý trên server, giúp đồng bộ tương tác
client và server ngày càng nhanh hơn và đạt được đến ngưỡng xử lý của 1 ứng
dụng trên desktop.
3
“Java applet” là bước đi đầu tiên nhằm cải thiện tốc độ đáp ứng của các ứng dụng
web. Applet có khả năng thực hiện nhiều tác vụ phức tạp phía client nhưng ứng
dụng Java (phía client) chạy chậm và làm việc không ổn định trên các hệ điều hành
khác nhau.
Tiếp theo, Netscape và Microsoft đưa ra “plug-in” và “ActiveX Control” mở rộng
trình duyệt web, cho phép bổ sung nhiều tính năng phía client. Thế nhưng, người
dùng tỏ ra do dự trong việc cài đặt các phần bổ sung này (bảo mật là một trong
nhiều lý do), và đến nay, ngoại trừ Flash Player và Java Runtime Environment
(JRE), không có thành phần bổ sung trình duyệt được cài đặt rộng rãi.
Sau đó, AJAX (Asynchronous JavaScript And XML) xuất hiện, cho phép việc trao
đổi giữa client và server diễn ra không theo quy trình đồng bộ thông thường mà là
làm việc theo cơ chế bất đồng bộ, tương tác giữa người dùng và ứng dụng web
không bị ngắt quãng bởi việc nạp lại trang web mỗi khi yêu cầu server xử lý, làm
giảm thiểu dữ liệu truyền tải qua lại trên đường truyền và gây khó chịu đối với
người sử dụng.
Hình 1.1. Cơ chế làm việc đồng bộ và bất đồng bộ
4
- Xem thêm -