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 gametrên nền web cũ như các hiệu ứng về âm thanh, hoạt hình…
Trang 1TRƯỜ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
Trang 2TP.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
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
Trang 3NIÊN KHÓA 2005 – 2009
Trang 4NHẬ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
Trang 5NHẬ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
Trang 6LỜ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ọcKhoa 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ốtnghiệ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ướngdẫ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ìnhgiảng dạy, trang bị cho chúng em những kiến thức quí báu trong những năm họcvừ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ốtthờ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 chophé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ảmthô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ệnHầu Nguyễn Thành Nam & Trần Duy Quang
Trang 7ĐỀ 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àibao 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ínhtươ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âydự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ôngtin trong trò chơi (ví dụ công trình, quân lính, kỹ thuật…) và các tài nguyênhì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:
Trang 8- 02/01/2009 đến 14/1/2009: Tìm hiểu về Rich Internet Application và côngnghệ 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âydự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ênnề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ệuchỉ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 sinhgame
- 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
Trang 9MỤ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 2 1.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 15 2.2.2 Tất cả xử lý hầu hết đều được thực hiện tại server 17 2.2.3 Hạn chế xử lý tất cả các hành động đồng thời 18 2.2.4 Game được hỗ trợ đa ngôn ngữ 20 2.2.5 Game được xây dựng với cấu trúc rất linh động 20 2.3 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 22
2.3.3 Tài nguyên 23
Trang 102.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 25
2.3.6 Nâng cao năng suất khai thác các loại tài nguyên 26
2.3.7 Quan hệ ngoại giao và hệ thống liên minh 27
2.3.8 Vận chuyển hàng hóa và giao thương 28
2.3.9 Mở rộng lãnh thổ 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 33 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 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
Trang 114.1.2 Hiệu ứng chuyển trang trong ứng dụng nhiều trang trong game41
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 494.2.1 Xây dựng game có cấu trúc linh động 49
4.2.2 Bảo mật thông tin tài khoản người dùng trong game 50
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 52
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 Âm thanh trong game 55Chương 5 Một số vấn đề xử lý trong game tại Server 575.1 Một số vấn đề về xử lí 575.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 595.3 Mô hình sự kiện tại server 605.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 61
5.3.3 Chương trình quản lí các bộ giám sát sự kiện 63
Chương 6 Kiến trúc hệ thống 64
Trang 126.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
Trang 13DANH 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
Trang 14Hì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
Trang 15DANH 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
Trang 16TÓ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ơitrê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ấthiệ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 gamechơi thông qua trình duyệt web là có thể được chơi ở bất cứ đâu miễn là có trìnhduyệt và kết nối internet Vì vậy, game chơi thông qua trình duyệt web đang trở nênrấ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 gametrê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ácvấ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âydựng một game ứng dụng công nghệ Silverlight sau đó phát triển một công cụ chophé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ớicù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
Trang 17Chươ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.
1.1 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 gamenhư 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áttriển, video game được ứng dụng trên các hệ thống máy giả lập, hình ảnh thể hiệnchỉ 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ácgame đề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ủathế 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ũngbắt đầu hình thành
Game online được biết nhiều thông qua cái tên MMORPG (Massively multiplayeronline role-playing game), là loại game nhập vai, với 1 số lượng lớn người dùngcù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ượnglớ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ẫncò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ấthiện với dòng máy của Nintendo
Trang 18Nhữ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'sSplinter Cell, Enter the Matrix, Hitman…
Riêng về các game online có sự xuất hiện của UltimaOnline và EverQuest Trongthờ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ácvớ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ủagame 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áchiệ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áttriể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
Trang 19dạ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ướicác ngôn ngữ script như: PHP, ASP, Ruby, Perl, Python và Java Sau khi tính toánserver 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ìnhduyệt là ta thường nghĩ đến text-based game Và đây cũng là 1 trong những mụctiê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ênsinh độ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
1.2 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úcmáy khách - chủ (client-server) với trình ứng dụng chạy trên máy tính của ngườidù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ộidung 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 ứngdụ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 clientnạ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 ứngdụ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ácclient và server ngày càng nhanh hơn và đạt được đến ngưỡng xử lý của 1 ứngdụng trên desktop
“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
Trang 20dụ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ànhkhác nhau.
Tiếp theo, Netscape và Microsoft đưa ra “plug-in” và “ActiveX Control” mở rộngtrình duyệt web, cho phép bổ sung nhiều tính năng phía client Thế nhưng, ngườidù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 trongnhiề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 webkhô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àmgiả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ớingười sử dụng
Hình 1.1 Cơ chế làm việc đồng bộ và bất đồng bộ
(Nguồn http://www.infragistics.com/ajax/ajax_oper.gif )
Trang 21AJAX dựa trên những nền tảng sẵn có
(JavaScript, Document Object Model
Level 2, Cascading Style Sheets
(CSS) ) được hầu hết trình duyệt hỗ
trợ nên không yêu cầu cài đặt thêm
bất cứ gì ở client và các nhà phát triển
đều có thể dễ dàng vận dụng, AJAX
đã nhanh chóng thống lĩnh thế giới
Web 2.0 – thế hệ web tiện lợi hơn, có
tính tương tác cao hơn thế hệ web
Tuy nhiên với những ưu điểm nói trên thì Ajax cũng có những khuyết điểm riêng nónhư các vấn đề về bảo mật, bookmark và thích nghi với các trình duyệt
Dẫn đến sự ra đời của Rich Internet Application (RIA)
Trang 22Các ứng dụng RIA mạnh cả về tính năng và giao diện người dùng RIA đượcMacromedia giới thiệu lần đầu tiên trong một tài liệu vào tháng 3/2002 Tuy ra đờitrước cả Ajax nhưng mãi đến gần đây mới được chú ý nhờ những cái tên nổi bật làFlex và AIR của Adobe, Silverlight của Microsoft, JavaFX của Sun Microsystems.
1.2.2 RIA và các giải pháp
Định nghĩa
RIA là từ viết tắt của Rich Internet Application hay Rich Interaction Application(theo định nghĩa của Microsoft) RIA là những ứng dụng web mang đặc tính vàchức năng của những ứng dụng desktop truyền thống Các xử lý giao diện ngườidùng sẽ được thực hiện tại máy client trong khi các xử lý liên quan đến dữ liệu sẽđược thực thi trên server
Các giải pháp
Giải pháp Flash, Flex Và Air của Adobe
Adobe Systems là hãng lớn nhất và trưởng thành nhất trong lĩnh vực RIA Mua lạiMacromedia cách đây 3 năm (tháng 4/2005), Adobe đi từ Shockwave đến Flash,Flex và AIR (tên gọi ban đầu là Apollo)
Flash là công nghệ thể hiện nổi tiếng về khả năng xử lý đồ họa vector và ảnh động,cho phép tạo nội dung đa phương tiện tương tác với người dùng thông quaActionScript, hầu hết các trang web hiện này đều sử dụng flash Flex dựa trên Flash,dùng ngôn ngữ khai báo dựa trên XML đó là MXML kết hợp với ActionScript,cung cấp sự tách biệt giữa phần giao diện người dùng và phần luận lý ứng dụng rõràng hơn so với Flash Ứng dụng Flex được biên dịch thành file.swf và chạy vớiFlash Player - chạy trên bất kỳ hệ thống nào hỗ trợ Flash, có khả năng chạy trên cảthiết bị di động (với Flash Lite)
Trang 23Hình 1.3 Nền tảng công nghệ RIA của Adobe
(Nguồn: http://www.adobe.com/devnet/actionscript/articles/atp_ria_guide.html )
Flash là công nghệ thể hiện nổi tiếng về khả năng xử lý đồ họa vector và ảnh động,cho phép tạo nội dung đa phương tiện tương tác với người dùng thông quaActionScript, hầu hết các trang web hiện này đều sử dụng flash Flex dựa trên Flash,dùng ngôn ngữ khai báo dựa trên XML đó là MXML kết hợp với ActionScript,cung cấp sự tách biệt giữa phần giao diện người dùng và phần luận lý ứng dụng rõràng hơn so với Flash Ứng dụng Flex được biên dịch thành file.swf và chạy vớiFlash Player - chạy trên bất kỳ hệ thống nào hỗ trợ Flash, có khả năng chạy trên cảthiết bị di động (với Flash Lite)
Ứng dụng Flash/Flex cũng có thể chạy trên desktop với thư viện thực thi AIR.AIR (Adobe Intergrated Runtime) là công nghệ triển khai để chạy các ứngdụng Flash/Flex và cả AJAX Là một phần trong bộ công cụ phát triển, Adobe cũngđưa ra AIR SDK AIR SDK có đầy đủ các công cụ cần thiết
để tạo nên những ứng dụng AIR AIR chạy cả trên Windows và Mac (phiên bảnchạy trên Linux đang trong quá trình thử nghiệm)
Trang 24Hình 1.4 Sản phảm được xây dựng với Adobe AIR
(Nguồn: http://get.adobe.com/air/?promoid=BUIGQ )
Giải Pháp Java FX của Sun
Với các công cụ như AWT, Swing, và Eclipse RCP Gần đây, Javascript sử dụngXMLHttpRequest để thay thế applets, Iframe JavaFX (tên mã F3) được xây dựngdựa trên nền tảng công nghệ Java, bao gồm 2 phần là JavaFX Script và JavaMobile JavaFX Script là ngôn ngữ khai báo không dựa trên XML giúp bớt đi gánhnặng xây dựng giao diện người dùng vốn trước đây yêu cầu khá nhiều mã lệnhSwing JavaFX Script phải biên dịch thành Java byte code để chạy trên máy ảo JavaJVM Trong khi đó JavaFX Mobile là hệ điều hành được thiết kế để triển khai ứngdụng RIA trên các thiết bị di động
Hỗ trợ về mặt phát triển của JavaFX khá khiêm tốn, chủ yếu gồm thư việnOpenJFX cho NetBeans, cung cấp hỗ trợ cơ bản cho việc tạo và biên dịch mã lệnhJavaFX NetBeans hiện là môi trường phát triển tích hợp IDE duy nhất hỗ trợJavaFX Có hai công cụ của hãng thứ ba hỗ trợ phần hiển thị trong JavaFX Thứnhất là công cụ soạn thảo JavaFXPad cho phép viết mã lệnh JavaFX và nhìn thấykết quả hiển thị trong một cửa sổ xem trước, nhưng không cung cấp bất kỳ hỗ trợkéo-thả nào cho các phần tử trên màn hình Thứ hai là công cụ đồ hoạ JFXBuildercủa ReportMill cung cấp giao diện kéo-thả cho việc xây dựng giao diện người dùng
Là ngôn ngữ khai báo không dựa trên xml, mã lệnh JavaFX giống như sự trộn lẫngiữa Java và CSS
Trang 25Hình 1.5 Nền tảng công nghệ RIA của Java FX
( Nguồn www.canoo.com/blog/index.php?s=pownce )
Mã lệnh JavaFX nhất thiết phải biên dịch thành Java byte code và chạy trên máy ảoJava (JVM) như các Java applet thông thường, không yêu cầu thư viện bổ sungtrình duyệt nào khác Miễn là hệ thống có JVM là có thể chạy JavaFX Mac OS cótích hợp sẵn JVM, vì vậy không cần tải về thêm bất kỳ thứ gì để chạy JavaFX trênMac Trên các hệ thống Windows, cả Firefox và IE đều hiển thị thông báo nếu chưacài JVM Firefox sau đó đưa ra một thư viện để giúp cài đặt JVM, còn IE chuyểnhướng đến một trang web có các hướng dẫn để người dùng tải về và cài đặt JVMthủ công
Giải pháp WCF của Microsoft
Windows Presentation Foundation (WPF) sử dụng.NET framework 3.0 và 3.5.WPF là một tập hợp các công cụ để xây dựng các ứng dụng RIA trên nền Windows.WPF sử dụng ngôn ngữ đánh dấu XAML để xây dựng giao diện và ngôn ngữ lậptrình.NET
Silverlight là tập con của WPF và cũng sử dụng XAML (eXtensible ApplicationMarkup Language) XAML là ngôn ngữ khai báo dựa trên xml để định nghĩa giaodiện người dùng XAML bao gồm đồ hoạ vector, hiệu ứng động và tương tác dữliệu trong giao diện Các tác vụ xử lý phức tạp được tách khỏi định nghĩa giao diện
Trang 26người dùng và có thể viết với mã lệnh được quản lý (managed code) bằng các ngônngữ.NET, JavaScript, Python và Ruby.
Silverlight yêu cầu cài đặt thư viện bổ sung trình duyệt để thực thi phía client Hiệntại ứng dụng Silverlight có thể chạy với trình duyệt Internet Explorer và Firefox trênWindows, Safari và Firefox trên Mac OS X, chưa hỗ trợ trình duyệt nào trên Linuxtuy nhiên hiện đã có dự án nguồn mở Moonlight cho phép chạy ứng dụngSilverlight trên Linux Hỗ trợ cho thiết bị di động, Microsoft có Silverlight forMobile chạy trên hệ điều hành Nokia S60 và Windows Mobile 6
Trang 27lớp riêng Với.NET CLR (Common Language Runtime) trong trình duyệt, mã lệnhđược quản lý sẽ được biên dịch thành nhị phân trên client và chạy cực nhanh Mãlệnh được quản lý có trong nhiều ngôn ngữ, ứng dụng Silverlight có thể viết bằngC#, VB, IronPython và IronRuby Với khả năng hỗ trợ thêm nhiều ngôn ngữ nữa,Silverlight sẽ hấp dẫn nhiều nhà phát triển với nhiều nền tảng khác nhau.
Hình 1.7 Kiến trúc chính của Silverlight 2
Hiện nay Silverlight đã ra đời phiên bản mới nhất là 3.0 Vào tháng 12 năm
2006 phiên bản đầu tiên 1.0 CTP (comunication technique preview) ra đời đánh dấu
sự khởi đầu phát triển của công nghệ này, mãi cho đến tháng 2 năm 2009 thìsilverlight 2 mới chính thức ra đời với sự bổ sung nhiều chức năng chưa được xâydựng trong Silverlight 1.0
Trang 28 Bảng so sánh các giải pháp RIA
Eclipse hay NetBean JavaFX plug-inChi phí cho
JavaFX Script, Java
Plug – in Adobe Flash Player 10 Silverlight 3.0 Beta 1 Runtime Java Plug-in with JavaFX extensionDung lượng
1.3 Mục tiêu của luận văn
Mục tiêu của đề tài nhằm nghiên cứu và xây dựng thử nghiệm game trên trình duyệtweb thuộc thể loại xây dựng và chiến thuật với công nghệ Silverlight Game đượcxây dựng hướng đến khả năng tùy biến cao, cho phép thay đổi/bổ sung thông tintrong game cũng như các tài nguyên đồ họa để có thể mở rộng trò chơi cũng như tạo
ra các game khác nhau cùng thể loại, phong cách và quy luật trò chơi
Nội dung chính của đề tài bao gồm:
Khảo sát các đặc điểm chung thường gặp của game trên trình duyệt, từ đó đềxuất các khái niệm và quy luật cho một họ game online theo thể loại xây dựng
và chiến thuật trên trình duyệt web
Nghiên cứu các kĩ thuật phát triển ứng dụng web hỗ trợ multimedia và có tínhtương tác cao với công nghệ Silverlight
Trang 29Tìm hiểu về nền tảng của Silverlight như nạp resource, tạo layout, xử lý sựkiện… và cách sử dụng Expression Blend để tùy chỉnh giao diện
Tìm hiểu về 1 số công cụ khác tùy chỉnh giao diện cho Silverlight, tạo hiệuứng cho ứng dụng
Tìm hiểu về LINQ
Tìm hiểu về WCF service cho các ứng dụng Silverlight
Phát triển game trên trình duyệt theo thể loại xây dựng và chiến thuật đã đề xuấtvớ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 (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…
Tìm hiểu các đặc điểm chung của game trên trình duyệt theo thể loại xâydựng và chiến thuật
Xây dựng mô hình chung dưới dạng 3 module phân biệt:
- Tầng giao diện (client)
- Tầng xử lý và tương tác cơ sở dữ liệu (server)
- Tầng chuyên xử lý tất cả các Event được phát ra bởi người chơi đồng thờitruy xuất và xử lý các Event theo thời gian
Xây dựng công cụ (game editor) để thực hiện bổ sung / thay đổi các thông tintrong trò chơi 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, ngoài ra với công cụ này ta còn có thể tạo ra 1 game có cùngphong cách chơi, nguyên tắc xử lý, nhưng tài nguyên hình ảnh được thay đổi.Tất cả những gì chung đều được tách ra và lưu trữ dưới dạng XML làm giảmthiểu xử lý trên server như: UnitPrototype, BuildingPrototype, ResourcePrototype, CityPrototype, TechnologyPrototype
Xây dựng 1 chương trình editor cho phép người dùng tương tác với tất cả fileXML này
Xây dựng 1 game trên trình duyệt khác có khả năng chơi được với các chứcnăng cơ bản của thể loại game xây dựng và chiến thuật
Trang 301.4 Nội dung báo cáo khóa luận
Chương 1: Trình bày tổng quan về quá trình phát triển game nói chung dẫn đến sự
phát triển của game trên trình duyệt, đồng thời giới thiệu về công nghệ RIA được sửdụng để xây dựng game, kết thúc chương là mục đích nội dung và ý nghĩa của đề tàinghiên cứu và xây dựng
Chương 2: giới thiệu một số những đặc điểm chung thường gặp của game xây
dựng, chiến thuật, đồng thời trình bày những đặc điểm mà game trên trình duyệtthường có để rồi từ đó chúng em đưa ra 1 số đặc điểm riêng cho game trên trình
duyệt mang tính chất xây dựng và chiến thuật của mình.
Chương 3: giới thiệu chi tiết về game sẽ xây dựng từ những đặc điểm trong một số
game trên trình duyệt dàn trận mà chúng em khái quát lên, chi tiết cụ thể về gamebao gồm mô tả về cách chơi, các loại hình trong game và các quy luật tương ứng
Chương 4: trình bày về tất cả những vấn đề gặp phải trong quá trình thiết kế giao
diện, xây dựng kiến trúc và các quá trình xử lý logic trong game chúng em xâydựng và đưa ra các giải pháp kỹ thuật có thể mà chúng em có thể ứng dụng để giảiquyết các vấn đề này
Chương 5: trình bày các vấn đề gặp phải trong việc xử lí ở phía server cũng như
đưa ra các giải pháp để giải quyết
Chương 6: trình bày kiến trúc tổng thể của hệ thống.
Chương 7: trình bày các kết quả đạt được và hướng phát triển của hệ thống.
Như vậy, qua chương này chúng em đã nói lên được và khái quát được vấn đề
mà đề tài chúng em muốn xây dựng, đó là 1 game trên nền web Để xây dựng loại game này chúng em cần có sự hỗ trợ của RIA, trong số nhiều giải pháp được đưa
ra, chúng em đã chọn silverlight để phát triển ứng dụng và cuối cùng là danh sách những vấn đề mà chúng em đã trải qua khi xây dựng nên 1 game trên trình duyệt Vậy những đặc điểm chung của game trên trình duyệt là gì, đó cũng là nội dung chính trong chương 2
Trang 31Chương 2 Một số đặc điểm chính của game trên trình duyệt
Nội dung của chương 2 phân tích những đặc điểm quy luật chung thường gặp của game trên trình duyệt và từ đó đề xuất ra một số đặc điểm và quy luật chung của một dòng game thuộc thể loại xây dựng và chiến thuật được phát triển trong đề tài này.
2.1 Tổng quan
Các game phổ biến hiện nay thường theo thể loại game xây dựng và chiến thuật hay
ta còn gọi đó là game dàn trận Xây dựng ở đây có nghĩa là xây dựng các loại nhànhư: nhà tạo lính, nhà lấy tài nguyên, nhà nâng cấp… như Warcraft, StartCraft, Age
of Empires, Red Alert hay là xây dựng nên 1 thành phố mới để có thể tiếp tục xâythêm các loại nhà khác như Ikariam, Travian, Evony Chiến thuật có nghĩa là cáchđiều khiển quân sao cho hợp lý nhất, mỗi game có 1 quy luật cũng như các khảnăng đặc biệt cho các loại quân lính của mình để từ đó người chơi tìm cách để khaithác triệt để các nguyên tắc này Để trở nên 1 game thủ tốt trong loại game này cầnđòi hỏi chúng ta phải có hai khả năng là xây dựng tốt và điều khiển quân sự hợp lý
2.2 Phân tích các đặc điểm chung của game trên trình duyệt
2.2.1 Dựa trên văn bản
Phát biểu
Hầu hết các loại game đều được thể hiện dưới dạng text, kết quả trả về cho ngườidùng đơn thuần là văn bản như: kết quả nghiên cứu thành công 1 công trình là gì,kết quả sau khi đánh trận, cướp bóc tài nguyên từ 1 người chơi khác, kết quả củaviệc xây dựng…
Trang 32Hình 2.9 Trạng thái chiến đấu trong game duels
(Nguồn http://www.duels.com/ )
Đây là hình ảnh thể hiện trạng thái chiến đấu của hai nhân vật trong game Kết quảđánh nhau đều được thể hiện dưới dạng text (Hình 2.2 - 1) hai nhân vật chỉ đứng vàtạo tư thế như 1 trận đánh nhau, máu sẽ giảm từ từ đến khi nào 1 nhân vật hết máu(Hình 2.2 - 2)
12
Trang 33 Giải thích
Do hầu hết các game này đều được viết dưới dạng cơ chế client – server dưới sự hỗtrợ của Ajax, HTML và 1 số ngôn ngữ script khác, ở client chỉ đơn thuần là HTMLđược trình duyệt thể hiện lên với sự kết hợp Javascript làm hiệu ứng về thời gian,máu giảm, tài nguyên tăng, giảm
Kết luận
Đây cũng là 1 đặc điểm chung quan trọng của game trên trình duyệt, vì nó khôngcần cài đặt nên dữ liệu download về nhiều hơn so với game online nên không thểhiện được nhiều về đồ họa trong game Đây là lí do mà ta có thể sử dụng RIA đểlàm cho game sinh động hơn
2.2.2 Tất cả xử lý hầu hết đều được thực hiện tại server
Phát biểu
Giống như cơ chế hoạt động của game online, tất cả mọi xử lý đều được chịu tráchnhiệm bởi server, client chỉ đóng vai trò hiển thị lại bất cứ những gì client gửi choServer phải được chứng thực trước khi server bắt đầu thực hiện những yêu cầu màclient gửi lên server dù tại client đã được cài đặt cơ chế kiểm tra trước
được sửa đổi trước
khi gửi đến server
Trang 34 Giải thích
Do cơ chế hoạt động của game nên hầu hết các thao tác đều được xử lý tại servernhư cập nhập cơ sở dữ liệu, xử lý các tình huống từ client, và 1 đặc đểm khá quantrọng đối với loại game này: khi dữ liệu từ client đến server có thể rất dễ bị sửa đổitrước khi đến server, nếu như game được tạo ra chỉ có cơ chế kiểm tra tại client Vìvậy phải có cơ chế kiểm tra hai chiều, đó cũng là 1 trong những cơ chế giúp chochúng ta hạn chế được những lỗi bảo mật trong game Tuy nhiên nó tăng 1 phần nào
Ví dụ: Khi xây nhà client chỉ cần gửi về mã công trình mà mình cần xây,không cần gửi về thời gian để xây được công trình này dù những thông tinnày client được biết trước đó từ server, tại server phải truy cập lại cơ sở dữliệu và lấy lại toàn bộ thông tin của công trình này thông qua mã công trình
- Chứng thực hai bên client và server dữ liệu đưa vào từ client có hợp lệ haykhông
Ví dụ: Khi cho người dân với số lượng maximum vào khai thác thì giai đoạnhiển thị từ client là 1 cơ chế rà soát ở client tuy nhiên khi về server, số lượngdân đưa vào cũng được kiểm tra xem có vượt maximum cho phép haykhông
2.2.3 Hạn chế xử lý tất cả các hành động đồng thời
Phát biểu
Trong các webgame hiện nay vấn đề xử lí đồng thời nhiều yêu cầu từ phía clientđều bị hạn chế với nhiều cách khac nhau, đa số là các hành động diễn ra đều thựchiện trong một khoảng thời gian dài, và khi hành động này kết thúc thì client mớiđược phép tiếp tục gửi yêu cầu xử lý đến server hay hai yêu cầu khác loại từ client
sẽ không được thực hiện đồng thời nếu 1 trong 2 loại yêu cầu này đang được xử lý
Trang 35Hình 2.11 Xây dựng trong game Tribalwars
(Nguồn: http://www.tribalwars.net/register.php )
Giải thích
Nguyên nhân chính là do vấn đề xử lý của server, nếu quá nhiều yêu cầu gửi từclient ứng với 1 tài khoản thì server không thề đáp ứng kịp nếu số lượng người chơingày càng khổng lồ và 1 nguyên nhân khác bắt buộc 1 web game phải thể hiện nhưvậy là do game này có quá ít tương tác như các game dàn trận hay game online vàđây cũng là 1 game chạy trên thời gian thực nên vấn đề kéo dài thời gian để thựchiện 1 thao tác là đều tất yếu
Kết luận
Game chúng em xây dựng lên cũng phải tôn trọng đặc điểm chính nay của 1 gametrên trình duyệt, có thể nói đây là 1 vấn đề trung tâm mà 1 web game phải thực hiện
Trang 362.2.4 Game được hỗ trợ đa ngôn ngữ
Phát biểu
Trong lĩnh vực vể web, đa ngôn ngữ là 1 vấn đề quan trọng cần được hỗ trợ, khicác game hay trang web muốn được phát triển trên nhiều nước khác nhau và đó làmục tiêu của người xây dựng nên các ứng dụng web
Giải thích
Do các game được xây dựng nên đều muốn được triển khai trên nhiều quốc gia, cácserver của game được đặt tại nhiều quốc gia khác nhau, do đó các game trên trìnhduyệt thường hướng đến tính năng cho phép hỗ trợ thể hiện đa ngôn ngữ Ví dụ nhưgame ikariam hỗ trợ rất nhiều ngôn ngữ như tiếng Tây Ban Nha, tiếng Anh, tiếngPháp…
Kết luận
Như vậy có thể nói việc hỗ trợ đa ngôn ngữ là vấn đề mà game của chúng em phảiđáp ứng khi xây dựng nên, đây là 1 yêu cầu lớn khi game chúng em xây dựng nếumuốn triển khai, phát triển mạnh trong thực tế
2.2.5 Game được xây dựng với cấu trúc rất linh động
Phát biểu
Các game trên trình duyệt trước khi được triển khai chính thức thường phảithông qua nhiều phiên bản thử nghiệm, do đó để có thể thay đổi cấu trúc của game,quy luật trong game thì đòi hỏi game được xây dựng có tính linh động rất cao
Giải thích
Trong tất cả các game khi được xây dựng nên đều qua giai đoạn beta, trong giai đọanày cuãn là quá trình thử nghiệm trong game, do đó khi xây dựng nên loại game nàyyêu cầu phải có 1 kiến trúc linh động để tiện lợi trong việc sửa đổi các chức năngtrong game 1 cách nhanh chóng
Trang 37 Ví dụ
Trong game Ikariam ứng với phiên bản 0.30 được nâng cấp lên từ 0.28, với phiênbản này danh sách nhiều loại công trình được bổ sung thêm, khả năng của các loạiunit đều được thay đổi, tài nguyên cần thiết để xây dựng cũng như công trình đềuđược thay đổi, phiên bản mới nhất hiện nay 0.32 ra đời lại được bổ sung thêm chứcnăng hủy công trình, thay đổi các giao diện trong nhiều màn hình giao diện
Hình 2.12 Ví trị các thành phố thay đổi thông qua map mới
(trái version 0.30 phải version 0.32)
(Nguồn http://s3.ikariam.vn/index.php?view=island&id=671 )
Kết luận
Do mục tiêu trong khóa luận này chúng em phải xây dựng nên 1 game khác tương
tự với game đã xây dựng hay còn gọi là framework game, do đó đặc điểm nàychúng em rất tôn trọng khi xây dựng nên game MyIka, chi tiết về game nầy chúng
em sẽ mô tả chi tiết trong chương 3
2.3 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
Dựa trên cơ sở tìm hiểu các game trên trình duyệt, chúng em đề xuất các khái niệm
và quy luật chung của một dòng game xây dựng chiến thuật trên trình duyệt Từ đó,chúng em xây dựng một game cụ thể (MyIka) được trình bày trong chương 3
2.3.1 Thế giới ảo
Mỗi game đều xây dựng sẵn cho người chơi 1 thế giới ảo với mỗi gamer là một
Trang 38thành phần quản lý 1 nơi nào đó trong thế giới này, có thể thế giới đó bao gồmnhiều hành tinh, nhiều quần đảo nhỏ (Ikariam), nhiều làng mạc (Travian), nhiều lụcđịa lớn (Second Home).
Trong những khu đất lớn này lại có các thành phố hay làng mạc để chúng ta có thểphát triển cho riêng mình, trong khu vực này có rất nhiều khu đất trống cũng nhưnhiều loại tài nguyên mà có khả năng khai thác được để có thể phát triển
Hình 2.13 Bản đồ thế giới trong game Second Home
Trang 39Trong khu này có rất nhiều vùng đất (Hình 2.6 - 1) để xây dựng các loại nhà và tạimột thời điểm chỉ có thể có một công trình được xây dựng hay nâng cấp với cácđiều kiện tiên quyết
2.3.3 Tài nguyên
Đối với web brower game thì tài nguyên tăng tự nhiên theo thời gian và phụ thuộc
và số lượng dân tham gia vào quá trình lấy tài nguyên cũng như cấp độ của các mỏkhai thác tương ứng
Hình 2.15 Hình ảnh thể hiện các mỏ tài nguyên của 1 tài khoản
(Nguồn: https://epirus.second-home.org/Index2.php )
Danh sách các tài nguyên thường được sử dụng trong nhiều game như gỗ, vàng, đá,thịt, nho, pha lê, kim cương, lưu huỳnh, nhưng đa số thì gổ và đá được thực hiện vớimục đích xây dựng
Một tài khoản người dùng có nhiều mỏ tài nguyên để khai thác (Hình 2.7 -1) nhưSecond world, Travian, City-empire, Trible wars, Evony tuy nhiên có 1 số game lạinguồn tài nguyên chung cho các account (Ikariam)
Một đặc điểm khác nhau của hai loại hình thức này là số lượng tài nguyên của riêngtừng tài khoản thì hữu hạn còn nguồn tài nguyên chung là vô hạn Tuy nhiên cónhiều đặc điểm chung như các khu khai thác càng được nâng cấp càng cao thì dânđược đưa vào càng nhiều
1
Trang 40Bảng 2-3 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ỏ