Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Bao cao do an Phát triển hệ thống game server Online
1. TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
──────── * ───────
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
NGÀNH CÔNG NGHỆ THÔNG TIN
PHÁT TRIỂN HỆ THỐNG GAME SERVER
ONLINE CHO THIẾT BỊ DI ĐỘNG
Sinh viên thực hiện : Phạm Ngọc Hoàng
Lớp KSTN-CNTT-K52
Giáo viên hướng dẫn: ThS Lê Tấn Hùng
HÀ NỘI 6 - 2012
2. PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1. Thông tin về sinh viên
Họ và tên sinh viên: Phạm Ngọc Hoàng
Điện thoại liên lạc: 01656110452 Email: hoangpn412@gmail.com
Lớp: KSTN-CNTT-K52 Hệ đào tạo: Đại học chính quy
Đồ án tốt nghiệp được thực hiện tại: Trung tâm đào tạo tài năng và Chất lượng
cao – Đại học Bách Khoa Hà Nội.
Thời gian làm ĐATN: Từ ngày 1/3/2012 đến 31/5 /2012
2. Mục đích nội dung của ĐATN
Đồ án tốt nghiệp tập trung nghiên cứ và xây dựng hệ thống Game server Online trên
mobile. Mục đích của đề tài là xây dựng được một hệ thống hoàn chỉnh, có thể đưa
ra thì trường game, cạnh tranh với các game online mobile hiện có.
3. Các nhiệm vụ cụ thể của ĐATN
- Nghiên cứu mô hình client Server, giao thức TCP/IP
- Nghiên cứu công nghệ Java, J2ME
- Nghiên cứu mô hình truyền tin qua SOCKET
- Phân tích, thiết kế hệ thống của hệ thống game server online trên mobile.
- Xây dựng chương trình và kiểm thử.
- Đưa sản phẩm chạy thật trên thực tế.
- Tổng kết và đánh giá.
4. Lời cam đoan của sinh viên:
Tôi – Phạm Ngọc Hoàng - cam kết ĐATN là công trình nghiên cứu của bản thân tôi
dưới sự hướng dẫn của học ThS Lê Tấn Hùng.
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất
kỳ công trình nào khác.
Hà Nội, ngày tháng 6 năm 2012
Tác giả ĐATN
Phạm Ngọc Hoàng
5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép
bảo vệ:
Hà Nội, ngày tháng 6 năm 2012
Giáo viên hướng dẫn
ThS Lê Tấn Hùng
2
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
3. LỜI CẢM ƠN
Để có thể hoàn thành đồ án tốt nghiệp này. Em xin chân thành cảm ơn các
thầy cô giáo trong trường đại học Bách Khoa Hà Nội nói chung, khoa công nghệ
thông tin nói riêng đã đào tạo cho em những kiến thức bổ ích, những kinh nghiệm
quý báu trong suốt thời gian học tập và rèn luyện.
Em xin gửi lời cảm ơn tới thầy giáo, ThS Lê Tấn Hùng – Giảng viên bộ môn
công nghệ phần mềm, khoa công nghệ thông tin đại học Bách Khoa Hà Nội đã tận
tình hướng dẫn em trong suốt quá trình làm đồ án tốt nghiệp.Em cũng xin gửi lời
cảm ơn chân thành tới các anh chị và các bạn trong công ty cổ phần giải pháp công
nghệ thông tin và truyền thông SunNet đã giúp đỡ, hỗ trợ em rất nhiều trong quá
trình làm đồ án.
Do thời gian có hạn, những kinh nghiệm tích lũy từ thực tế còn chưa nhiều
nên trong quá trình làm đồ án vẫn còn gặp nhiều sai sót. Em rất mong nhận được sự
đóng góp ý kiến, những hướng dẫn chỉ bảo từ phía các thầy cô giáo.
Em xin chân thành cảm ơn !
Hà Nội, tháng 6 năm 2010
Sinh viên: Phạm Ngọc Hoàng
3
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
4. TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Ngày nay, công nghệ thông tin đang ngày một phát triển, đặc biệt là sự phát triển
trong lĩnh vực di động. Với sự phát triển không ngừng của các mạng viễn thông, sự phát
triển của mạng Internet 3G, GPRS, Wifi, các dòng điện thoại cấu hình cao ngày càng
phong phú, đa dạng về tính năng và chủng loại.
Đồ án tốt nghiệp của em sẽ tập trung xây dựng một hệ thống game online dành cho
điện thoại di động.
Nội dung đồ án bao gồm:
Phần 1: Đặt vấn đề, định hƣớng và giải pháp:
Chương này tập trung đưa ra cái nhìn tổng quát về Game mobile, bao gồm các khái
niệm về Game Mobile, sự phát triển, tiềm năng của thị trường game Mobile đặc biệt là thị
trường game Mobile Online tại Việt Nam.
Phát biểu bài toán xây dựng hệ thống game online trên mobile, đưa ra hướng phát
triển sản phẩm, giải pháp giải quyết bài toán.
Giới thiệu về các nền tảng phát triển ứng dụng.
Phần 2: Phân tích và thiết kế hệ thống:
Chương này tập trung khảo sát và phân tích, thiết kế hệ thống game server online.
Phần đầu tập trung phân tích các chức năng của hệ thống cần phải có, quy trình hoạt động
của các chức năng cụ thể như thế nào.
Phần hai đưa ra mô hình kiến trúc hệ thống, thiết kế server, thiết kế cơ sở dữ liệu,
thiết kế Client và các module chức năng cụ thể của hệ thống.
Phần 3: Các kết quả đạt đƣợc
Phần này giới thiệu về môi trường cài đặt hệ thống, kết quả cài đặt thử nghiệm hệ
thống, kết quả thực nghiệm khi chạy trên môi trường thực tế. Một số hình ảnh về giao diện
phiên bản Client, giao diện Tool report hệ thống.
Kết luận
Nhìn lại những gì đã làm được trong đồ án tốt nghiệp và những gì còn chưa làm
được. Đưa ra những ưu, nhược điểm và phương hướng phát triển đồ án trong tương lai.
4
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
5. ABSTRACT OF THESIS
Nowadays the significant development has been achieved in the information
technology, especially the mobile area. The emergence and increasing advance of
telecommunication networks including 3G, GPRS and Wifi have brought about great
change in functionality and diversity of mobile phones and portable devices.
My thesis mainly focuses on building an online-game for mobile devices.
The thesis is organized as follows:
Part 1: Problem statement, orientation and solution:
This chapter gives some overview about Mobile Game, including some basic
concepts about Game Mobile, its recent development and the potential of Game Online
market in Vietnam.
It also states some major problems of building Game Online on mobile devices,
suggests several development orientation of Game Online product, the solution for the
problem and introduces the platform for application development.
Part 2: System design and analysis
This chapter focuses on designing and analyzing game online server system.
The first part of the chapter makes an analysis of required functionalities and
specific functions of the system.
The second part puts forward an architecture model, server design, database design,
client design and specific modules of the system.
Part 3: Results
This chapter shows the experimental environment, some experiment results in real
environment, pictures of Client interfaces and Tool report of the system.
Conclusion
In this section, I summarize major results of my thesis and analyze its strengths and
weaknesses and give some directions for future development.
5
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
6. MỤC LỤC
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP...............................................2
LỜI CẢM ƠN ............................................................................................................3
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP .....................................................4
ABSTRACT OF THESIS ................................................................................5
MỤC LỤC ..................................................................................................................6
DANH MỤC CÁC BẢNG ........................................................................................8
DANH MỤC HÌNH VẼ ............................................................................................9
DANH MỤC TỪ VIẾT TẮT..................................................................................10
MỞ ĐẦU ..................................................................................................................11
Chƣơng 1: ĐẶT VẤN ĐỀ, ĐỊNH HƢỚNG VÀ GIẢI PHÁP .............................12
1. Tổng quan về Game Mobile: .....................................................................12
1.1. Khái niệm Game Mobile .........................................................................12
1.2. Tiềm năng thị trường Game Mobile .......................................................12
2. Phát biểu bài toán .......................................................................................13
3. Định hướng phát triển đề tài ......................................................................14
4. Giải pháp giải quyết bài toán .....................................................................14
Chƣơng 2: NỀN TẢNG PHÁT TRIỂN ỨNG DỤNG..........................................15
1. Mô hình Client – Server ....................................................................................15
2. Giao thức TCP/IP............................................................................................... 15
2.1. Giao thức điều khiển truyền dữ liệu TCP ...............................................16
2.2. Giao thức UDP ........................................................................................20
3. Mô hình truyền tin SOCKET .............................................................................21
4. Ngôn ngữ lập trình Java ....................................................................................23
5. Công nghệ J2ME .......................................................................................24
Chƣơng 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG .......................................27
1. Phân tích hệ thống......................................................................................27
1.1 Biểu đồ phân rã chức năng .......................................................................29
1.1.1 Chức năng người dùng: .........................................................................29
1.1.2. Chức năng report hệ thống ..................................................................39
1.1.3. Chức năng chăm sóc khách hàng ........................................................41
2. Thiết kế hệ thống .......................................................................................42
2.1. Kiến trúc hệ thống.................................................................................42
2.1.1. Kiến trúc tổng quan ...........................................................................42
6
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
7. 2.1.2. Kiến trúc Slave Server:......................................................................44
2.2. Xây dựng biểu đồ lớp ...........................................................................46
2.2.1. Xây dựng biểu đồ lớp cho server ......................................................46
2.2.1.1. Thiết kế gói SlaveServer .............................................................. 47
2.2.1.2. Thiết kế gói DataEngine .............................................................. 48
2.2.1.3. Thiết kế gói FetchData .................................................................49
2.2.1.4. Thiết kế gói Log ...........................................................................50
2.2.2. Xây dựng biểu đồ lớp cho Client ......................................................51
2.3. Thiết kế Database..................................................................................52
2.3.1. Database server user ..........................................................................53
2.3.2. Database server content .....................................................................56
2.4. Thiết kế gói tin ......................................................................................57
Chƣơng 4: KẾT QUẢ ĐẠT ĐƢỢC.......................................................................58
1. Môi trường cài đặt hệ thống.......................................................................58
2. Cài đặt và thử nghiệm hệ thống .................................................................58
3. Kết quả thực nghiệm ..................................................................................62
KẾT LUẬN ..............................................................................................................66
TÀI LIỆU THAM KHẢO ......................................................................................68
7
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
8. DANH MỤC CÁC BẢNG
Bảng 1: Bảng liệt kê một vài cổng TCP phổ biến .....................................................17
Bảng 2: Bảng mô tả các lớp trong gói Slave Server. ................................................48
Bảng 3: Bảng mô tả các lớp trong gói DataEngine. ................................................49
Bảng 4: Bảng mô tả các lớp trong gói FetchData. ...................................................50
Bảng 5: Bảng mô tả các lớp trong gói Log. .............................................................. 51
Bảng 6: Bảng mô tả các lớp trong thiết kế Client.....................................................52
Bảng 7: Bảng mô tả các table trong database server user. ......................................56
Bảng 8: Bảng mô tả các table trong Database server content. ................................ 57
8
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
9. DANH MỤC HÌNH VẼ
Hình 1: Mô hình Client – server ...............................................................................15
Hình 2: Cổng truy nhập dịch vụ TCP. ......................................................................16
Hình 3: Dạng thức của segment TCP. ......................................................................19
Hình 4: Dạng thức của gói tin UDP. ........................................................................20
Hình 5: Mô hình quan hệ họ giao thức TCP/IP. .......................................................21
Hình 6: Mô hình truyền tin Socket. ...........................................................................21
Hình 7: Biểu đồ Use Case của hệ thống. ..................................................................27
Hình 8: Biểu đồ phân rã chức năng của hệ thống. ...................................................29
Hình 9: Biểu đồ tuần tự mô tả quá trình đăng nhập. ................................................30
Hình 10: Biểu đồ tuần tự mô tả quá trình đăng ký tài khoản miễn phí. ...................31
Hình 11: Biều đồ tuần tự mô tả quá trình đăng ký tài khoản qua tổng đài SMS......32
Hình 12: Biểu đồ tuần tự mô tả quá trình lấy thông tin ngƣời chơi, Top User ........34
Hình 13: Biểu đồ tuần tự mô tả quá trình mua đồ, lấy thông tin hòm đồ. ................35
Hình 14: Biểu đồ tuần tự mô tả quá trình kết bạn. ...................................................36
Hình 15: Biểu đồ mô tả tuần tự mô tả quá trình chơi game. ....................................38
Hình 16: Kiến trúc tổng quan hệ thống. ...................................................................42
Hình 17: Mô hình kiến trúc Slave Server. .................................................................44
Hình 18: Biểu đồ kiến trúc Client. ............................................................................46
Hình 19: Các packet của server ................................................................................46
Hình 20: Biểu đồ class cho gói slave server .............................................................47
Hình 21: Biểu đồ class cho gói DataEngine. ............................................................48
Hình 22: Biểu đồ class gói FetchData. .....................................................................50
Hình 23: Biểu đồ class gói Log. ................................................................................50
Hình 24: Biểu đồ Class thiết kế Client. .....................................................................51
Hình 25: Biểu đồ thiết kế database server user. .......................................................53
Hình 26: Biểu đồ thiết kế database server content. ..................................................56
Hình 27: Giao diện đăng nhập nhập, đăng ký, đổi mật khẩu, chọn server. .............59
Hình 28: Giao diện nhân vật đi lại trong thành phố. ...............................................59
Hình 29: Giao diện bản đồ, chọn khu vực. ............................................................... 60
Hình 30: Giao diện xem thông tin cá nhân, kết bạn. ................................................60
Hình 31: Giao diện hộp thƣ & bạn bè, menu các action sử dụng trong game. ........60
Hình 32: Giao diện chọn phòng chơi, bàn chơi........................................................61
Hình 33: Giao diện phòng chờ..................................................................................61
Hình 34: Giao diện chơi game Ai là triệu phú, đánh bài .........................................62
Hình 35: Giao diện trang Report hệ thống. .............................................................. 62
9
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
10. DANH MỤC TỪ VIẾT TẮT
STT Từ viết tắt Ý nghĩa
1 HTTP Hypertext Transfer Protocol: Giao thức truyền tải siêu văn
bản.
2 TCP Transmission Control Protocol: Giao thức điều khiển truyền
vận, là một trong các giao thức cốt lõi của bộ giao thức
TCP/IP
3 IP Internet Protocol
4 UDP User Datagram Protocol
5 OOP Object-Oriented Programming: ngôn ngữ lập trình hướng đối
tượng
6 JVM Java Vitual Machine: bộ máy ảo Java
7 CPU Central Processing Unit: đơn vị xử lý trung tâm
8 J2SE Java 2 Standard Edition
9 J2EE Java 2 Enterprise Edition
10 J2ME Java 2 Micro Edition
11 CLDC Connected Limited Device Configuration
12 CDC Connected Device Configuration
13 MIDP Mobile Information Device Profile
14 API Application Programming Interface
15 RGB Reg Green Blue (Ảnh RGB)
16 SMS Short Message Service
17 MYSQL MicroSoft SQL Server
10
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
11. MỞ ĐẦU
Hiện nay với sự phát triển nhanh chóng của khoa học công nghệ, các thiết bị
điện thoại di động ngày càng trở nên phổ biến. Các mạng viễn thông di động đã phủ
sóng tới từng ngõ ngách trên mọi miền tổ quốc. Cùng với sự phát triển của mạng
3G, GPRS và sự ra đời của các dòng điện thoại đời cao ngày càng nhiều. Chiếc điện
thoại không chỉ được sử dụng với chức năng nghe gọi thông thường mà còn được sử
dụng với rất nhiều mục đích giải trí như nghe nhạc, chơi game, …
Từ nhu cầu đó, đã có rất nhiều công ty lớn nhỏ đã cho ra đời hàng loạt các
Game mobile để cung cấp cho người sử dụng. Tuy vậy, những Game Offline dường
như vẫn chưa thể đáp ứng hết nhu cầu của người dùng. Với mong muốn có thể kết
nối người dùng bằng chính chiếc điện thoại di động, em đã lựa chọn đề tài tốt
nghiệp “Phát triển hệ thống Game Server Online trên Mobile”. Mục tiêu của đề tài
là hướng tới xây dựng thành công một hệ thống server game có khả năng đáp ứng
tốt nhu cầu chơi game trên thiết bị di động. Điều này đòi hỏi người thực hiện không
chỉ tập trung nghiên cứu và xây dựng hệ thống về phía Server mà còn phải có sự
hiểu biết sâu rộng về lập trình ứng dụng trên các thiết bị di động.
Trong quá trình thực hiện đề tài, em đã tìm hiểu để xây dựng kiến trúc cho hệ
thống server game, kiến trúc Client – Server, các giao thức truyền tin giữa Client –
Server và các kiến thức để xây dựng phiên bản Client cho game cho thiết bị di động
trên nền tảng J2ME.
Cho đến thời điểm hiện tại, hệ thống đã được hoàn thành và đã được đưa đến
tay người sử dụng và nhận được sự đón nhận khá tích cực từ phía khách hàng. Tuy
nhiên, do hệ thống rất lớn nên những kết quả đã đạt được vẫn còn nhiều nhược
điểm. Trong thời gian tới hệ thống sẽ vẫn được tiếp tục phát triển để hoàn thiện hơn
nữa.
11
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
12. Chƣơng 1: ĐẶT VẤN ĐỀ, ĐỊNH HƢỚNG VÀ GIẢI PHÁP
1. Tổng quan về Game Mobile:
1.1. Khái niệm Game Mobile
Game mobile là từ dùng để chỉ những trò chơi giải trí được dùng trên các
thiết bị di động, điện thoại thông minh, PDA, máy tính bảng, máy nghe nhạc đa
phương tiện (MP4) hoặc máy tính xách tay. Điều này không bao gồm các trò chơi
dành riêng cho các dòng máy, hệ thống máy chơi game cầm tay như Nitendo DS
hoặc PlayStation Portable.
1.2. Tiềm năng thị trƣờng Game Mobile
Theo kết quả nghiên cứu thị trường quý II/2011 của công ty nghiên cứu thị
trường Nielsen, game đã trở thành hạng mục được sử dụng phổ biến nhất trong các
loại phần mềm ứng dụng cho các thiết bị điện thoại di động.
Theo số liệu thống kê:
64% người tham gia khảo sát của Nielsen cho biết họ đã tải ít nhất một game
trong 30 ngày gần nhất, vượt qua tỉ lệ tương ứng của các ứng dụng thời tiết (60%)
và mạng xã hội (56%).
93% người tải ứng dụng khẳng định họ sẵn sang trả tiền cho game mà họ
đang chơi.
Thị trường Game Mobile tại Việt Nam
Theo ước tính của VTC Mobile, năm 2010, tổng doanh thu trên toàn thị
trường game di động của Việt Nam đạt 120 tỷ đồng trên tổng số 110 triệu thuê bao
di động. Nếu so với con số khoảng 2000 tỷ đồng mà ngành game PC đạt được trên
tổng số chưa đến 10 triệu game thủ thì đây là một con số khá khiêm tốn.
Tại sao Game Mobile chưa phát triển tại Việt Nam ???
Phân chia doanh thu thấp: Sự phát triển của toàn ngành nội dung số trên di
động đã và đang bị cản trở bởi tỉ lệ phân chia doanh thu mà các nhà mạng áp đặt
cho các doanh nghiệp cung cấp dịch vụ nội dung. Game mobile cũng không là
ngoại lệ. Với mức tỷ lệ nhận về từ nhà mạng khoảng từ 45-55%, các doanh nghiệp
kinh doanh game chỉ biết “đi đàm phán” để có được các game thay vì mạo hiểm đầu
tư sản xuất, phát triển các game thuần Việt.
Game chùa tràn lan: Game mobile phổ biến tại Việt Nam là các game Java.
Quá trình bẻ khóa các game Java là tương đối dễ, do các game Chùa có cùng cách
chơi, cùng thể loại nhưng không có bản quyền, được phổ biến rộng rãi trên mạng,
đặc biệt các diễn đàn như tinhte.vn, ddth.com, vozforum.com. Điều này một mặt
ảnh hưởng trực tiếp đến doanh thu của các doanh nghiệp trong ngành, một mặt còn
12
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
13. hạ thấp uy tín của thị trường Việt Nam trong mắt các nhà cung cấp Game nước
ngoài.
Sự ra đời của Game online trên mobile là một bƣớc ngoặt
Với những quy định quản lý ngày càng chặt chẽ đối với game online trên
máy tính, game online trên di điện thoại di động được coi là một hướng đi mới
không ít tiềm năng với những nhà kinh doanh game. Để thu hút khách hang, hầu hết
các nhà cung cấp đều miễn phí đăng ký cho người chơi. Trong quá trình chơi, người
dung thường mua các vật phẩm để nâng cấp vũ khí, sức chiến đấu hoặc tính năng
cho nhân vật của mình và phải trả chi phí dịch vụ dữ liệu cho nhà mạng.
Hiện nay, các dòng điện thoại cao cấp, smartphone, Iphone đã đang dần dần
chiếm được thị phần người dùng di động. Sự ra đời của mạng 3G là điều kiện vô
cùng thuận lợi cho sự phát triển của Game Online Mobile.Game Online Mobile ko
chỉ chơi được trên một loại dòng máy, nó có khả năng hỗ trợ trên các nền tảng khác
nhau: Java, Android, Iphone, thậm chí là HTML5 trên PC.
Game online cũng giải quyết được 2 bài toán mà Game offline đang mắc
phải, đó là phân chia doanh thu và tình trạng crack game. Với cơ chế quản lý toàn
bộ tài khoản người dùng, game play trên server, việc crack game đã gần như được
giải quyết hoàn toàn. Cùng sự ra đời của các cổng thanh toán qua thẻ cào như Ngân
lượng, VietPay với mức phí trên mỗi thẻ cào chỉ là 10% (so với mức thu 45-55%
của nhà mạng qua tin nhắn SMS) thì bài toán phân chia doanh thu đã được giải
quyết một cách thỏa đáng.
Hiện trên thị trường những game như “Minh Châu tam quốc” do Minh Châu
game phát hành, “Báu vật thứ 7” của Phong Phú Sắc Việt, “Chúa Nhẫn” của VTC
mobile, “Avatar” của Teamobi đang trở thành những game hot được cộng đồng
game thủ săn lùng.Theo ước tính doanh thu của các Game online này lên đến hàng
chục tỷ đồng mỗi tháng.
2. Phát biểu bài toán
Như vậy, qua phân tích, đánh giá về tiềm năng, những ưu, nhược điểm của thị
trường Game Mobile Online tại Việt Nam. Mục tiêu của đồ án tốt nghiệp là xây
dựng một Game online trên Mobile hoàn chỉnh.
Đặc điểm của đường truyền mạng của mạng di động rất kém và không ổn định,
do đó, các game được chọn để đưa vào hệ thống Game online là những Game nhỏ,
cách chơi đơn giản, không cần đảm bảo tính thời gian thực.
Trong khuôn khổ đồ án của mình, em lựa chọn phát triển Game Online trên nền
tảng J2ME. Trong Game là một thành phố ảo mà trong đó cư dân và các bạn trẻ trên
khắp mọi miền đất nước cùng online trên chiếc điện thoại di động của mình. Khi
tham gia trò chơi, người chơi sẽ được thể hiện mình, bày tỏ tình cảm, nhắn tin, chat
13
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
14. chít, kết bạn,…Ngoài ra game còn có các hoạt động khác như xem bói, chơi xổ số,
đánh bài, chơi ai là triệu phú, …
3. Định hƣớng phát triển đề tài
Để xây dựng được một hệ thống Game Online, nhiệm vụ đặt ra là xây dựng
một hệ thống Server, một hệ thống cơ sở dữ liệu (database) và ít nhất một phiên bản
Client cho người dùng sử dụng. Ngoải ra, cần xây dựng một hệ thống thanh toán
nạp tiền cho người dùng. Đây là phần không thể thiếu đối với một game trên
mobile.
Vấn đề đặt ra với hệ thống là làm thế nào để xây dựng được một hệ thống Game
Online có khả năng chịu tải lớn, khả năng chịu lỗi cao, tốc độ Game đáp ứng được
nhu cầu của người sử dụng. Server có khả năng kết nối được với nhiều loại thiết bị
khác nhau trên các nền tảng khác nhau.
4. Giải pháp giải quyết bài toán
Để xây dựng được được hệ thống như đã nêu trên, ta cần xây dựng:
- Một bản Client trên nền tảng J2ME
- Một server cho Game
- Mô hình truyền dữ liệu giữa Client và Server
- Mô hình server để đáp ứng được các yêu cầu về tốc độ đáp ứng game, khả
năng chịu tải, chịu lỗi.
- Xây dựng bảng cơ sở dữ liệu cho game
- Xây dựng các Tool để quản trị hệ thống
Điều quan trọng nhất đối với hệ thống Game online là khả năng chịu tải. Để
giải quyết bài toán đó, chúng ta đưa ra mô hình phân chia server thành càng server
con để giảm tải cho hệ thống.
14
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
15. Chƣơng 2: NỀN TẢNG PHÁT TRIỂN ỨNG DỤNG
1. Mô hình Client – Server
Các ứng dụng mạng thường hoạt động theo mô hình client/server như thư
điện tử, truyền nhận tập tin, game trên mạng, … Mô hình này gồm có một chương
trình đóng vai trò là client và một chương trình đóng vai trò là server. Hai chương
trình này sẽ giao tiếp với nhau thông qua mạng. Chương trình server đóng vai trò
cung cấp dịch vụ. Chương trình này luôn luôn lắng nghe các yêu cầu từ phía Client,
rồi tính toán và đáp trả kết quả tương ứng. Chương trình client cần một dịch vụ và
gửi yêu cầu dịch vụ tới chương trình server và đợi đáp trả từ server. Như vậy, quá
trình trao đổi dữ liệu giữa client/server bao gồm:
- Truyền một yêu cầu từ chương trình client tới chương trình server
- Yêu cầu được server xử lý
- Truyền đáp ứng cho client
HÌNH 1 : MÔ HÌNH CLIENT – SERVER
Mô hình truyền tin này thực hiện truyền hai thông điệp qua lại giữa client và
server một cách đồng bộ hóa. Chương trình server nhận được thông điệp từ client
thì nó phát ra yêu cầu client chuyển sang trạng thái chờ (tạm dừng) cho tới khi
client nhận được thông điệp đáp ứng do server gửi về. Mô hình client/server thường
được cài đặt dựa trên các thao tác cơ bản là gửi (send) và nhận (receive).
2. Giao thức TCP/IP
Giao thức TCP/IP được phát triển từ mạng ARPANET và Internet và được
dùng như giao thức mạng và vận chuyển trên mạng Internet. TCP (Transmission
15
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
16. Control Protocol) là giao thức thuộc tầng vận chuyển và IP (Internet Protocol) là
giao thức thuộc tầng mạng của mô hình OSI. Họ giao thức TCP/IP hiện nay là giao
thức được sử dụng rộng rãi nhất để liên kết các máy tính và mạng.
Hiện nay các máy tính của hầu hết các mạng có thể sử dụng giao thức
TCP/IP để liên kết với nhau thông qua nhiều hệ thống mạng với kỹ thuật khác nhau.
Giao thức TCP/IP thực chất là một họ giao thức cho phép các hệ thống mạng cùng
làm việc với nhau thông qua việc cung cấp phương tiện truyền thông liên mạng.
2.1. Giao thức điều khiển truyền dữ liệu TCP
TCP là một giao thức “có liên kết” (connection - oriented), nghĩa là cần phải
thiết lập liên kết giữa hai thực thể TCP trước khi chúng trao đổi dữ liệu với nhau.
Một tiến trình ứng dụng trong một máy tính truy nhập vào các dịch vụ của giao thức
TCP thông qua một cổng (port) của TCP. Số hiệu cổng TCP được thể hiện bởi 2
bytes.
HÌNH 2: CỔNG TRUY NHẬP DỊCH VỤ TCP.
Một cổng TCP kết hợp với địa chỉ IP tạo thành một đầu nối TCP/IP (socket)
duy nhất trong liên mạng. Dịch vụ TCP được cung cấp nhờ một liên kết logic giữa
một cặp đầu nối TCP/IP. Một đầu nối TCP/IP có thể tham gia nhiều liên kết với các
đầu nối TCP/IP ở xa khác nhau. Trước khi truyền dữ liệu giữa 2 trạm cần phải thiết
lập một liên kết TCP giữa chúng và khi không còn nhu cầu truyền dữ liệu thì liên
kết đó sẽ được giải phóng.
Các thực thể của tầng trên sử dụng giao thức TCP thông qua các hàm gọi
(function calls) trong đó có các hàm yêu cầu để yêu cầu, để trả lời. Trong mỗi hàm
còn có các tham số dành cho việc trao đổi dữ liệu
Các bước thực hiện để thiết lập một liên kết TCP/IP. Thiết lập một liên kết
mới có thể được mở theo một trong 2 phương thức: chủ động (active) hoặc bị động
(passive).
16
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
17. Phương thức bị động: người sử dụng yêu cầu TCP chờ đợi một yêu cầu liên
kết gửi đến từ xa thông qua một đầu nối TCP/IP (tại chỗ). Người sử dụng dùng hàm
passive Open có khai báo cổng TCP và các thông số khác (mức ưu tiên, mức an
toàn).
Phương thức chủ động: người sử dụng yêu cầu TCP mở một liên kết với một
đầu nối TCP/IP ở xa. Liên kết sẽ được xác lập nếu có một hàm Passive Open tương
ứng đã được thực hiện tại đầu nối TCP/IP ở xa đó.
Số hiệu cổng Mô tả
0 Reserved
5 Remote job entry
7 Echo
9 Discard
11 Systat
13 Daytime
15 Nestat
17 Quotd (quote odd day)
20 ftp-data
21 ftp (control)
23 Telnet
25 SMTP
37 Time
53 Name Server
102 ISO - TSAP
103 X.400
104 X.400 Sending
111 Sun RPC
139 Net BIOS Session source
160-223 Reserved
BẢNG 1: BẢNG LIỆT KÊ MỘT VÀI CỔNG TCP PHỔ BIẾN
Khi người sử dụng gửi đi một yêu cầu mở liên kết sẽ được nhận hai thông số
trả lời từ TCP.
Thông số Open ID được TCP trả lời ngay lập tức để gán cho một liên kết cục
bộ (local connection name) cho liên kết được yêu cầu. Thông số này về sau được
17
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
18. dùng để tham chiếu tới liên kết đó. (Trong trường hợp nếu TCP không thể thiết lập
được liên kết yêu cầu thì nó phải gửi tham số Open Failure để thông báo).
Khi TCP thiết lập được liên kết yêu cầu nó gửi tham số Open Success được dùng để
thông báo liên kết đã được thiết lập thành công. Thông báo này được chuyển đến
trong cả hai trường hợp bị động và chủ động. Sau khi một liên kết được mở, việc
truyền dữ liệu trên liên kết đó có thể được thực hiện.
Các bước thực hiện khi truyền và nhận dữ liệu: Sau khi xác lập được liên kết
người sử dụng gửi và nhận dữ liệu. Việc gửi và nhận dữ liệu thông qua các hàm
send và receive.
Hàm Send: Dữ liệu được gửi xuống TCP theo các khối (block). Khi nhận
được một khối dữ liệu, TCP sẽ lưu trữ trong bộ đệm (buffer). Nếu cờ PUSH được
dựng thì toàn bộ dữ liệu trong bộ đệm được gửi, kể cả khối dữ liệu mới đến sẽ được
gửi đi. Ngược lại cờ PUSH không được dựng thì dữ liệu được dữ lại trong bộ đệm
và sẽ gửi đi khi có cơ hội thích hợp (chẳng hạn chờ thêm dữ liệu nữa để gửi đi với
hiệu quả hơn)
Hàm receive: ở trạm đích dữ liệu sẽ được TCP lưu trong bộ đệm gắn với mỗi
liên kết. Nếu dữ liệu được đánh dấu với một cờ PUSH thì toàn bộ dữ liệu trong bộ
đệm (kể cả các dữ liệu được lưu từ trước) sẽ được chuyển lên cho người sử dụng.
Còn nếu dữ liệu đến không được đánh dấu với cờ PUSH thì TCP chờ tới khi thích
hợp mới chuyển dữ liệu với mục đích tăng hiệu quả hệ thống.
Nói chung việc nhận và giao dữ liệu cho người sử dụng đích của TCP phụ
thuộc vào việc cài đặt cụ thể. Trường hợp cần chuyển gấp dữ liệu cho người sử
dụng đích của TCP phụ thuộc vào việc cài đặt cụ thể. Trường hợp cần chuyển gấp
dữ liệu cho người sử dụng thì có thể dùng cờ URGENT và đánh dấu dữ liệu bằng
bit URG để báo cho người sử dụng cần phải xử lý khẩn cấp dữ liệu đó.
Các bước thực hiện khi đóng một liên kết: Việc đóng một liên kết khi không
cần thiết được thực hiện theo một trong hai cách: dùng hàm Close hoặc dùng hàm
Abort.
Hàm Close: yêu cầu đóng liên kết một cách bình thường. Có nghĩa là việc
truyền dữ liệu trên liên kết đó đã hoàn tất. Khi nhận được một hàm Close TCP sẽ
truyền đi tất cả dữ liệu còn trong bộ đệm thông báo rằng nó đóng liên kết. Lưu ý
rằng khi một người sử dụng đã gửi đi một hàm Close thì nó vẫn phải tiếp tục nhận
dữ liệu đến trên liên kết đó cho đến khi TCP đã báo cho phía bên kia biết về việc
đóng liên kết và chuyển giao hết tất cả dữ liệu cho người sử dụng của mình.
Hàm Abort: Người sử dụng có thể đóng một liên kết bất thường và sẽ không
chấp nhận dữ liệu qua liên kết đó nữa. Do vậy dữ liệu có thể bị mất đi khi đang
được truyền đi. TCP báo cho TCP ở xa biết rằng liên kết đã được hủy bỏ và TCP ở
xa sẽ thông báo cho người sử dụng của mình.
Một số hàm khác của TCP:
18
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
19. Hàm Status: cho phép người sử dụng yêu cầu cho biết trạng thái của một liên
kết cụ thể, khi đó TCP cung cấp thông tin cho người sử dụng.
Hàm Error: thông báo cho người sử dụng TCP về các yêu cầu dịch vụ bất
hợp lệ liên quan đến một liên kết có tên cho trước hoặc về các lỗi liên quan đến môi
trường.
Đơn vị dữ liệu sử dụng trong TCP được gọi là segment (đoạn dữ liệu), có các
tham số với ý nghĩa như sau:
HÌNH 3: DẠNG THỨC CỦA SEGMENT TCP.
Source Port (16 bits): số hiệu cổng TCP của trạm nguồn
Destination Port (16 bit): số hiệu cổng TCP của trạm đích
Sequence Number (32 bit): số hiệu của byte đầu tiên của segment trừ khi
SYN được được thiết lập. Nếu bit SYN được thiết lập thì Sequence Number là số
hiệu tuần tự khởi đầu (ISN) và byte dữ liệu đầu tiên là ISN + 1.
Acknowledgment Number (32 bit): số hiệu của segment tiếp theo mà trạm
nguồn đang chờ để nhận. Ngầm ý báo nhận tốt (các) segment mà trạm đích đã gửi
cho trạm nguồn.
Data offset (4 bit): số lượng bội của 32 bit (32 bit words) trong TCP header
(tham số này chỉ ra vị trí bắt đầu của nguồn dữ liệu).
Reserved (6 bit): dành để dùng trong tương lai.
Control bit (các bit điều khiển):
URG: Vùng con trỏ khẩn (Ucgent Poiter) có hiệu lực.
ACK: Vùng báo nhận (ACK number) có hiệu lực.
PSH: chức năng PUSH
RST: Khởi động lại (reset) liên kết.
SYN: Đồng bộ hóa số hiệu tuần tự (sequence number).
FIN: Không còn dữ liệu từ trạm nguồn.
19
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
20. Window (16 bit): cấp phát credit để kiểm soát nguồn dữ liệu (cơ chế cửa sổ).
Đây chính là số lượng các byte dữ liệu, bắt đầu từ byte được chỉ ra trong vùng ACK
number, mà trạm nguồn đã sẵn sàng để nhận.
Checksum (16 bit): mã kiểm soát lỗi cho toàn bộ segment (header + data)
Urgemt Poiter (16 bit): con trỏ này trỏ tới số hiệu tuần tự của byte đi theo sau
dữ liệu khẩn. Vùng này chỉ có hiệu lực khi bit URG được thiết lập.
Options (độ dài thay đổi): khai báo các option của TCP, trong đó có độ dài
tối đa của vùng TCP data trong một segment.
Paddinh (độ dài thay đổi): phần chèn thêm vào header để đảm bảo phần
header luôn kết thúc ở một mốc 32 bit. Phần thêm này gồm toàn số 0.
TCP data (độ dài thay đổi): chứa dữ liệu của tầng trên, có độ dài tối đa ngầm
định là 536 byte. Giá trị này có thể điều chỉnh bằng cách khai báo trong vùng
options.
2.2. Giao thức UDP
UDP (User Datagram Protocol) là giao thức theo phương thức không liên kết
được sử dụng thay thế cho TCP ở trên IP theo yêu cầu của từng ứng dụng. Khác với
TCP, UDP không có các chức năng thiết lập và kết thúc liên kết. Tương tự như IP,
nó cũng không cung cấp cơ chế báo nhận (ackowledgment), không sắp xếp tuần tự
các gói tin (datagram) đến và có thể dẫn đến tình trạng mất hoặc trùng dữ liệu mà
không có cơ chế thông báo lỗi cho người gửi. Qua đó ta thấy UDP cung cấp các
dịch vụ vận chuyển không tin cậy như trong TCP.
Khuôn dạng UDP datagram được mô tả với các vùng tham số đơn giản hơn
nhiều so với TCP segment.
HÌNH 4: DẠNG THỨC CỦA GÓI TIN UDP.
UDP cũng cung cấp cơ chế gán và quản lý các số hiệu cổng (port number) để
định danh duy nhất cho các ứng dụng chạy trên một trạm của mạng. Do ít chức
năng phức tạp nên UDP thường có xu thế hoạt động nhanh hơn so với TCP. Nó
thường được dùng cho các ứng dụng không đòi hỏi đ ộ tin cậy cao trong giao vận.
20
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
21. HÌNH 5: MÔ HÌNH QUAN HỆ HỌ GIAO THỨC TCP/IP.
3. Mô hình truyền tin SOCKET
Chương trình client và server sử dụng giao thức vận chuyển để gởi và nhận
dữ liệu. Một vídụ là giao thức TCP/IP được sử dụng để giao tiếp qua mạng Internet.
HÌNH 6: MÔ HÌNH TRUYỀN TIN SOCKET.
21
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
22. TCP và UDP là các giao thức tầng giao vận để truyền dữ liệu. Mỗi giao thức
có những ưu và nhược điểm riêng. Chẳng hạn, giao thức TCP có độ tin cậy truyền
tin cao, nhưng tốc độ truyền tin bị hạn chế do phải có giai đoạn thiết lập và giải
phóng liên kết khi truyền tin, khi gói tin có lỗi hay bị thất lạc thì giao thức TCP phải
có trách nhiệm truyền lại, … Ngược lại, giao thức UDP có tốc độ truyền tin rất
nhanh vì nó chỉ có một cơ chế truyền tin rất đơn giản: không cần phải thiết lập và
giải phóng liên kết.
Dữ liệu được truyền trên mạng Internet dưới dạng các gói (packet) có kích
thước hữu hạn được gọi là datagram. Mỗi datagram chứa một header và một
payload. Header chứa địa chỉ và cổng cần truyền gói tin đến, cũng như địa chỉ và
cổng xuất phát của gói tin, và các thông tin khác được sử dụng để đảm bảo độ tin
cậy truyền tin, payload chứa dữ liệu. Tuy nhiên do các datagram có chiều dài hữu
hạn nên thường phải phân chia dữ liệu thành nhiều gói và khôi phục lại dữ liệu ban
đầu từ các gói ở nơi nhận. Trong quá trình truyền gói tin có thể có một hay nhiều
gói bị mất hay bị hỏng và cần phải truyền lại hoặc các gói tin đến không theo đúng
trình tự. Để tránh những điều này, việc phân chia dữ liệu thành các gói, tạo các
header, phân tích header của các gói đến, quản lý danh sách các gói đã nhận được
và các gói chưa nhận được, … rất nhiều công việc cần phải thực hiện, và đòi hỏi rất
nhiều phần mềm phức tạp.
Để giải quyết bài toán này, đại học UC Berkeley đưa ra khái niệm Socket.
Chúng cho phép người lập trình xem một liên kết mạng như là một luồng mà có thể
đọc dữ liệu ra hay ghi dữ liệu vào từ luồng này. Các Socket che dấu người lập trình
khỏi các chi tiết mức thấp của mạng như kiểu đường truyền, các kích thước gói, yêu
cầu truyền lại gói, các địa chỉ mạng, …
Một socket có thể thực hiện 7 thao tác cơ bản:
- Kết nối với một máy ở xa (ví dụ: chuẩn bị để gửi và nhận dữ liệu)
- Gửi dữ liệu
- Nhận dữ liệu
- Ngắt liên kết
- Gán cổng
- Nghe dữ liệu đến
- Chấp nhận liên kết từ các máy ở xa trên cổng đã được gán
Có nhiều kiểu Socket khác nhau tương ứng với mỗi kiểu giao thức được sử dụng
để giao tiếp giữa hai máy trên mạng Internet. Đối với chồng giao thức TCP/IP, có
hai kiểu Socket chính được sử dụng là stream socket và datagram socket. Stream
Socket sử dụng giao thức TCP để cung cấp dịch vụ gửi dữ liệu tin cậy. Datagram
Socket sử dụng giao thức UDP để cung cấp dịch vụ gởi gói tin đơn giản. Ngôn ngữ
lập trình Java hỗ trợ lớp Socket và ServerSocket cho kiểu stream socket và lớp
DatagramPacket và DatagramSocket cho kiểu datagram socket.
22
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
23. Đối với kiểu stream socket, lớp Socket được sử dụng bởi cả client và server. Lớp
Socket này có các phương thức tương ứng với bốn hao tác đầu tiên của thao tác cơ
bản của socket trình bày ở trên. Ba thao tác cuối được hỗ trợ bởi server để chờ các
client liên kết tới. Các thao tác này được cài đặt bởi lớp ServerSocket.
4. Ngôn ngữ lập trình Java
Khái niệm
Java là một ngôn ngữ lập trình dạng lập trình hướng đối tượng (OOP). Khác
với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch mã nguồn thành mã
máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên dịch mã nguồn
thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime environment)
chạy. Bằng cách này, Java thường chạy nhanh hơn những ngôn ngữ lập trình thông
dịch khác như Python, Perl, PHP,…
Cú pháp Java được vay mượn nhiều từ C & C++ nhưng có cú pháp hướng
đối tượng đơn giản hơn và ít tính năng xử lý cấp thấp hơn.
Một số đặc điểm nổi bật của ngôn ngữ lập trình Java:
- Máy ảo Java (JVM – Java Vitual Machine): Tất cả các chương trình muốn
thực thi được thì phải được biên dịch ra mã máy. Mã máy của từng kiến trúc CPU
của mỗi máy tính là khác nhau (tập lệnh mã máy của CPU Intel, CPU Solarix, CPU
Macintosh … là khác nhau), vì vậy trước đây một chương trình sau khi được biên
dịch xong chỉ có thể chạy được trên một kiến trúc CPU cụ thể nào đó. Đối với CPU
Intel chúng ta có thể chạy các hệ điều hành như Microsoft Windows, Unix,Linux,
OS/2, …
- Chương trình thực thi được trên Windows được biên dịch dưới dạng file có
đuôi .EXE còn trên Linux thì được biên dịch dưới dạng file có đuôi .ELF, vì vậy
trước đây một chương trình chạy được trên Windows muốn chạy được trên hệ điều
hành khác như Linux chẳng hạn thì phải chỉnh sửa và biên dịch lại.
- Ngôn ngữ lập trình Java ra đời, nhờ vào máy ảo Java mà khó khăn nêu trên
đã được khắc phục. Một chương trình viết bằng ngôn ngữ lập trình Java sẽ được
biên dịch ra mã của máy ảo java (mã java bytecode). Sau đó máy ảo Java chịu trách
nhiệm chuyển mã java bytecode thành mã máy tương ứng. Sun Microsystem chịu
trách nhiệm phát triển các máy ảo Java chạy trên các hệ điều hành trên các kiến trúc
CPU khác nhau.
Thông dịch
Java là một ngôn ngữ lập trình vừa biên dịch vừa thông dịch. Chương trình
nguồn viết bằng ngôn ngữ lập trình Java có đuôi *.java đầu tiên được biên dịch
thành tập tin có đuôi *.class và sau đó sẽ được trình thông dịch thông dịch thành mã
máy.
23
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
24. Độc lập nền
Một chương trình viết bằng ngôn ngữ Java có thể chạy trên nhiều máy tính
có hệ điều hành khác nhau (Windows, Unix,Linux, …) miễn sao ở đó có cài đặt
máy ảo java (Java Virtual Machine). Viết một lần chạy mọi nơi (write once run
anywhere).
Hƣớng đối tƣợng
Hướng đối tượng trong Java tương tự như C++ nhưng Java là một ngôn ngữ
lập trình hướng đối tượng hoàn toàn. Tất cả mọi thứ đề cập đến trong Java đều liên
quan đến các đối tượng được định nghĩa trước, thậm chí hàm chính của một chương
trình viết bằng Java (đó là hàm main) cũng phải đặt bên trong một lớp. Hướng đối
tượng trong Java không có tính đa kế thừa (multi inheritance) như trong C++ mà
thay vào đó Java đưa ra khái niệm interface để hỗ trợ tính đa kế thừa. Vấn đề này sẽ
được bàn chi tiết trong phần sau.
Đa nhiệm – Đa luồng (Multitasking - Multithreading)
Java hỗ trợ lập trình đa nhiệm, đa luồng cho phép nhiều tiến trình, tiểu trình
có thể chạy song song cùng một thời điểm và tương tác với nhau.
Khả chuyển (Portable)
Chương trình ứng dụng viết bằng ngôn ngữ Java chỉ cần chạy được trên máy
ảo Java là có thể chạy được trên bất kỳ máy tính, hệ điều hành nào có máy ảo Java.
“Viết một lần, chạy mọi nơi” (Write Once, Run Anywhere).
Hỗ trợ mạnh cho việc phát triển ứng dụng
Công nghệ Java phát triển mạnh mẽ nhờ vào “đại gia Sun Microsystem”
cung cấp nhiều công cụ, thư viện lập trình phong phú hỗ trợ cho việc phát triển
nhiều loại hình ứng dụng khác nhau cụ thể như: J2SE (Java 2 Standard Edition) hỗ
trợ phát triển những ứng dụng đơn, ứng dụng client-server; J2EE (Java 2 Enterprise
Edition) hỗ trợ phát triển các ứng dụng thương mại, J2ME (Java 2 Micro Edition)
hỗ trợ phát triển các ứng dụng trên các thiết bị di động, không dây, …
5. Công nghệ J2ME
Java là công nghệ mã nguồn mở và do Sun Microsystem hỗ trợ và phát triễn. J2ME
(Java 2 Platform, Micro Edition) được xem là 1 trong 3 công nghệ hiện nay của
Java và nó phát triển ứng dụng nhắm vào các thiết bị di động. Chuẩn của J2ME
gồm 2 loại:
24
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
25. CLDC ( Connected Limited Device Configuration): có khả năng truyền
thông trên mạng một cách rời rạc như: điện thoại di động (Mobile phones), máy
nhắn tin hai chiều (two-way pagers), máy trợ lý cá nhân dùng kỹ thuật số (personal
digital asisstants-PDAs). Loại này dùng cho một mục đích đặc biệt, thường giới hạn
về chức năng.
CDC ( Connected Device Configuration): được kết nối cố định và liên tục
như set-top boxes, Internet TVs, Internet – enabled screen phones, high – end
communicators, hệ thống điều hướng xe hơi. Loại này hỗ trợ về giao diện người
dùng.
J2ME được thiết kế để chạy trên các điện thoại di động có cấu hình tối thiểu
như sau:
- Bộ nhớ tổng cộng: 128-512 KB.
- Bộ xử lý: 16 đến 32 bit.
- Tốc độ xử lý: 8-32 MHz.
Năng lượng: giới hạn, hoạt động bằng pin.
Băng thông: giới hạn, khoảng 9600 bps.
MIDP (Mobile Information Device Profile): bổ sung các tính năng như hỗ trợ
kết nối, các thành phần hỗ trợ giao diện người dùng … vào CLDC. Profile này được
thiết kế chủ yếu để nhắm vào điện thoại di động với đặc tính là màn hình hiển thị
hạn chế, dung lượng chứa có hạn. Do đó MIDP sẽ cung cấp một giao diện người
dùng đơn giản và các tính năng mạng đơn giản dựa trên HTTP. Có thể nói MIDP là
profile nổi tiếng nhất bởi vì nó là kiến thức cơ bản cho lập trình Java trên các máy
di động. Những chức năng MIDP cung cấp:
Các lớp và kiểu dữ liệu: phần lớn các lớp mà các lập trình viên Java quen thuộc
vẫn còn được giữ lại ví dụ như các lớp trong gói java.util như Stack, Vector và
Hastable cũng như Enumeration.
Hỗ trợ đối tượng Display: đúng như tên gọi một chương trình MIDP sẽ hỗ trợ
duy nhất một đối tượng Display là đối tượng quản lý việc hiển thị dữ liệu trên màn
hình điện thoại.
Hỗ trợ Form và các giao diện người dùng.
Hỗ trợ Timer và Alert.
Cung cấp tính năng Record Management System (RMS) cho việc lưu trữ dữ
liệu.
Những chức năng MIDP không thể làm được:
- Phép tính dấu chấm động (floating point): phép tính này đòi hỏi rất nhiều tài
nguyên CPU và phần lớn các CPU cho các thiết bị di động không hỗ trợ phép tính
này, do đó MIDP cũng không có.
- Bộ nạp class (Class Loader).
25
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
26. - Hỗ trợ từ khóa finalize( ) như trong J2SE: việc “dọn dẹp“ tài nguyên trước
khi nó bị xóa do lập trình viên thực hiện.
- Không hỗ trợ JNI (Java Native Interface).
- Hỗ trợ hạn chế thao tác bắt lỗi.
- Phần lớn các thư viện API cho Swing và AWT không thể sử dụng được
trong MIDP.
- Không hỗ trợ các tính năng quản lý tập tin và thư mục, trong thực tế là các
thiết bị J2ME không có hỗ trợ các thiết bị lưu trữ thông thường như ổ
cứng…. Tuy nhiên, điều đó không có nghĩa là phải mất đi mọi dữ liệu quan
trọng mỗi khi tắt máy, Sun đã cung cấp một chức năng khác tương đương gọi
là Record Management System (RMS) để cung cấp khả năng lưu trữ cho các
thiết bị này.
MIDP 2.0 có một số các cải tiến nổi bật so với MIDP 1.0:
Nâng cấp các tính năng bảo mật như: Download qua mạng an toàn hơn thông
qua việc hỗ trợ giao thức HTTPS, kiểm soát việc kết nối giữa máy di động và
server, ví dụ các chương trình không thể kết nối tới server nếu không có sự chấp
nhận của người dùng.
Thêm các API hỗ trợ Multimedia. Một trong những cải tiến nổi bật nhất của
MIDP 2.0 là tập các API media của nó. Các API này là một tập con chỉ hỗ trợ âm
thanh của Mobile Media API (MMAPI).
Mở rộng các tính năng của Form. Nhiều cải tiến đã được đưa vào API
javax.microedition.lcdui trong MIDP 2.0, nhưng các thay đổi lớn nhất (ngoài API
cho game) là trong Form và Item.
Hỗ trợ các lập trình viên game bằng cách tung ra Game API. Được hưởng lợi
nhất từ Game API trong MIDP 2.0 không chỉ là các lập trình viên game mà còn các
lập trình viên cần sử dụng các tính năng đồ họa cao cấp.
Hỗ trợ kiểu ảnh RGB: một trong những cải tiến hấp dẫn cho các nhà phát triển
MIDP là việc biểu diễn hình ảnh dưới dạng các mảng số nguyên, cho phép MIDlet
thao tác với dữ liệu hình ảnh một cách trực tiếp.
26
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
27. Chƣơng 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
1. Phân tích hệ thống
Bài báo cáo này sử dụng phương pháp phân tích thiết kế hướng đối tượng, sử
dụng các cú pháp của UML 2.0 để mô tả các biểu đồ của hệ thống. Các bước tiến
hành việc phân tích, thiết kế hướng đối tượng theo UML 2.0 bao gồm: phân tích,
thiết kế, xây dựng và kiểm thử chương trình. Dựa trên quy trình đó, em có đưa ra
các mô hình phân tích, mô hình thiết kế, tiến hành xây dựng hệ thống và có minh
họa bằng thực nghiệm đã xây dựng được.
Mô hình Use Case của hệ thống
HÌNH 7: BIỂU ĐỒ USE CASE CỦA HỆ THỐNG.
Hệ thống gồm có: Người sử dụng đăng ký, người chơi, bộ phận chăm sóc
khách hàng và người quản trị hệ thống.
Người sử dụng đăng ký: Người sử dụng mới có thể đăng ký tài khoản qua
giao diện đăng ký của ứng dụng. Việc đăng ký tài khoản có thể thực hiện bằng 2
cách: đăng ký miễn phí bằng việc kết nối trực tiếp đến server hoặc đăng ký mất phí
27
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
28. qua tổng đài SMS. Việc đăng ký miễn phí hay đăng ký qua SMS sẽ do người quản
trị hệ thống quyết định.
Người sử dụng đăng ký mới cũng có chức năng báo lỗi cho hệ thống. Trường
hợp này người sử dụng phải báo lỗi qua hệ thống SMS vì lúc này người sử dụng
chưa đăng nhập được vào hệ thống để kết nối đến server (những trường hợp này
thường là do không đăng ký được tài khoản, mất mật khẩu hay dòng máy không hỗ
trợ).
Người chơi: Là người dùng đã đăng ký nick. Người chơi có thể đăng nhập
vào hệ thống, kết bạn, chat với bạn bè, quản lý hộp tin nhắn, gửi tin nhắn, chơi
game, mua đồ, thực hiện giao dịch hoặc báo lỗi hệ thống, …
Chăm sóc khách hàng: Đối với bất kỳ hệ thống online nào, bộ phận chăm
sóc khách hàng đóng vai trò rất quan trọng. Đây là bộ phận có thể giải đáp các thắc
mắc cho người sử dụng. Ở hệ thống này, bộ phận chăm sóc khách hàng có nhiệm vụ
quản lý báo lỗi của khách hàng qua hệ thống tổng đài SMS và kênh báo lỗi. Từ
những phản hồi đó, bộ phận này có nhiệm vụ trả lời những thắc mắc của khách
hàng, đồng thời báo cho người quản trị hệ thống qua kênh báo lỗi đối với những lỗi
nghiêm trọng liên quan đến hệ thống.
Quản trị hệ thống: Đây là bộ phận quan trọng nhất của hệ thống. Quản trị hệ
thống có 2 nhiệm vụ chính: quản lý server và quản lý kênh báo lỗi.
Quản lý server: theo dõi tình hình hệ thống thông qua hệ thống report (số
lượng người online, CPU server, các lỗi phát sinh của hệ thống, tình trạng database,
…). Người quản trị server còn có nhiệm vụ thay đổi các thông số của hệ thống khi
cần. Ví dụ: kích hoạt chương trình khuyến mãi, kích hoạt đăng ký tài khoản qua
SMS hay đăng ký tài khoản miễn phí. Với những người dùng vi phạm nội quy,
người quản trị hệ thống cũng có chức năng ban nick hoặc nhắc nhở những trường
hợp đó.
Quản lý báo lỗi: Người quản trị hệ thống sẽ phải cập nhật thường xuyên
những lỗi người dung phản ảnh qua hệ thống báo lỗi, từ đó kiểm tra hệ thống và
thông báo cho những người có trách nhiệm để sửa lỗi hệ thống. Với những lỗi
nghiêm trọng, hay thắc mắc của khách hàng liên quan đến hệ thống mà bộ phận
chăm sóc khách hàng không giải đáp được thì người quản trị hệ thống có nhiệm vụ
giải đáp cho chăm sóc khách hàng để bộ phận này truyền đạt lại cho người dùng.
28
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
29. 1.1 Biểu đồ phân rã chức năng
HÌNH 8: BIỂU ĐỒ PHÂN RÃ CHỨC NĂNG CỦA HỆ THỐNG.
Hệ thống Game có các chức năng chính là: Chức năng người dùng, quản lý
hệ thống, quản lý góp ý – chăm sóc khách hàng. Vì hệ thống lớn nên trong thời gian
thực tập tại công ty SunNet em đảm nhận công việc phát triển toàn bộ hệ thống
game, còn lại phần thiết kế hệ thống report, quản lý log hệ thống hay chăm sóc
khách hàng do một bộ phận khác đảm nhiệm.
1.1.1 Chức năng ngƣời dùng:
Chức năng người dùng được phân chia làm các chức năng nhỏ:
- Đăng ký tài khoản, đăng nhập, đổi mật khẩu.
- Chức năng quản lý thông tin cá nhân
- Chức năng thống kê Top User
- Chức năng mua đồ, quản lý hòm đồ.
- Chức năng kết bạn, quản lý hộp thư, bạn bè.
- Chức năng chat, gửi tin nhắn
- Chức năng thể hiện cảm xúc, tương tác với người khác.
- Chức năng xem bói
- Chức năng mua xổ số, xem kết quả xổ số.
- Chức năng chọn Game, chọn phòng, chọn bàn, chơi game
- Chức năng báo lỗi lên hệ thống
29
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
30. - Chức năng Update phiên bản mới của Game
- Chức năng nạp tiền.
Chức năng đăng ký, đăng nhập:
Nhiệm vụ ban đầu của người dùng là đăng ký và đăng nhập. Việc đăng ký, đăng
nhập ở hệ thống này không phức tạp như các hệ thống khác.
Các thông tin khác người dùng có thể update sau khi đã đăng nhập thành công vào
hệ thống. Bảo mật thông tin tốt chính là yếu tố rất quan trọng đem lại sự tin tưởng
của người dùng đối với hệ thống.
Quá trình đăng nhập:
HÌNH 9: BIỂU ĐỒ TUẦN TỰ MÔ TẢ QUÁ TRÌNH ĐĂNG NHẬP.
Từ màn hình đăng nhập, người dùng sẽ nhập tên username, password của
mình sau đó gửi request tới một địa chỉ http để lấy danh sách các slave server. Sau
khi lấy được danh sách slave server, người dùng có thể chọn một trong các
slaveserver để đăng nhập tương ứng vào slave server đó. Người dùng gửi request
đăng nhập tới slave server mà mình chọn. Khi nhận được request từ người dùng,
30
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
31. slave sẽ kết nối tới hệ thống database để kiểm tra username, password của người sử
dụng và trả về cho người dùng là họ đã đăng nhập thành công hay thất bại.
Người dùng có thể chọn chức năng ghi nhớ tài khoản để ở những lần đăng
nhập sau người dùng sẽ bỏ qua được bước nhập username, password.
Quá trình đăng ký:
Việc đăng ký có thể được thực hiện bằng 2 cách khác nhau. Việc lựa chọn
cách đăng ký nào người dùng sẽ không được quyết định mà sẽ do người quản trị hệ
thống Game quyết định.
Hai hình thức đăng ký là: đăng ký miễn phí, đăng ký mất phí qua tổng đài
SMS.
Quá trình đăng ký tài khoản miễn phí nhƣ sau:
HÌNH 10: BIỂU ĐỒ TUẦN TỰ MÔ TẢ QUÁ TRÌNH ĐĂNG KÝ TÀI KHOẢN MIỄN PHÍ.
Quá trình đăng ký nick miễn phí có quy trình cũng giống với quá trình đăng
nhập. Người chơi cũng sẽ phải điền thông tin username, mật khẩu, giới tính, sau đó
lấy danh sách slave Server, chọn slave server, gửi request đăng ký tài khoản. Slave
31
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
32. server truy xuất vào database server user để kiểm tra tài khoản đó đã được đăng ký
hay chưa, sau đó trả về cho người dùng đăng ký thành công hay thất bại.
Quá trình đăng ký tài khoản mất phí thông qua tin nhắn SMS:
Đối với quá trình đăng ký tài khoản mất phí, người dùng sẽ cũng sẽ phải
thêm một bước nhắn tin tới tổng đài SMS để đăng ký tài khoản.
HÌNH 11: BIỀU ĐỒ TUẦN TỰ MÔ TẢ QUÁ TRÌNH ĐĂNG KÝ TÀI KHOẢN QUA TỔNG ĐÀI SMS
Quá trình đăng ký tài khoản qua tổng đài SMS nhƣ sau:
B1: Người dùng nhập Username, password, giới tính ở giao diện đăng ký.
B2: Gửi request lấy thông tin Slave Server
B3: Hệ thống HTTP lưu trữ thông tin của các Slave server hiện có của hệ thống để
trả về cho người dùng.
B4: Người dùng chọn một slave server và gửi yêu cầu đăng ký lên slave server đó
(thông tin về username, password, giới tính).
32
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
33. B5: Slave server truy xuất vào database lưu trữ thông tin user để kiểm tra tài khoản
người dùng đăng ký đã tồn tại trên hệ thống hay chưa.
B6: Slave server xử lý thông tin request. Nếu tài khoản đã được đăng ký chuyển
sang bước 7, còn không thì chuyển sang bước 8.
B7: Trả về cho client thông báo tài khoản này đã được đăng ký, kết thúc quá trình
đăng ký
B8: Trả về cho client thông báo tài khoản này chưa được đăng ký, chuyển sang
bước 9.
B9: Gửi tin nhắn đăng ký lên tổng đài SMS.
B10: Tổng đài SMS nhận request từ người dùng và forward thông tin sang slave
server.
B11: Slave Server truy xuất vào database lưu trữ thông tin user để kiểm tra tài
khoản người dùng đăng ký đã tồn tại trên hệ thống hay chưa một lần nữa.
B12: Slave server xử lý request. Nếu đăng ký không thành công thì sang B13, còn
không thì sang B15.
B13: Phản hồi lại tổng đài SMS là đăng ký không thành công.
B14: Tổng đài SMS gửi tin nhắn phản hồi cho người dùng đăng ký không thành
công.
B15: Server trả về cho người dùng đăng ký không thành công, kết thúc quá trình
đăng ký.
B16: Thêm User mới đăng ký vào database user của hệ thống.
B17: Phản hồi lại tổng đài SMS là đăng ký thành công.
B18: Tổng đài SMS gửi tin nhắn phản hồi cho người dùng đã đăng ký thành công.
B19: Server trả về cho người dùng đăng ký thành công, kết thúc quá trình đăng ký.
Chức năng quản lý thông tin cá nhân
Thông tin cá nhân của người chơi bao gồm:
- Tên tài khoản
- Cấp độ (Level)
- Danh hiệu
- Uy danh (điểm kinh nghiệm)
- Gold : Để có gold người chơi phải nạp thẻ. Người chơi có thể dùng loại tiền
này để chơi các trò chơi như đánh bài, Ai là triệu phú, xem bói, xổ số, mua
đồ.
- Xu: là loại tiền do người chơi nạp thẻ. Tuy nhiên loại tiền này chỉ có chức
năng mua đồ.
- Số trận thắng
- Số trận thua
- Số lần bỏ cuộc
33
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
34. Chức năng thống kê Top User:
Với một hệ thống game Online, chức năng quan trọng không thể thiếu đó là
top game thủ. Chức năng này có tác dụng kích thích người chơi đua top để có thứ
hạng cao nhất.
Top user bao gồm: Top đại gia, top kỷ lục triệu phú, bảng vàng triệu phú, top
cao thủ.
Đối với Top cao thủ có thống kê top cao thủ chung và top cao thủ cho từng
loại game.
HÌNH 12: BIỂU ĐỒ TUẦN TỰ MÔ TẢ QUÁ TRÌNH LẤY THÔNG TIN NGƢỜI CHƠI, TOP USER
Quá trình lấy thông tin được thực hiện qua 4 bước: User gửi request lên
Slave server, Slave server kết nối đến database để lấy thông tin, slave server xử lý
thông tin nhận được rồi gửi trả về cho người dùng.
Chức năng mua đồ, quản lý hòm đồ:
Mỗi người dùng trong Game có một nhận vật. Mỗi nhân vật sẽ có 2 vật phẩm
là quần áo và đầu tóc. Người dùng có thể thay đổi trang phục của mình bằng cách
mua trong cửa hàng. Những vật phẩm mà người dùng đã mua sẽ được cất trong hòm
đồ.
Quá trình mua đồ, lấy thông tin hòm đồ được thực hiện như sau:
34
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
35. HÌNH 13: BIỂU ĐỒ TUẦN TỰ MÔ TẢ QUÁ TRÌNH MUA ĐỒ, LẤY THÔNG TIN HÒM ĐỒ.
Đối với quá lấy thông tin hòm đồ, quá trình update dữ liệu vào database
không cần thực hiện. Chỉ quá trình mua đồ, Slave server phải thực hiện thêm bước
update dữ liệu mới vào bảng database hòm đồ của người dùng.
Chức năng kết bạn
Chức năng kết bạn được xây dựng sao cho người dùng có thể kết bạn với
nhiều người nhất, dễ dàng nhất.
Người chơi có thể kết bạn bằng cách nhập tên người mà họ muốn làm bạn.
Trong quá trình chơi game, người chơi có thể kết bạn với bất cứ người nào mà họ
gặp, cả kể ngoài đường phố hay trong phòng chờ của Game.
35
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
36. HÌNH 14: BIỂU ĐỒ TUẦN TỰ MÔ TẢ QUÁ TRÌNH KẾT BẠN.
Quá trình kết bạn được thực hiện qua 10 bước:
B1: User 1 gửi thông tin kết bạn lên Slave server (thông tin người muốn kết bạn
cùng).
B2: Slave server lấy thông tin database về thông tin của 2 người muốn kết bạn.
B3: Slave server xử lý thông tin. Trường hợp thông tin kết bạn không hợp lệ chuyển
sang bước 4.
B4: Thông báo cho User 1 là kết bạn không thành công, kết thúc việc kết bạn.
B5: Slave server gửi thông tin kết bạn đến User 2.
B6: User 2 xử lý thông tin kết bạn mà slave server gửi đến
B7: User 2 gửi phản hồi lên slave server là có đồng ý kết bạn hay không.
B8: Slave server xử lý thông tin User 2 gửi lên.
B9: Slave server update dữ liệu mới vào database
B10: Thông báo với User 1 là kết bạn thành công.
Chức năng quản lý hộp thƣ, bạn bè
Ý tưởng về chức năng hộp thư, bạn bè được thiết kế giống với Yahoo Chat.
Với chức năng này người dùng có thể lấy được danh sách bạn bè, có thể biết ai đang
online, offline. Có thể chat với bạn bè, hay có thể nhắn tin offline cho người đó.
36
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
37. Tuy nhiên, chức năng này vẫn còn nhiều hạn chế do tính chất của mạng điện
thoại rất chậm. Người chơi chỉ có thể kết bạn với tối đa 30 người, hộp tin nhắn chỉ
có thể hiện thị 20 tin nhắn.
Chức năng trò chuyện (Chat)
Một trong những chức năng quan trọng nhất của game online là chức năng
chat với người cùng chơi. Với chức năng chat người chơi có thể giao lưu, kết bạn,
trao đổi thông tin với nhau.
Chức năng tƣơng tác ngƣời chơi trong Game
Người chơi có thể tương tác với nhau trong Game bằng các hành động: hôn,
đánh nhau hoặc cách biểu lộ trạng thái như quỳ, nằm, ngồi, chạy, nhảy, hát, … Các
hành động này sẽ làm tăng tính tương tác giữa các người chơi trong Game, giúp
người chơi có cảm giác như mình được hóa thân vào nhân vật.
Chức năng xem bói
Chức năng xem bói bao gồm: bói bài và bói ngày may mắn.
Người chơi có thể sử dụng chức năng này sau khi đăng nhập vào hệ thống. Muốn
bói người dùng phải trả phí bằng Gold trong Game.
Dữ liệu của phần bói được lưu trữ trong Database content, có yêu cầu xem bói từ
phía ứng dụng người dùng, server sẽ truy xuất vào database content này để lấy nội
dung, sau đó trả về cho người dùng.
Chức năng chơi xổ số
Với chức năng này người dùng có thể mua vé số, sau đó so kết quả vé số vào
19h30 cùng ngày. Kết quả xổ số trả về sẽ trùng với kết quả xổ số ngoài thực tế.
Ngoài việc chơi xổ số, người dùng còn có thể xem kết quả xổ số của ngảy hôm
trước.
Chức năng chơi Game
Chức năng quan trọng nhất của hệ thống Game là người dùng có thể chơi các
trò chơi. Đây là nơi người chơi có sự trao đổi, tương tác với nhau nhiều nhất. Chức
năng này đặc biệt quan trọng, đòi hỏi hệ thống phải xử lý tốt, tránh trường hợp bị
lag, hack, …
Hệ thống có rất nhiều game để người dùng lựa chọn, bao gồm: Ai là triệu
phú, tá lả, tiến lên miền bắc, tiền lên miền nam, 3 cây. Ngoài ra, còn có các game
đang phát triển: Ghét nhau ném đá, đào vàng đôi, nông trại vui vẻ.
37
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
38. HÌNH 15: BIỂU ĐỒ MÔ TẢ TUẦN TỰ MÔ TẢ QUÁ TRÌNH CHƠI GAME.
Để vào chơi game, người chơi sẽ phải thực hiện các thao tác: đăng nhập,
chọn khu vực chơi, chọn game muốn chơi, chọn phòng, chọn bàn chơi, vào phòng
chờ (thực hiện các thao tác cài đặt, chỉnh thông số game), cuối cùng là chơi game.
Chức năng báo lỗi hệ thống
Đối với bất kỳ hệ thống nào, việc phát sinh lỗi là không thể tránh khỏi. Với
hàng ngàn người dùng sử dụng phần mềm, đây chính là đối tượng gần với hệ thống
nhất.
Khi gặp lỗi, người dùng có thể vào mục báo lỗi để gửi lỗi lên server, server
sẽ tiếp nhận lỗi và ghi vào kênh báo lỗi để người quản trị được biết.
Ngoài báo lỗi, người dùng có thể đóng góp ý kiến của mình về hệ thống
thông qua chức năng báo lỗi này.
Chức năng update phiên bản mới
Phiên bản Client chính của game được public tại địa chỉ m.qplay.vn. Khi có
phiên bản mới, người chơi sẽ nhận được thông báo đã có phiên bản mới.
Người dùng có thể update phiên bản mới bằng cách vào mục update Game. Khi đó
ứng dụng sẽ chuyển người chơi đến trang web chứa phiên bản mới nhất của game
để người dùng tải về.
Khi có phiên bản mới, người dùng có 2 lựa chọn: hoặc là vẫn sử dụng phiên
bản cũ, hoặc tải phiên bản mới về sử dụng. Tuy nhiên cũng có trường hợp người
dùng phải bắt buộc tải phiên bản mới thì mới có thể sử dụng được. Việc này do
người quản trị Game điều chỉnh trên server.
Chức năng nạp tiền
Để sử dụng được các chức năng trong Game, người chơi phải gold hoặc xu.
Đây là loại tiền ảo trong game, nó chỉ có tác dụng trong game mà không được quy
đổi ngược lại thành tiền thật.
Có hai hình thức nạp tiền:
Nạp tiền qua tin nhắn SMS: chức năng này khá tiện dụng cho người dùng,
bởi chỉ cần thực hiện thao tác nhắn tin SMS trong Game là người dùng có thể nạp
tiền một cách dễ dàng. Để có chức năng này, yêu cầu hệ thống phải có một đầu số
tổng đài, một hệ thống xử lý tin nhắn trên tổng đài. Khi nhận được tin nhắn SMS từ
khách hàng, dựa vào mã tin nhắn, tổng đài sẽ gửi về server của game nội dung tin
nhắn, server xử lý và trả về cho người dùng.
38
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
39. Nạp tiền bằng mã số thẻ cào (Viettel, Mobi, VinaPhone): Sẽ có nhiều
người thắc mắc tại sao chức năng nạp tiền qua tin nhắn SMS tiện dụng như vậy mà
lại phải có thêm chức năng nạp tiền qua thẻ cào???
Trên thực tế, chức năng này khá bất tiện bởi muốn nạp tiền người dùng phải
mua thẻ cào, sau đó điền mã thẻ để nạp tiền. Tuy nhiên, hệ thống game vẫn có chức
năng này là do hai nguyên nhân:
+ Thứ nhất: Việc thu tiền qua tin nhắn SMS sẽ bị hao hụt rất lớn, thông
thường mỗi tin nhắn SMS nhà sản xuất sẽ phải trả 45-55% tiền phí cho nhà mạng
(với 1 tin nhắn 5000đ thì phải trả cho nhà mạng khoảng 2750đ). Bù lại, với mỗi lần
người dùng nạp tiền bằng thẻ cào, nhà sản xuất game chỉ phải trả cho nhà cung cấp
dịch vụ thẻ cào 10% giá trị của thẻ cào đó.
+ Thứ hai: không phải người dùng nào cũng sử dụng điện thoại để chơi
game. Họ có thể chơi bằng giả lập trên PC, hay chơi trên các thiết bị khác hỗ trợ
game nhưng không hỗ trợ việc nhắn tin SMS. Hoặc sau này khi phát triển game trên
nền Web thì việc nạp tiền qua thẻ cào cũng rất tiện lợi.
1.1.2. Chức năng report hệ thống
Thống kê danh sách người dùng đăng ký trong ngày
Chức năng này dùng để liệt kê danh sách những tài khoản đã đăng ký nick
trong ngày hiện tại. Ngoài ra, người quản trị còn có thể lựa chọn xem danh sách
người dùng đã đăng ký nick của những ngày trước đó.
Các thông tin thống kê trong danh sách người dùng bao gồm: username, giới
tính, số điện thoại, số tiền, cấp độ, điểm kinh nghiệm, thắng, thua, đối tác, ngày
đăng ký tài khoản, trạng thái Online, slave server hiện tại đang kết nối đến, thời
điểm đăng nhập lần cuối cùng, version hiện tại đang sử dụng.
Ở mục này có thêm chức năng search tài khoản người dùng theo username.
Chức năng này giúp người quản trị hệ thống dễ dàng quản lý được người sử dụng,
đặc biệt là khi có khiếu nại hay vấn đề gì đó không bình thường từ phía người sử
dụng.
Thống kê danh sách người dùng đang online
Chức năng này giúp người quản trị biết được tại thời điểm hiện tại có bao
nhiêu người đang online và danh sách những tài khoản đang online.
Thống kê danh sách giao dịch trong ngày
Mục này sẽ liệt kê danh sách người dùng đã nạp tiền ở ngày hiện tại. Người
quản trị cũng có thể xem giao dịch của những ngày trước đó.
Thông tin thống kê danh sách giao dịch bao gồm:
- Số lượng giao dịch trong ngày
39
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
40. - Danh sách các tài khoản thực hiện giao dịch: tên tài khoản, hình thức thành
toán (tin nhắn SMS, thẻ cào VINA, thẻ cào MOBI, thẻ cào VIETTEL), đối
tác, số tiền giao dịch, thời gian thực hiện giao dịch.
Thống kê log người dùng chơi game
Chức năng này đặc biệt quan trọng, bởi nó giúp cho người quản trị hệ thống
có thể theo dõi được tình hình người chơi đang sử dụng dịch vụ như thế nào.
Ở mục này, hệ thống sẽ liệt kê tất cả những dữ liệu liên quan đến việc thay
đổi số tiền của người dùng trong game. Bao gồm: tiền thay đổi khi người chơi sử
dụng dịch vụ trong game, tiền thay đổi khi người chơi đánh bài, chơi ai là triệu phú
hay mua đồ, …
Bảng thống kê này sẽ giúp cho người quản trị theo dõi được những tài khoản
nào có biểu hiện gian lận để xử lý kịp thời. Đồng thời cũng là kênh đối soát đối với
những trường hợp khiếu nại của khách hàng.
Nhược điểm: khi số lượng người chơi nhiều, số lượng log sẽ rất lớn dẫn đến
gây nặng hệ server. Chính việc ghi log sẽ làm lag mạng, gây khó chịu cho người
chơi. Do đó phải tìm ra phương án ghi log một cách hiệu quả, chỉ chọn lọc những
thông tin cần thiết để ghi lại.
Thống kê Top User
Mục này sẽ thống kê top người dùng theo thứ tự giảm dần từ trên xuống dựa
theo tiền và điểm kinh nghiệm. Cụ thể có các loại Top cần thống kê bao gồm: Top
đại gia, Top cao thủ, top ba cây, top phỏm, top tiến lên.
Ở ứng dụng ở phía client, người dùng chỉ xem được Top này với số lượng
thống kê là 10 người. Còn ở bảng thống kê này, người quản trị có thể có thể theo
dõi danh sách thống kê bao gồm tất cả người dùng của hệ thống được sắp xếp theo
thứ tự giảm dần.
Từ bảng thống kê này người quản trị có thể biết được hiện tại tình hình có
bao nhiêu tài khoản đang có bao nhiêu tiền. Ví dụ có bao nhiêu tài khoản có số tiền
trên 1 triệu, trên 500 nghìn, …. Từ đó có thể đưa ra các chương trình khuyến mãi
nạp tiền cho hợp lý.
Thống kê lượng truy cập theo từng ngày
Chức năng này sẽ thống kê lượng người dùng truy cập vào hệ thống trong
một ngày. Số lượng truy cập được tính bằng số lần người chơi đăng nhập vào hệ
thống.
Thống kê danh sách người dùng mua đồ theo ngày
Chức năng này ghi lại danh sách người chơi thực hiện giao dịch mua đồ
trong ngày. Bao gồm: tên tài khoản, vật phẩm chọn mua, mã hàng và thời điểm mua
đồ.
Vật phẩm ở đây là quần áo, hoặc tóc. Mã hàng là loại quần áo hoặc đầu tóc
mà người dùng đã mua.
40
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
41. 1.1.3. Chức năng chăm sóc khách hàng
Chức năng thống kê ý kiến phản hồi
Mục này sẽ liệt kê những ý kiến mà khách hàng phản hồi về chất lượng dịch
vụ, tình trạng hệ thống hay những đóng góp, góp ý để hệ thống tốt hơn.
Danh sách thống kê bao gồm: tên tài khoản, nội dung phản hồi và thời gian
phản hồi.
Từ các phản hồi này, bộ phận chăm sóc khách hàng có thể giải đáp thắc mắc
với người dùng bằng chức năng gửi tin nhắn trực tiếp từ hệ thống hoặc thông qua
việc gọi điện cho khách hàng. Những trường hợp phức tạp, bộ phận chăm sóc khách
hàng sẽ tổng hợp lại phản hồi của khách hàng và gửi cho người quản lý hệ thống để
xử lý.
Chức năng thống kê giao dịch trong ngày
Thông thường những ý kiến khiếu nại của khách hàng liên quan đến hệ thống
tiền ảo trong game. Để đối soát với những phản hồi của khách hàng trong trường
hợp khách hàng đã nạp tiền nhưng không được cộng vào tài khoản. Bộ phận chăm
sóc khách hàng có thể kiểm tra xem trong thống kê giáo dịch đã có giao dịch của
khách hàng đó chưa và cộng lại tiền cho khách hàng.
Chức năng gửi tin nhắn đến khách hàng
Chức năng này có tác dụng để giải đáp những thắc mắc cho khách hàng một
cách nhanh chóng nhất. Sau khi gửi tin nhắn, người sử dụng sẽ nhận được tin nhắn
khi đăng nhập vào Game.
Chức năng cập nhật gold vào tài khoản cho khách hàng
Chức năng này giúp người quản lý có thể cập nhật lại số tiền cho khách hàng
khi có sai phạm trong quá trình nạp tiền hay lỗi game dẫn đến việc khách hàng bị
mất tiền.
41
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
42. 2. Thiết kế hệ thống
2.1. Kiến trúc hệ thống
2.1.1. Kiến trúc tổng quan
Để giảm tải cho server khi có nhiều người sử dụng cùng kết nối vào hệ
thống, ta đưa ra mô hình server phân tán. Hệ thống server sẽ được chia nhỏ thành
các Slave Server. Và tất nhiên các Slave Server này sẽ dùng chung cơ sở dữ liệu của
hệ thống và các dịch vụ thanh toán nạp tiền.
Với cách phân chia thành các Slave Server, hệ thống vẫn đảm bảo đáp ứng
được nhu cầu của người chơi game và giảm được gánh nặng cho hệ thống.
HÌNH16: KIẾN TRÚC TỔNG QUAN HỆ THỐNG.
Info Slave Server
- Là file lưu trữ thông tin về các slave server
- Bao gồm: địa chỉ IP và Port của mỗi slave server.
Là nơi mà client sẽ gọi đến đầu tiên để lấy danh sách các slave server. Sau
khi lấy được danh sách các slave server, client sẽ lựa chọn 1 slave server để kết nối
đến
Database Server User
- Là hệ thống quản lý tài khoản tập trung
42
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT
43. - Lưu trữ toàn bộ thông tin tài khoản người dùng
- Cung cấp các giao diện webservice, URL cho các ứng dụng khác truy cập lấy
thông tin
- Có cơ chế backup dự phòng, đảm bảo cung cấp dịch vụ 24/7 trong mọi tình
huống
- Thành phần bao gồm: Webserver, Database Server.
Database Server Content
- Là hệ thống quản lý nội dung tập trung
- Lưu trữ các nội dung, media phục vụ cho hoạt động kinh doanh trên toàn hệ
thống
- Cung cấp các giao diện Webservice, URL cho các ứng dụng khác truy cập
lấy thông tin
- Có cơ chế backup dự phòng, đảm bảo cung cấp dịch vụ 24/7 trong mọi tình
huống
- Thành phần bao gồm: webserver, Database Server
Yocity Slave Server
- Đóng vai trò một game Server
- Phục vụ yêu cầu kết nối từ Yocity client.
- Duy trì và điều phối Game Play của người chơi
- Truyền tải nội dung cho Client, kiểm soát thông tin tài khoản người dùng
thông qua Database Server User và Database Server Content
SMS Server
- Tiếp nhận tin nhắn SMS từ phía Client và trả lại tin nhắn phản hồi cho client.
- Xử lý tin nhắn từ phía Client, truyền tải nội dung đến slave server thông qua
hệ thống webservice.
- Lưu lại thông tin SMS từ phía người dùng vào database.
Web service SMS
- Là hệ thống trung gian để truyền tải nội dung từ SMS server đến slave server
tương ứng.
- Có cơ chế lưu trữ thông tin vào database.
- Đảm bảo cung cấp dịch vụ 24/7
- Có thể phục vụ cho nhiều hệ thống khác nhau.
Web service Vietpay
- Có vai trò trong việc đối soát mã số thẻ cào với nhà mạng Vietpay.
43
Sinh viên thực hiện: Phạm Ngọc Hoàng – SHSV: 20071254 – Khóa 52 – Lớp : KSTN - CNTT