Tải bản đầy đủ (.docx) (99 trang)

LUẬN VĂN XÂY DỰNG TRÒ CHƠI TRỰC TUYẾN TRÊN ANDROID

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (6.12 MB, 99 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THÔNG

KHÓA LUẬN TỐT NGHIỆP

TRÒ CHƠI TRỰC TUYẾN
TRÊN THIẾT BỊ DI ĐỘNG ANDROID

Giảng viên hướng dẫn: TS. ĐÀM QUANG HỒNG HẢI
Sinh viên thực hiện:
HOÀNG TRỌNG QUỐC BẢO

08520026

TRẦN HỮU ĐỨC

08520094

Lớp:

MẠNG MÁY TÍNH 03

Khóa:

2008-2013
TP. Hồ Chí Minh, tháng 03 năm 2013


MỞ ĐẦU



Có thể nói một trong những ngành giải trí mang lại nhiều lợi nhuận nhất đó là
ngành game. Game có mặt ở khắp mọi nơi, từ máy vi tính cho tới các thiết bị chơi game
chuyên dụng như XBOX360, Wii, Playstation… kể cả trên các thiết bị cầm tay như PSP,
GameBoy, NintendoDS và đặc biệt là trên điện thoại di động. Không có gì tiện dụng hơn
một chiếc điện thoại ngoài chức năng nghe gọi còn có thể chơi game để giải trí. Với sự ra
đời của hệ điều hành Android, ngày càng xuất hiện nhiều mẫu điện thoại giá cả hợp lý mà
tính năng mạnh mẽ, cùng với việc các nhà làm game nhảy vào mảnh đất màu mỡ này
khiến cho lĩnh vực game giải trí trên điện thoại phát triển hơn bao giờ hết. Game chia ra
làm hai loại chính là chơi trên máy (Offline) và chơi trực tuyến (Online). Trong đó nhóm
đặc biệt chú ý đến game trực tuyến vì khả năng kết nối cộng đồng, người chơi vừa có thể
giải trí vừa kết bạn vời người chơi khác, tạo ra các mối quan hệ xã hội.
Dựa trên tiêu chí đó, nhóm đã quyết định chọn đề tài “Trò chơi trực tuyến trên
thiết bị di động Android” cho khóa luận tốt nghiệp lần này, với ước muốn xây dựng một
sân chơi lành mạnh nhưng không kém phần hấp dẫn, thú vị cho mọi người.
Cấu trúc khóa luận:
Khóa luận tốt nghiệp bao gồm các chương sau:
Chương 1: Giới thiệu tổng quan
Chương 2: Kiến trúc hệ điều hành Android – giới thiệu tổng quan về AndEngine,
PHP và MySQL
Chương 3: Phân tích các chức năng của trò chơi “Pokemon Online”
Chương 4: Sản phẩm hoàn thiện: Trò chơi “Pokemon Online”
Chương 5: Kết luận


LỜI CẢM ƠN
Chúng em xin gửi lời cám ơn chân thành và sâu sắc tới Thầy TS Đàm Quang
Hồng Hải đã tận tình chỉ bảo, hướng dẫn và tạo điều kiện giúp chúng em hoàn thành đề
tài khóa luận tốt nghiệp đúng tiến độ. Trong thời gian thực hiện đề tài, thầy đã hỗ trợ cho
chúng em rất nhiều về mặt ý tưởng và tài liệu, trên hết thầy đã truyền đạt những kiến thức

quý báu, kinh nghiệm thực tiễn và thổi bầu nhiệt huyết, đam mê với ngành Công nghệ
thông tin vào trong chúng em. Chúng em cũng xin chân thành cảm ơn quý thầy cô Khoa
Mạng máy tính và Truyền thông đã giảng dạy và truyền đạt cho chúng em những kinh
nghiệm cần thiết hỗ trợ cho việc thực hiện đề tài lần này.
Chúng con cũng xin được gửi lời cảm ơn đến cha mẹ, những người đã sinh ra và
nuôi dưỡng chúng con, cho chúng con ăn học thành tài, cũng như tạo mọi điều kiện tốt
nhất có thể để chúng con làm tốt đề tài.
Do kiến thức, kinh nghiệm và thời gian có hạn nên dù chúng em đã làm với tất cả
sự cố gắng và nhiệt tình của mình thì cũng khó có thể tránh khỏi những khiếm khuyết.
Chúng em mong nhận được sự lượng thứ, thông cảm cho những thiếu sót đó và sẵn sàng
ghi nhận những ý kiến đóng góp quý giá của quý thầy cô để đề tài được hoàn thiện hơn.

TP. Hồ Chí Minh, tháng 03 năm 2013
Nhóm Sinh Viên thực hiện

Hoàng Trọng Quốc Bảo và Trần Hữu Đức


NHẬN XÉT
(Của giảng viên hướng dẫn)
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………

………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
……………………………………………………………………………………….


NHẬN XÉT
(Của giảng viên phản biện)
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………

………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
……………………………………………………………………………………….


Mục lục
MỞ ĐẦU
LỜI CẢM ƠN
MỤC LỤC
DANH MỤC HÌNH ẢNH
DANH MỤC BẢNG BIỂU

DANH MỤC HÌNH ẢNH


DANH MỤC BẢNG BIỂU


Trang 8

CHƯƠNG I: GIỚI THIỆU TỔNG QUAN
1.1.


Giới thiệu đề tài:
Pokemon (pocket monster) là loại trò chơi điện tử chiến đấu theo lượt mà người

chơi sẽ thu phục những con quái vật sau đó nhốt chúng vào trong quả cầu bắt quái vật
(pokeball), và có thể gọi ngược trở ra để chiến đấu với các pokemon khác. Pokemon đầu
tiên được tung ra trên hệ máy chơi game cầm tay nổi tiếng của hãng Nintendo :
GameBoy, sau đó lần lượt được phát triển qua các phiên bản mới với hình ảnh đẹp hơn,
cách chơi thú vị hơn và trên một số hệ máy khác như Nintendo DS, GameCube...
Ý tưởng của đề tài là xây dựng game tương tự Pokemon trên điện thoại Android
nhưng theo kiểu Server,trong đó có phòng chơi, trong phòng chơi có nhiều bàn chơi, một
bàn chơi cho phép hai người chơi trò chuyện và chiến đấu với nhau bằng các con quái vật
pokemon. Những người chơi khác có thể vào bàn đấu để xem trực tiếp hai người chơi
đấu với nhau hoặc có thể xem lại toàn bộ trận đấu vào một thời điểm khác. Trò chơi cũng
có các chức năng phổ biến của hầu hết các game trực tuyến khác là chat, kết bạn, mua
bán vật phẩm và bảng xếp hạng. Ngoài ra trò chơi còn đáp ứng nhu cầu thực tế ngày càng
cao của người chơi bằng cách cho họ trải nghiệm thực trên bản đồ Google Maps, trong đó
người chơi sẽ di chuyển trên bản đồ qua việc đi lại thực sự trên đường phố, khi đến vùng
có quái vật xuất hiện thì sẽ có tương tác cho phép người chơi chiến đấu với chúng bằng
cách chạm vào biểu tượng trên màn hình. Kiểu chơi game này đòi hỏi người chơi phải di
chuyển thực sự, đem đến sự mới lạ và thú vị cho người chơi so với cách chơi game
truyền thống là ngồi một chỗ và điều khiển nhân vật trong game di chuyển, đồng thời
việc người chơi đi lại ngoài thế giới thực cũng giúp họ vận động cơ thể như một bài tập
thể dục nhỏ, người chơi cũng có thể tranh thủ ra ngoài ngắm cảnh vật đường phố thay vì
ngồi trong nhà chơi game. Ngoài ra trò chơi cũng hỗ trợ cho người chơi chiến đấu với
nhau trên bản đồ, khi hai hoặc nhiều người chơi xuất hiện trong phạm vi hoạt động của
nhau, bằng cách chạm vào biểu tượng của người chơi khác ta có thể thách đấu với họ, và
cần phải có sự đồng ý của người đó thì mới bắt đầu chiến đấu.
GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo

Trần Hữu Đức


Trang 9
1.2.

1.3.

Mục tiêu của đề tài:
-

Xây dựng một trò chơi kiểu Server có phòng chơi và bàn chơi, cho phép người

-

chơi trò chuyện và chiến đấu với nhau.
Xây dựng trò chơi trên nền bản đồ Google Maps, đáp ứng yêu cầu thực tế của

-

người chơi.
Xây dựng hệ thống chat, kết bạn, bảng xếp hạng 10 người chơi có điểm số

-

danh vọng cao nhất.
Xây dựng trang web tin tức, thông báo sự kiện, danh sách người chơi đang

-


online, các trận đấu đang diễn ra và cho biết kết quả trận đấu.
Xây dựng trang web quản lý của quản trị viên.

Ý nghĩa thực tiễn của đề tài:
Tạo ra một trò chơi mà thông qua đó người dùng sử dụng để giải trí, thư giãn.

Đồng thời người dùng có thể tương tác, trò chuyện với người chơi khác cũng như khám
phá và kết bạn với những người chơi mới, mở rộng mối quan hệ xã hội của mình.

GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo
Trần Hữu Đức


Trang 10

CHƯƠNG II: KIẾN TRÚC HỆ ĐIỀU HÀNH ANDROID - GIỚI
THIỆU TỔNG QUAN VỀ ANDENGINE, PHP VÀ MYSQL
2.1.
Giới thiệu chung về hệ điều hành Android:
2.1.1. Giới thiệu sơ bộ về hệ điều hành:

Android là một hệ điều hành di động dựa trên nền tảng linux phiên bản 2.6 dành
cho các dòng điện thoại SmartPhone. Đầu tiên được ra đời bởi công ty liên hợp Android,
sau đó được Google mua lại và phát triển từ năm 2005 và trở thành một hệ điều hành di
động mã nguồn mở, miễn phí, mạnh mẽ và được ưa chuộng cao trên thế giới.
Hệ điều hành Android là một hệ điều hành rất mạnh, có tính bảo mật cao, hỗ trợ
được nhiều công nghệ tiên tiến như 3G, GPS, EDGE, Wifi, NFC.. tương thích với nhiều
phần cứng, hỗ trợ nhiều loại bộ nhập dữ liệu như bàn phím, cảm ứng chạm và banh điều

hướng (trackball). Android là hệ điều hành di động nên có khả năng kết nối cao với các
mạng không dây. Hỗ trợ công nghệ OpenGL nên có khả năng chơi các phương tiện
truyền thông giải trí, hoạt hình cũng như trình diễn các khả năng đồ họa khác cực tốt, là
tiền đề để phát triển các ứng dụng có giao diện phức tạp chẳng hạn như là các trò chơi
điện tử.
Android liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần Android
được tối ưu hóa để hoạt động tốt hơn, nhanh và ổn định hơn, hỗ trợ thêm công nghệ mới.
Chẳng hạn như theo một đánh giá thì Android phiên bản 2.2 hoạt động nhanh hơn bản
2.1 tới 450%. Hiện nay, phiên bản mới nhất 4.2 ra đời năm 2012 và đang tiếp tục được
cập nhật.

GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo
Trần Hữu Đức


Trang 11
2.1.2. Kiến trúc hệ điều hành Android:

Hệ điều hành Android có 4 tầng từ dưới lên trên là tầng hạt nhân Linux (Phiên bản
2.6), tầng Libraries & Android runtime , Tầng Application Framework và trên cùng là
tầng Application.

Hình 2.1: Kiến trúc hệ điều hành Android

2.1.2.1. Tầng hạt nhân Linux (Linux Kernel layer):
Hệ điều hành Android được phát triển dựa trên hạt nhân linux, cụ thể là hạt nhân
linux phiên bản 2.6, điều đó được thể hiện ở lớp dưới cùng này. Tất cả mọi hoạt động của
điện thoại muốn thi hành được thì đều được thực hiện ở mức cấp thấp ở lớp này bao gồm

quản lý bộ nhớ (memory management), giao tiếp với phần cứng (driver model), thực hiện
bảo mật (security), quản lý tiến trình (process).
GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo
Trần Hữu Đức


Trang 12

Tuy được phát triển dựa vào nhân linux nhưng thực ra nhân linux đã được nâng
cấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị cầm tay như hạn chế
về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu cầu kết nối mạng không
dây....
Tầng Libraries:

2.1.2.2.

Tầng này gồm nhiều thư viện được viết bằng C/C++ để các phần mềm có thể sử
dụng, các thư viện đó được tập hợp thành một số nhóm như :
-

Thư viện hệ thống (System C library) : Thư viện dựa trên chuẩn C, được sử

-

dụng chỉ bởi hệ điều hành.
Thư viện Media (Media Libraries) : Có nhiều mã để hỗ trợ việc phát và ghi các

-


loại định dạng âm thanh, hình ảnh, video thông dụng.
Thư viện web (LibWebCore) : Đây là thành phần để xem nội dung trên web,
được sử dụng để xây dựng phần mềm duyệt web (Android Browser) cũng như
để các ứng dụng khác có thể nhúng vào. Nó cực kỳ mạnh, hỗ trợ được nhiều

2.1.2.3.

công nghệ mạnh mẽ như HTML5, JavaScript, CSS, DOM, AJAX..
Thư viện SQLite : Hệ cơ sở dữ liệu để các ứng dụng có thể sử dụng.
Tầng Android runtime:

Tầng này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java có thể
hoạt động. Nó gồm có hai bộ phận tương tự như mô hình chạy Java trên máy tính thường:
thứ nhất là các thư viện lõi (Core Library), chứa các lớp như JAVA IO, Collections, File
Access và thứ hai là một máy ảo java (Dalvik Virtual Machine).
Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của hệ điều
hành Android không được chạy bằng JRE của Sun (nay là Oracle) (JVM) mà là chạy
bằng máy ảo Dalvik do Google phát triển.
2.1.2.4.

Tầng Application Framework:
Tầng này xây dựng bộ công cụ, các phần tử ở mức cao để các lập trình viên có thể

nhanh chóng xây dựng ứng dụng. Nó được viết bằng Java, có khả năng sử dụng chung để
tiết kiệm tài nguyên.

GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo

Trần Hữu Đức


Trang 13

Đây là một nền tảng mở, điều đó có hai cái lợi:
-

Với các hãng sản xuất điện thoại : Có thể tùy biến để phù hợp với cấu hình
điện thoại mà họ sản xuất cũng như để có nhiều mẫu mã, phong cách hợp thị
hiếu người dùng. Vì thế nên tuy cùng chung nền tảng Android mà điện thoại

-

của Google có thể khác hẳn với Motorola, HTC, T-Mobile, Samsung...
Với lập trình viên : Cho phép lập trình viên có thể sử dụng các API ở tầng trên
mà không cần phải hiểu rõ cấu trúc bên dưới, tạo điều kiện cho lập trình viên
tự do sáng tạo bởi vì chỉ cần quan tâm đến nội dung mà ứng dụng họ làm việc.
Một tập hợp API rất hữu ích được xây dựng sẵn như hệ thống định vị, các dịch
vụ chạy nền, liên lạc giữa các ứng dụng, các thành phần giao diện cấp cao ...

Giới thiệu một số thành phần của tầng này :
-

Activity Manager : Quản lý vòng đời của một ứng dụng cũng như cung cấp

-

công cụ điều khiển các Activity.
Telephony Manager : Cung cấp công cụ để thực hiện việc liên lạc như gọi điện


-

thoại.
XMPP Service : Cung cấp công cụ để liên lạc trong thời gian thực.
Location Manager : Cho phép xác định vị trí của điện thoại thoại dựa vào hệ

-

thống định vị toàn cầu GPS và Google Maps.
Window Manager : Quản lý việc xây dựng và hiển thị các giao diện người

-

dùng cũng như tổ chức quản lý các giao diện giữa các ứng dụng.
Notication Manager : Quản lý việc hiển thị các thông báo (như báo có tin nhắn,

-

có e-mail mới..).
Resource Manager : Quản lý tài nguyên tĩnh của các ứng dụng bao gồm các tập
tin hình ảnh, âm thanh, giao diện, chuỗi kí tự. (Những thành phần không được
viết bởi ngôn ngữ lập trình).
Tầng Application:

2.1.2.5.

Đây là lớp ứng dụng giao tiếp với người dùng, bao gồm các ứng dụng như :
-


Các ứng dụng cơ bản, được cài đặt dính liền với hệ điều hành là gọi điện thoại
(phone), quản lý danh bạ (Contacts), duyệt web (Web Browser), nhắn tin

GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo
Trần Hữu Đức


Trang 14

(SMS), lịch làm việc (Calendar), đọc e-mail (Email-Client), bản đồ (Maps),
-

quay phim chụp ảnh (camera)...
Các ứng dụng được cài thêm như các phần mềm chứng khoán (Stock), các trò
chơi (Game), từ điển...

Các chương trình có các đặc điểm là :
-

Viết bằng Java, phần mở rộng là .apk .
Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine được dựng
lên để phục vụ cho nó. Nó có thể là một Active Program : Chương trình có
giao diện tương tác với người sử dụng hoặc là một background : chương trình

-

chạy nền hay là dịch vụ.
Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thời

điểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên, với mỗi ứng
dụng thì có duy nhất một thực thể (instance) được phép chạy mà thôi. Điều đó

-

có tác dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn.
Các ứng dụng được gán số ID của người sử dụng nhằm phân định quyền hạn

-

khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống.
Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di động
khác, Android cho phép một ứng dụng của bên thứ ba được phép chạy nền.
Các ứng dụng đó chỉ có một hạn chế nhỏ đó là nó không được phép sử dụng
quá 5~10% công suất CPU, điều đó nhằm để tránh độc quyền trong việc sử

-

dụng CPU.
Ứng dụng không có điểm vào cố định, không có phương thức main để bắt đầu.

2.1.3. Hệ thống tập tin trên hệ điều hành:

Trong phạm vi một bài tìm hiểu về hệ điều hành, chúng em chỉ xin tìm hiểu rõ một
vấn đề của hệ điều hành Android đó là vấn đề quản lý hệ thống tập tin. Phần này có điểm
thuận lợi để tìm hiểu đó là vì được phát triển từ nhân linux nên hệ thống tập tin trên
Android cực kỳ giống hệ thống tập tin trên linux như là về cách tổ chức, những quyền
hạn của người sử dụng lên tập tin...

GVHD: TS. Đàm Quang Hồng Hải


SVTH: Hoàng Trọng Quốc Bảo
Trần Hữu Đức


Trang 15

2.1.3.1.

Tổng quan về hệ thống tập tin trên Android.

Trong Android, các tập tin được tổ chức thành các thư mục, theo mô hình phân
cấp. Tham chiếu đến một tập tin bằng tên và đường dẫn. Các câu lệnh thao tác tập tin cho
phép thực hiện các chức năng như dịch chuyển, sao chép toàn bộ thư mục cùng với các
thư mục con chứa trong nó…
Có thể sử dụng các ký tự, dấu gạch dưới, chữ số, dấu chấm và dấu phảy để đặt tên
cho tập tin. Không được bắt đầu tên một tập tin bằng dấu chấm hay chữ số. Những ký tự
khác như ‘/’, ‘?’, ‘*’, là ký tự đặc biệt được dành riêng cho hệ thống. Chiều dài của tên
tập tin có thể tới 256 ký tự. Trong hệ điều hành Android có sự phân biệt tên tập tin chữ
hoa và chữ thường, điều đó có nghĩa là trong cùng một thư mục có thể tồn tại những tập
tin có tên là File, FILE, file.. và chúng là những tập khác nhau..
Tất cả các tập tin trong Android có chung cấu trúc vật lý là chuỗi các byte (byte
stream). Cấu trúc thống nhất này cho phép Android áp dụng khái niệm tập tin cho mọi
thành phần dữ liệu trong hệ thống. Thư mục cũng như các thiết bị được xem như tập tin.
Chính việc xem mọi thứ như các tập tin cho phép Android quản lý và chuyển đổi dữ liệu
một cách dễ dàng. Một thư mục chứa các thông tin về thư mục, được tổ chức theo một
định dạng đặc biệt. Các thành phần được xem như các tập tin, chúng được phân biệt dựa
trên kiểu tập tin: tập tin thường (ordinary file), tập tin thư mục (directory file), tập tin
thiết bị (character device file) và tập tin khối (block device file).


2.1.3.2.

Các kiểu tập tin trên Android:

Trong nhiều hệ điều hành như Windows, người ta phân biệt rõ tập tin (file) và thư
mục (folder hay directory) là hai thành phần khác hẳn nhau. Tuy nhiên trên hệ điều hành
Android (cũng như linux) thì coi thư mục cũng là tập tin và nó là một loại tập tin đặc biệt.
2.1.4. So sánh giữa các hệ điều hành:

2.1.4.1. So sánh giữa hệ điều hành di động và hệ điều hành trên Desktop:
-

Giống nhau về bản chất hệ điều hành, những thành phần lõi hệ điều hành.
Khác nhau :

GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo
Trần Hữu Đức


Trang 16

+ Hệ điều hành di động : hoạt động trên các thiết bị nhỏ gọn, hạn chế
nhất là về vấn đề năng lượng. Pin thì có hạn, vì thế tất cả các thành
phần trên thiết bị đều phải tối ưu để tiết kiệm pin, điều đó nảy sinh
nhiều mâu thuẩn với nhu cầu sử dụng của người dùng.
+ Màn hình càng lớn và càng sáng thì sẽ tốn điện càng nhiều.
+ Bộ nhớ lớn thì chi phí về điện cũng sẽ cao.
+ Bộ vi xử lý càng nhanh thì càng tốn điện.

Điều đó chưa kể đến việc thiết bị di động thì phải nhỏ gọn, nhẹ nhàng, vì vậy càng
đè nặng việc phải tối ưu phần cứng. Khi đó hệ điều hành di động cũng có trách nhiệm
phải tối ưu hoạt động của mình để tiết kiệm năng lượng một cách tối đa.
-

Nó phải quản lý các ứng dụng không để các ứng dụng chạy chiếm quá nhiều
tài nguyên, tránh sự độc quyền, xung đột, tranh chấp tài nguyên giữa các ứng
dụng trong khi các hệ điều hành chạy Desktop thì ít chú ý hơn. Hệ điều hành di
động luôn có bộ công cụ quản lý điện năng sử dụng trong máy, trong những
tình huống cần thiết thì hệ thống sẽ tự tắt những ứng dụng không cần thiết để

-

duy trì các chương trình cần thiết hơn hoạt động.
Đa số các hệ điều hành trên Desktop đều cho phép nhiều ứng dụng chạy đồng
thời (đa nhiệm) và khá tự do. Trong khi đó, các hệ điều hành chạy trên di động
thường không cho phép chạy đa nhiệm, hoặc có đa nhiệm thì các ứng dụng bị

-

giới hạn khá nhiều.
Việc hiển thị giao diện trên một khung hình nhỏ cũng là điều khó khăn hơn so
với hệ điều hành chạy trên Desktop, thường thì trên hệ điều hành di động gần
như không có giao diện cửa sổ cho phép nhiều ứng dụng cùng hiển thị một lúc
mà chỉ là một giao diện mà trên đó mỗi thời điểm chỉ hiển thị một giao diện

-

của một ứng dụng mà thôi.
Hệ điều hành di động phải có khả năng hoạt động liên tục không ngừng nghỉ

để đảm bảo liên lạc, đảm bảo kết nối của thiết bị tới mạng không dây cần kết
nối trong khi vẫn di chuyển. Vì thế cần được thiết kế đặc biệt hơn so với hệ
điều hành trên Desktop.

GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo
Trần Hữu Đức


Trang 17

2.1.4.2. So sánh hệ điều hành Android với các hệ điều hành di động khác:
-

Giống nhau : Đều là hệ điều hành di động nên mang đầy đủ bản chất của hệ

-

điều hành di động nói chung (đã đề cập ở trên) .
Khác nhau :
+ Android là hệ điều hành mã nguồn mở và miễn phí trong khi các hệ
điều hành di động còn lại đều là nguồn đóng và có phí (khi một hãng
thứ hai sử dụng).
+ Android được phát triển từ nhân linux do đó nó có thể chạy tốt trên
nhiều dòng điện thoại khác nhau. Có độ tương thích cao với các
loại phầnn cứng khác nhau nhiều hơn so với các hệ điều hành di
động còn lại.
+ Các ứng dụng chạy trên Android được viết bằng Java, trong khi đó
ứng dụng trên các hệ điều hành khác chủ yếu là viết bằng C/C+

+/Object C. Ngay cả Symbian có hỗ trợ Java thì cũng khác so với
Android, trong khi hệ điều hành Android sử dụng máy ảo Java là
Dalvik VM do chính Google phát triển thì Symbian lại sử dụng
máy ảo Java là J2ME của Sun.

2.1.5. Lịch sử phát triển và hướng phát triển trong tương lai:
2.1.5.1.
Lịch sử phát triển:

Android là hệ điều hành trên điện thoại di động (và hiện nay là cả trên một số đầu
phát HD, HD Player) phát triển bởi Google và dựa trên nền tảng Linux. Trước đây,
Android được phát triển bởi công ty liên hợp Android ( sau đó được Google mua lại vào
năm 2005). Theo NPD, thiết bị di động sử dụng hệ điều hành Android bán được tại Mỹ
trong quý II năm 2010 xếp vị trí đầu tiên với 33%, thứ 2 là BB OS với 28% và iOS ở vị
trí thứ 3 với 22%. Android có một cộng đồng những nhà phát triển rất lớn viết các ứng
dụng cho hệ điều hành của mình. Hiện tại có khoảng hơn 1,000,000 ứng dụng cho hệ
điều hành Android và vào khoảng 1,000,000 ứng dụng đã được đệ trình, điều này khiến
Android trở thành hệ điều hành di động có môi trường phát triển lớn thứ hai trên thế giới
sau iOS. Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java. Sự ra
GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo
Trần Hữu Đức


Trang 18

mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết
bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm
mục đính tạo nên một chuẩn mở cho điện thoại di động trong tương lai. Google công bố

hầu hết các mã nguồn của Android theo bản cấp phép Apache. Hệ điều hành Android bao
gồm: 3 triệu dòng XML, 2.8 triệu dòng mã C, 2.1 triệu mã JAVA và 1.75 triệu dòng mã
C++.
2.1.5.2.

Hướng phát triển trong tương lai:

Hiện tại thì Android đang rất phát triển, hướng đi quan trọng nhất hiện giờ (15-12013) là Google sẽ tích hợp điện toán đám mây trên hệ điều hành Android và bảo mật dữ
liệu.

GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo
Trần Hữu Đức


Trang 19

2.2.

Tổng quan về Andengine:

2.2.1. Giới thiệu:
Andegine là engine OpenGL mã nguồn mở dành cho thiết kế game trên nền tảng
Android, được thiết kế bởi Nicolas Gramlich. Điểm nổi bật nhất của Andegine so với các
engine khác là nó đơn giản, dễ sử dụng, tiện dụng ngay với cả những người không có
nhiều kinh nghiệm với OpenGL. Do đó các lập trình viên mới tiếp xúc với OpenGL
nhưng có kinh nghiệm với ngôn ngữ Java vẫn có thể tạo ra những phần mềm ứng
dụng/trò chơi đặc sắc, độc đáo.
2.2.2. Các tính năng quan trọng của Andengine:

-

Tự động cân bằng kích cỡ màn hình (scaling) cho các thiết bị khác nhau với

-

các độ phân giải khác nhau.
Hỗ trợ cảm ứng đa điểm (multi touch).
Hỗ trợ tương tác vật lý Box2D (physic extension –Box2D) – tính năng nổi bật

-

của trò chơi AngryBirds.
Bản đồ khung (TiledMap) được hỗ trợ theo chuẩn TMX.
Hệ thống hạt/mảnh (Particle System).
Phần mở rộng hình nền động (live wallpaper extension).
Ưu điểm của Andengine:

2.2.2.1.

-

Mã nguồn mở miễn phí.
Những nền tảng, khía cạnh của bất cứ một thể loại game nào đều đã được hỗ

-

trợ sẵn.
Đơn giản, tiện dụng, không đòi hỏi kinh nghiệm sử dụng OpenGL của người


-

dùng.
Giao diện sử dụng trực quan, tốc độ nhanh.
Cộng đồng người dùng đông đảo, được hỗ trợ nhanh chóng nếu có thắc mắc.
Có nhiều phần mở rộng (extension) cho engine.
Nhiều ví dụ, hướng dẫn sử dụng (example project, snippet, tutorial).
Khuyết điểm của Andengine:

2.2.2.2.

-

Gần như không có tài liệu hướng dẫn chính thức nào.
Đôi lúc lại chậm hơn so với các engine khác.

GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo
Trần Hữu Đức


Trang 20

Tuy nhiên thiếu sót về tài liệu hướng dẫn được bù đắp bằng sự hỗ trợ đắc lực của
cộng đồng người dùng đông đảo với rất nhiều ví dụ lớn nhỏ, phần mềm (project) và tính
đơn giản của bản thân engine.
Tương tác vật lý (Box2D Physics Engine):

2.2.2.3.


AndEngine tích hợp thư viện mã nguồn mở JBox2D – bản chuyển thể của hệ
thống vật lýBox2D physics engine. Nó được dùng trong các ứng dụng tương tác vật lý
thời gian thực giữa các đối tượng theo các hướng sau:
-

Giả lập tính chất vật lý của vật thể rắn.
Xếp chồng các vật thể lên nhau.
Trọng lực.
Đơn vị xác định người dùng (user – defined unit).
Các thể loại giải đố có tương tác (như đẩy thùng).
Ma sát trượt.
Một vài hiệu ứng khớp nối (joint) : khoảng cách, gập (revolute), lăng trụ

-

(prismatic), ròng rọc (pulley), bánh răng (gear)…
Hiệu ứng ngủ (gỡ bỏ vật thể không chuyển động ra khỏi giả lập cho đến khi có
tương tác chạm).
Ý tưởng trò chơi viết bằng Andengine:

2.2.2.4.

Cách giải thích đơn giản nhất về cách tạo ra một trò chơi là dựng một bộ phim. Để
hoàn thành ra một cuốn phim, người đạo diễn cần có máy quay phim (camera), các cảnh
quay (scene), nhân vật, nội dung, hiệu ứng hình ảnh, âm thanh … và một trò chơi cũng có
các yếu tố chính tương tự.
-

Máy quay (Camera): là góc nhìn của trò chơi, là phần muốn thể hiện cho người

dùng thấy. Camera là một phần không thể thiếu đối với sự thành công của một

-

trò chơi.
Cảnh quay (Scence): cũng như một bộ phim, trò chơi cần có các cảnh được bố
trí sẵn, cảnh quay mà các nhân vật sẽ thực hiện những hành động của mình.

-

Cảnh quay trong trò chơi được thay đổi bởi người chơi.
Lớp (Layer): là một lớp hình ảnh. Những cảnh quay được tạo ra bởi nhiều lớp
hình ảnh khác nhau. Chúng được xếp chồng lên nhau và “lật” để tạo ra hiệu

GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo
Trần Hữu Đức


Trang 21

ứng (giống như vẽ từng hình trong sách rồi lật nhanh). Layer có thể tạo ra hiệu
ứng 2.5D bằng cách sắp xếp tốc độ thay đổi của layer, các layer gần thay đổi/di
-

chuyển nhanh hơn các layer ở xa.
Nhân vật (Sprite): là đại diện cho các vật thể trong trò chơi, cách hoạt động
tương tự như diễn viên trong một bộ phim. Nhân vật có thể có chuyển động
hoặc không, nhưng chúng thường hay di chuyển theo cảnh quay trong quá trình

trò chơi đang chạy. Hình ảnh nhân vật thường được tải vào từ một bức ảnh lớn

-

chứa nhiều ảnh nhân vật nhỏ gọi là bảng nhân vật (sprite sheet).
Vật thể (Entity): là tất cả những gì được vẽ lên màn hình, bao gồm nhân vật,
cảnh nền, vật chắn, đường thẳng…. Tất cả các vật thể có thuộc tính như màu
sắc, góc xoay (rotation), kích thước co giãn (scale) và tọa độ hiển thị đều có thể

-

điều chỉnh được bằng bộ điều chỉnh (Modifier).
Bộ điều chỉnh (Modifier): điều chỉnh thuộc tính của vật thể. Có thể điều chỉnh
thuộc tính của bất kỳ vật thể nào ngay lập tức hoặc từ từ theo thời gian định
sẵn. Trong trò chơi ta sẽ thường xuyên sử dụng bộ điều chỉnh để tạo ra hiệu

-

ứng của các vật thể.
Ảnh bề mặt (Texture): là một hình ảnh hai chiều được vẽ lên vật thể để thể
hiện chúng. Rất nhiều bộ thư viện mở OpenGL được xây dựng dựa trên cách

-

sử dụng Texture.
Miền hình ảnh (Texture Region): một texture chứa một bức ảnh hoàn chỉnh, và

-

một miền hình ảnh thể hiện một vùng nhỏ của texture đó.

Công nghệ nền (Engine): là phần sẽ chạy các cảnh quay (scene). Nó giữ vai trò
thông báo cho các hiệu ứng chuyển động (animation) và bộ điều chỉnh biết khi
nào thì cập nhật hình ảnh đang thể hiện, dựa theo cách vẽ hiện tại, nhập liệu
người dùng (chạm, nhấn phím, cảm ứng), và quản lý toàn bộ quá trình chơi trò
chơi. Engine tương tự như nhà sản xuất / đạo diễn của bộ phim, chỉ đạo diễn

-

xuất của diễn viên.
Lớp BaseGameActivity: kế thừa từ lớp Activity của Android, là lớp cơ bản của
mỗi cảnh quay trong trò chơi. Nó làm tất cả những công việc chung của các
cảnh quay, thiết lập engine của trò chơi, tuân theo vòng đời của một Activity
(Android Activity Lifecycle) và bật cảm ứng.

GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo
Trần Hữu Đức


Trang 22

-

Bộ kết nối vật lý (Physics Connector): về cơ bản Andengine đã có hệ thống vật
lý cơ bản trong đó, nhưng hệ thống vật lý Box2D Physics Engine làm mở rộng
khả năng này lên gấp nhiều lần. Andengine được kết nối với Box2D bằng bộ
kết nối vật lý. Nếu trò chơi không sử dụng Box2D thì sẽ không có bộ kết nối
vật lý.


2.2.3. So sánh giữa GLES 1 và GLES 2:
AndEngine đã được phát triển thành hai phiên bản (hai nhánh) là GLES 1 và
GLES 2. GLES 1 hiện tại đã bị ngưng phát triển. GLES 2 là phiên bản mới nhất và vẫn
còn đang tiếp tục phát triển.
Sự khác biệt:
-

GLES 2 yêu cầu sử dụng hệ điều hành Android >= 2.2
GLES 2 trong một số trường hợp chậm hơn GLES 1
GLES 2 vẫn còn đang được tiếp tục phát triển

Chọn lựa:
GLES 2 là ưu tiên hàng đầu vì nó vẫn được tiếp tục phát triển nên sẽ có nhiều tính
năng được phát triển vào thời gian tới. Tuy nhiên nếu phần mềm muốn được sử dụng
rộng rãi thì GLES 1 là lựa chọn tốt hơn vì nó hỗ trợ tất cả các hệ điều hành android.

Hình 2.1: Biểu đồ mức độ phân phối các phiên bản hệ điều hành Android
GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo
Trần Hữu Đức


Trang 23

Khác biệt về khả năng đáp ứng (performance):
Như đã nêu ở trên GLES 2 chạy chậm hơn trong một số trường hợp so với
GLES 1. Tiến hành ba lần kiểm tra GLES1 và GLES2 trên điện thoại Samsung Galaxy S
bằng cách tạo ra 1500 vật thể với chuyển động và xoay ta có kết quả sau về tỉ lệ khung
hình mỗi giây (frame per second – fps):

GLES 1:

GLES 2:

1) 10.6 fps

1) 10.5 fps

2) 44.4 fps

2) 20.8 fps

3) 45.5 fps

3) 10.5 fps

GVHD: TS. Đàm Quang Hồng Hải

SVTH: Hoàng Trọng Quốc Bảo
Trần Hữu Đức



2.2.4. Ví dụ về cách sử dụng Andengine:
2.3.4.1. Nhân vật (sprite):
a. Tạo nhân vật:
Sprite yourSprite =new Sprite(x, y, textureRegion, vertexBufferObjectManager);
-

x, y là toạ độ xuất hiện.

textureRegion: miền hình ảnh của nhân vật.
vertexBufferObjectManager: tùy chọn vùng nhớ đệm của nhân vật.

b. Chèn nhân vật:
Để chèn nhân vật vào một vật thể khác, ví như cảnh quay, thì có thể gọi phương
thức attachChild như sau:
anyEntity.attachChild(yourSprite);
2.3.4.2. Bộ điều chỉnh:
Đây là phần hỗ trợ tạo hiệu ứng cho các vật thể như xoay, co giãn, hiệu ứng alpha
(độ hiển thị từ rõ cho đến mờ hoặc trong suốt) và rất nhiều hiệu ứng khác.
a. Đăng ký bộ điều chỉnh:

Đăng ký một bộ điều chỉnh hiệu ứng xoay với các tham số sau:
yourEntity.registerEntityModifier(new RotationModifier(3, 0, 360));
-

Thời gian thực hiện hiệu ứng là 3s.
Bắt đầu xoay từ 0 độ.
Kết thúc xoay ở 360 độ (tương đương xoay 1 vòng).

b. Bộ điều chỉnh lặp vô hạn:

Cũng với ví dụ trên ta đăng ký bộ điều chỉnh lặp vô hạn như sau:
yourEntity.registerEntityModifier(new LoopEntityModifier(yourModifier))));
c. Lắng nghe sự kiện của bộ điều chỉnh:


×